internal static bool TryParse(Node parent, Queue <Word> remainingWords, out ExtendDirective directive) { directive = null; if (remainingWords.Peek().Text != "@extend") { return(false); } directive = new ExtendDirective(parent); directive.Name = remainingWords.Dequeue().Text.Substring(1); Expression expression; if (!Expression.TryParse(directive, remainingWords, out expression)) { throw new Exception("errp?"); } // remove ';' if (remainingWords.Peek().Text == ";") { remainingWords.Dequeue(); } directive.Value = expression; return(true); }
internal static bool TryParse(Node parent, Queue<Word> remainingWords, out ExtendDirective directive) { directive = null; if (remainingWords.Peek().Text != "@extend") { return false; } directive = new ExtendDirective(parent); directive.Name = remainingWords.Dequeue().Text.Substring(1); Expression expression; if (!Expression.TryParse(directive, remainingWords, out expression)) { throw new Exception("errp?"); } // remove ';' if (remainingWords.Peek().Text == ";") { remainingWords.Dequeue(); } directive.Value = expression; return true; }
public override Node Clone(Node newParent) { var newDirective = new ExtendDirective(newParent); newDirective.Name = Name; newDirective.Value = Value.Clone(newDirective); return newDirective; }
public override Node Clone(Node newParent) { var newDirective = new ExtendDirective(newParent); newDirective.Name = Name; newDirective.Value = Value.Clone(newDirective); return(newDirective); }
internal static bool TryParse(Node parent, Queue <Word> remainingWords, out Block block) { if (remainingWords.Peek().Text != "{") { block = null; return(false); } remainingWords.Dequeue(); block = new Block(parent); while (remainingWords.Peek().Text != "}") { IncludeDirective includeDirective; if (IncludeDirective.TryParse(block, remainingWords, out includeDirective)) { block.Children.Add(includeDirective); continue; } ExtendDirective excludeDirective; if (ExtendDirective.TryParse(block, remainingWords, out excludeDirective)) { block.Children.Add(excludeDirective); continue; } PropertyAssignment property; if (PropertyAssignment.TryParse(block, remainingWords, out property)) { block.Children.Add(property); continue; } Selector selector; if (Selector.TryParse(block, remainingWords, out selector)) { block.Children.Add(selector); continue; } } remainingWords.Dequeue(); return(true); }