public override bool Render(RenderContext dest) { if (Values.Count == 0) { dest.Append("{}"); return(true); } dest.Append('{'); dest.Indent(); for (var i = 0; i < Values.Count; i++) { if (i > 0) { dest.Append(','); } dest.StartLine(); // Key - if key is a valid identifier, don't quote it var kp = Values[i]; if (kp.Key.GetType() == typeof(ast.ExprNodeIdentifier)) { dest.Append(dest.Members.GetObfuscatedSymbol(((ast.ExprNodeIdentifier)kp.Key).Name)); } else if (kp.Key.GetType() == typeof(String) && Tokenizer.IsIdentifier((string)kp.Key) && !Tokenizer.IsKeyword((string)kp.Key)) { dest.Append((string)kp.Key); } else { ExprNodeLiteral.RenderValue(dest, kp.Key); } // Value dest.Append(':'); kp.Value.Render(dest); } dest.Unindent(); dest.StartLine(); dest.Append('}'); return(true); }
public override bool Render(RenderContext dest) { if (Lhs != null) { WrapAndRender(dest, Lhs, false); dest.Append("."); dest.Append(dest.Members.GetObfuscatedSymbol(Name)); } else { // Find the symbol and check if it's a constant var s = dest.CurrentScope.FindSymbol(Name); if (s != null && s.ConstValue != null) { ExprNodeLiteral.RenderValue(dest, s.ConstValue); } else { dest.Append(dest.Symbols.GetObfuscatedSymbol(Name)); } } return(true); }