public void VisitNode(JSVerbatimLiteral verbatim) { if (verbatim.Variables != null) { var variables = new Dictionary <string, JSVariable>(); foreach (var kvp in verbatim.Variables) { if (kvp.Value == null) { continue; } foreach (var v in kvp.Value.SelfAndChildrenRecursive.OfType <JSVariable>()) { if (!variables.ContainsKey(v.Name)) { variables[v.Name] = v; } } } foreach (var variable in variables.Values) { ModifiedVariable(variable); State.EscapingVariables.Add(variable.Name); } } VisitChildren(verbatim); }
public void VisitNode(JSVerbatimLiteral verbatim) { bool parens = (ParentNode is JSBinaryOperatorExpression) || (ParentNode is JSUnaryOperatorExpression); var regex = new Regex(@"(\$(?'name'(typeof\(this\))|([a-zA-Z_]([a-zA-Z0-9_]*)))|(?'text'[^\$]*)|)", RegexOptions.ExplicitCapture); if (parens) { Output.LPar(); } bool isFirst = true; foreach (var line in verbatim.Expression.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)) { if (String.IsNullOrWhiteSpace(line)) { continue; } if (!isFirst) { Output.NewLine(); } var matches = regex.Matches(line); foreach (Match m in matches) { if (m.Groups["text"].Success) { Output.WriteRaw(m.Groups["text"].Value); } else if (m.Groups["name"].Success) { var key = m.Groups["name"].Value; if (verbatim.Variables.ContainsKey(key)) { Visit(verbatim.Variables[key]); } else { Output.WriteRaw("null"); } } } isFirst = false; } if (parens) { Output.RPar(); } }