// private static string HtmlEncodeString(string context) // { // return HttpUtility.HtmlEncode(context); // } private static Action <StringBuilder, ContextObject> HandleSingleValue(TokenPair token, ParsingOptions options, InferredTemplateModel scope) { if (scope != null) { scope = scope.GetInferredModelForPath(token.Value, InferredTemplateModel.UsedAs.Scalar); } return((builder, context) => { if (context != null) { //try to locate the value in the context, if it exists, append it. var c = context.GetContextForPath(token.Value); if (c.Value != null) { // if (token.Type == TokenType.EscapedSingleValue && !options.DisableContentSafety) // { // builder.Append (HtmlEncodeString (c.ToString ())); // } // else // { builder.Append(c); // } } } }); }
private static Action <StringBuilder, ContextObject> HandleCollectionOpen(TokenPair token, Queue <TokenPair> remainder, ParsingOptions options, InferredTemplateModel scope) { if (scope != null) { scope = scope.GetInferredModelForPath(token.Value, InferredTemplateModel.UsedAs.Collection); } var innerTemplate = Parse(remainder, options, scope); return((builder, context) => { //if we're in the same scope, just negating, then we want to use the same object var c = context.GetContextForPath(token.Value); //"falsey" values by Javascript standards... if (!c.Exists()) { return; } IEnumerable cVal = null; if (c.Value is IEnumerable && !(c.Value is String) && !(c.Value is IDictionary <string, object>)) { cVal = c.Value as IEnumerable; } else { //Ok, this is a scalar value or an Object. So lets box it into an IEnumerable cVal = new ArrayList() { c.Value }; } var index = 0; foreach (object i in cVal) { var innerContext = new ContextObject() { Value = i, Key = String.Format("[{0}]", index), Parent = c }; innerTemplate(builder, innerContext); index++; } }); }
private static Action <StringBuilder, ContextObject> HandleElementOpen(TokenPair token, Queue <TokenPair> remainder, ParsingOptions options, InferredTemplateModel scope) { if (scope != null) { scope = scope.GetInferredModelForPath(token.Value, InferredTemplateModel.UsedAs.ConditionalValue); } var innerTemplate = Parse(remainder, options, scope); return((builder, context) => { var c = context.GetContextForPath(token.Value); //"falsey" values by Javascript standards... if (c.Exists()) { innerTemplate(builder, c); } }); }
private static Action <StringBuilder, ContextObject> HandleCollectionOpen(TokenPair token, Queue <TokenPair> remainder, ParsingOptions options, InferredTemplateModel scope) { if (scope != null) { scope = scope.GetInferredModelForPath(token.Value, InferredTemplateModel.UsedAs.Collection); } var innerTemplate = Parse(remainder, options, scope); return((builder, context) => { //if we're in the same scope, just negating, then we want to use the same object var c = context.GetContextForPath(token.Value); //"falsey" values by Javascript standards... if (!c.Exists()) { return; } if (c.Value is IEnumerable && !(c.Value is String) && !(c.Value is IDictionary <string, object>)) { var index = 0; foreach (object i in c.Value as IEnumerable) { var innerContext = new ContextObject() { Value = i, Key = String.Format("[{0}]", index), Parent = c }; innerTemplate(builder, innerContext); index++; } } else { throw new IndexedParseException("'{0}' is used like an array by the template, but is a scalar value or object in your model.", token.Value); } }); }
private static Action<StringBuilder, ContextObject> HandleCollectionOpen(TokenPair token, Queue<TokenPair> remainder, ParsingOptions options, InferredTemplateModel scope) { if (scope != null) { scope = scope.GetInferredModelForPath(token.Value, InferredTemplateModel.UsedAs.Collection); } var innerTemplate = Parse(remainder, options, scope); return (builder, context) => { //if we're in the same scope, just negating, then we want to use the same object var c = context.GetContextForPath(token.Value); //"falsey" values by Javascript standards... if (!c.Exists()) return; if (c.Value is IEnumerable && !(c.Value is String) && !(c.Value is IDictionary<string, object>)) { var index = 0; foreach (object i in c.Value as IEnumerable) { var innerContext = new ContextObject() { Value = i, Key = String.Format("[{0}]", index), Parent = c }; innerTemplate(builder, innerContext); index++; } } else { throw new IndexedParseException("'{0}' is used like an array by the template, but is a scalar value or object in your model.", token.Value); } }; }
private static Action<StringBuilder, ContextObject> HandleSingleValue(TokenPair token, ParsingOptions options, InferredTemplateModel scope ) { if (scope != null) { scope = scope.GetInferredModelForPath(token.Value, InferredTemplateModel.UsedAs.Scalar); } return (builder, context) => { if (context != null) { //try to locate the value in the context, if it exists, append it. var c = context.GetContextForPath(token.Value); if (c.Value != null) { if (token.Type == TokenType.EscapedSingleValue && !options.DisableContentSafety) { builder.Append(HtmlEncodeString(c.ToString())); } else { builder.Append(c); } } } }; }
private static Action<StringBuilder, ContextObject> HandleInvertedElementOpen(TokenPair token, Queue<TokenPair> remainder, ParsingOptions options, InferredTemplateModel scope) { if (scope != null) { scope = scope.GetInferredModelForPath(token.Value, InferredTemplateModel.UsedAs.ConditionalValue); } var innerTemplate = Parse(remainder, options, scope); return (builder, context) => { var c = context.GetContextForPath(token.Value); //"falsey" values by Javascript standards... if (!c.Exists()) { innerTemplate(builder, c); } }; }