private void ParseObject(Queue <Token> tokens, XjsltObject o) { XjsltProperty prop = null; while (tokens.Count > 0) { var token = tokens.Dequeue(); switch (token.Kind) { case KindToken.Identifier: prop = new XjsltProperty() { Name = token.Text }; o.AddProperty(prop); ParseProperty(tokens, prop); break; case KindToken.Left: break; case KindToken.Pipe: break; case KindToken.Right: break; default: break; } } }
public object VisitObject(XjsltObject node) { using (var ctx = this.NewContext()) { var v1 = ctx.Current.Source.AddVar(typeof(JObject), null, _ctorJObject.CreateObject()); ctx.Current.RootTarget = v1; foreach (var item in node.Properties) { var prop = (Expression)item.Accept(this); ctx.Current.Source.Add(v1.Call(_AddJObject, prop)); } return(v1); } }
private void ParseFunction(Queue <Token> tokens, XjPath propRoot) { XjsltObject o = null; string type = string.Empty; while (tokens.Count > 0) { var token = tokens.Dequeue(); switch (token.Kind) { case KindToken.Identifier: type = token.Text; o = new XjsltObject() { }; break; case KindToken.Left: if (o == null) { throw new ParsingException(token.Text, token.Index); } ParseObject(tokens, o); propRoot.Child = new XjsltType(o) { Type = type }; break; case KindToken.Pipe: throw new ParsingException(token.Text, token.Index); case KindToken.Right: return; default: break; } } }
private XjsltJson ReadObject(JObject n) { string name = string.Empty; var result = new XjsltObject() { Name = name }; foreach (var item in n.Properties()) { result.Append(Read(item) as XjsltProperty); } if (result.Source != null) { if (result.Source is XjsltConstant c) { if (c.Value is string v) { var service = this._configuration.Services.GetService(v); if (service != null) { return new XjsltType(result) { ServiceProvider = service } } ; else { throw new MissingServiceException(v); } } } } return(result); }
public object VisitObject(XjsltObject node) { throw new NotImplementedException(); }