public TemplateElement GetElement(TemplateFragment fragment) { if (fragment == null) { throw new ArgumentNullException("fragment"); } TemplateFragmentPlainText text = fragment as TemplateFragmentPlainText; if (text != null) { return(new TemplateElementText(text.Data)); } TemplateElement ret = null; TemplateFragmentMacro macro = fragment as TemplateFragmentMacro; if (macro != null) { ret = ProcessMacro(macro); } if (ret == null) { throw new InvalidOperationException( String.Format("Failed to generate a template element from fragment {0} at {1}:{2},{3}", fragment, fragment.InFile, fragment.LineStart, fragment.ColumnStart) ); } return(ret); }
void OnFragmentParsed(TemplateFragment fragment) { EventHandler <FragmentParsedEventArguments> eh = FragmentParsed; if (eh != null) { eh(this, new FragmentParsedEventArguments(fragment)); } }
public T CastFragment <T> () where T : TemplateFragment { TemplateFragment fragment = Fragment; Type t = fragment.GetType(); if (t != typeof(T)) { throw new InvalidOperationException(String.Format("Expected fragment of type '{0}', found type '{1}' at {2}:{3},{4}", typeof(T).FullName, t.FullName, fragment.LineStart, fragment.ColumnStart)); } return(Fragment as T); }
public override void Append(char ch) { List <TemplateFragment> fragments = Fragments; int count = fragments.Count; TemplateFragment fragment = null; if (count != 0) { fragment = fragments [count - 1]; } if (!(fragment is TemplateFragmentPlainText)) { fragment = new TemplateFragmentPlainText(InFile); fragments.Add(fragment); } fragment.Append(ch); }
CurrentState ZapState(bool triggerOnFragmentParsed) { CurrentState top = stateStack.Peek(); if (top.State == ParsingState.Start) { return(top); } top = stateStack.Pop(); TemplateFragment fragment = top.Fragment; fragment.LineEnd = currentLine; fragment.ColumnEnd = currentColumn; if (triggerOnFragmentParsed) { OnFragmentParsed(fragment); } return(top); }
public CurrentState(ParsingState state, TemplateFragment fragment) : this(state) { this.Fragment = fragment; }
public FragmentParsedEventArguments(TemplateFragment fragment) { this.Fragment = fragment; }
public FragmentParsedEventArguments (TemplateFragment fragment) { this.Fragment = fragment; }