Handlebars-Net/Handlebars.Net

Should I be able to use a forward slash in an expression?

foconnor-DS opened this issue · 2 comments

I'm using handlebars to help write a generic data import tool. One of the test fields from the data file is:

Mailing State/Province

I'd like to refer to it, in an expression. I've tried:
{{[Mailing State/Province]}}
{{{[Mailing State/Province]}}}
Both fail to find the string key in the Dictionary<string,dynamic> I pass in.

Should this be valid syntax? I thought brackets were supposed to escape the off limits literals

Whitespace ! " # % & ' ( ) * + , . / ; < = > @ [ \ ] ^ ` { | } ~

The bracket escape seems to work for the other no-go literals i've run into.

Thanks.

Hello @foconnor-DS
You are right, [] should escape the literals and is treated as a single string.
If you can provide a test case it would be easier to find where the problem is.

Okay, I ran out of time this morning, but near as I can tell, all string literal notation is boken:

https://gist.github.com/foconnor-DS/7c991dff845e6ac1973e8534bb87c6b4

I wrote the code based on https://handlebarsjs.com/guide/expressions.html#literal-segments.

This test against the following notations:

  • [foo bar]
  • "foo bar"
  • 'foo bar'
  • [foo!bar]
  • "foo!bar"
  • 'foo!bar'
  • [foo"bar]
  • 'foo"bar'
  • [foo#bar]
  • "foo#bar"
  • 'foo#bar'
  • [foo%bar]
  • "foo%bar"
  • 'foo%bar'
  • [foo&bar]
  • "foo&bar"
  • 'foo&bar'
  • [foo'bar]
  • "foo'bar"
  • [foo(bar]
  • "foo(bar"
  • 'foo(bar'
  • [foo)bar]
  • "foo)bar"
  • 'foo)bar'
  • [foo*bar]
  • "foo*bar"
  • 'foo*bar'
  • [foo+bar]
  • "foo+bar"
  • 'foo+bar'
  • [foo,bar]
  • "foo,bar"
  • 'foo,bar'
  • [foo.bar]
  • "foo.bar"
  • 'foo.bar'
  • [foo/bar]
  • "foo/bar"
  • 'foo/bar'
  • [foo;bar]
  • "foo;bar"
  • 'foo;bar'
  • [foo<bar]
  • "foo<bar"
  • 'foo<bar'
  • [foo=bar]
  • "foo=bar"
  • 'foo=bar'
  • [foo>bar]
  • "foo>bar"
  • 'foo>bar'
  • [foo@bar]
  • "foo@bar"
  • 'foo@bar'
  • "foo[bar"
  • 'foo[bar'
  • [foo\bar]
  • "foo\bar"
  • 'foo\bar'
  • "foo]bar"
  • 'foo]bar'
  • [foo^bar]
  • "foo^bar"
  • 'foo^bar'
  • [foo`bar]
  • "foo`bar"
  • 'foo`bar'
  • [foo{bar]
  • "foo{bar"
  • 'foo{bar'
  • [foo|bar]
  • "foo|bar"
  • 'foo|bar'
  • [foo}bar]
  • "foo}bar"
  • 'foo}bar'
  • [foo~bar]
  • "foo~bar"
  • 'foo~bar'
  • [true true]
  • [true!true]
  • [true"true]
  • [true#true]
  • [true%true]
  • [true&true]
  • [true'true]
  • [true(true]
  • [true)true]
  • [true*true]
  • [true+true]
  • [true,true]
  • [true.true]
  • [true/true]
  • [true;true]
  • [true<true]
  • [true=true]
  • [true>true]
  • [true@true]
  • [true\true]
  • [true^true]
  • [true`true]
  • [true{true]
  • [true|true]
  • [true}true]
  • [true~true]
  • "true true"
  • "true!true"
  • "true#true"
  • "true%true"
  • "true&true"
  • "true'true"
  • "true(true"
  • "true)true"
  • "true*true"
  • "true+true"
  • "true,true"
  • "true.true"
  • "true/true"
  • "true;true"
  • "true<true"
  • "true=true"
  • "true>true"
  • "true@true"
  • "true[true"
  • "true\true"
  • "true]true"
  • "true^true"
  • "true`true"
  • "true{true"
  • "true|true"
  • "true}true"
  • "true~true"
  • 'true true'
  • 'true!true'
  • 'true"true'
  • 'true#true'
  • 'true%true'
  • 'true&true'
  • 'true(true'
  • 'true)true'
  • 'true*true'
  • 'true+true'
  • 'true,true'
  • 'true.true'
  • 'true/true'
  • 'true;true'
  • 'true<true'
  • 'true=true'
  • 'true>true'
  • 'true@true'
  • 'true[true'
  • 'true\true'
  • 'true]true'
  • 'true^true'
  • 'true`true'
  • 'true{true'
  • 'true|true'
  • 'true}true'
  • 'true~true'
  • [false false]
  • [false!false]
  • [false"false]
  • [false#false]
  • [false%false]
  • [false&false]
  • [false'false]
  • [false(false]
  • [false)false]
  • [false*false]
  • [false+false]
  • [false,false]
  • [false.false]
  • [false/false]
  • [false;false]
  • [false<false]
  • [false=false]
  • [false>false]
  • [false@false]
  • [false\false]
  • [false^false]
  • [false`false]
  • [false{false]
  • [false|false]
  • [false}false]
  • [false~false]
  • "false false"
  • "false!false"
  • "false#false"
  • "false%false"
  • "false&false"
  • "false'false"
  • "false(false"
  • "false)false"
  • "false*false"
  • "false+false"
  • "false,false"
  • "false.false"
  • "false/false"
  • "false;false"
  • "false<false"
  • "false=false"
  • "false>false"
  • "false@false"
  • "false[false"
  • "false\false"
  • "false]false"
  • "false^false"
  • "false`false"
  • "false{false"
  • "false|false"
  • "false}false"
  • "false~false"
  • 'false false'
  • 'false!false'
  • 'false"false'
  • 'false#false'
  • 'false%false'
  • 'false&false'
  • 'false(false'
  • 'false)false'
  • 'false*false'
  • 'false+false'
  • 'false,false'
  • 'false.false'
  • 'false/false'
  • 'false;false'
  • 'false<false'
  • 'false=false'
  • 'false>false'
  • 'false@false'
  • 'false[false'
  • 'false\false'
  • 'false]false'
  • 'false^false'
  • 'false`false'
  • 'false{false'
  • 'false|false'
  • 'false}false'
  • 'false~false'
  • [null null]
  • [null!null]
  • [null"null]
  • [null#null]
  • [null%null]
  • [null&null]
  • [null'null]
  • [null(null]
  • [null)null]
  • [null*null]
  • [null+null]
  • [null,null]
  • [null.null]
  • [null/null]
  • [null;null]
  • [null<null]
  • [null=null]
  • [null>null]
  • [null@null]
  • [null\null]
  • [null^null]
  • [null`null]
  • [null{null]
  • [null|null]
  • [null}null]
  • [null~null]
  • "null null"
  • "null!null"
  • "null#null"
  • "null%null"
  • "null&null"
  • "null'null"
  • "null(null"
  • "null)null"
  • "null*null"
  • "null+null"
  • "null,null"
  • "null.null"
  • "null/null"
  • "null;null"
  • "null<null"
  • "null=null"
  • "null>null"
  • "null@null"
  • "null[null"
  • "null\null"
  • "null]null"
  • "null^null"
  • "null`null"
  • "null{null"
  • "null|null"
  • "null}null"
  • "null~null"
  • 'null null'
  • 'null!null'
  • 'null"null'
  • 'null#null'
  • 'null%null'
  • 'null&null'
  • 'null(null'
  • 'null)null'
  • 'null*null'
  • 'null+null'
  • 'null,null'
  • 'null.null'
  • 'null/null'
  • 'null;null'
  • 'null<null'
  • 'null=null'
  • 'null>null'
  • 'null@null'
  • 'null[null'
  • 'null\null'
  • 'null]null'
  • 'null^null'
  • 'null`null'
  • 'null{null'
  • 'null|null'
  • 'null}null'
  • 'null~null'
  • [undefined undefined]
  • [undefined!undefined]
  • [undefined"undefined]
  • [undefined#undefined]
  • [undefined%undefined]
  • [undefined&undefined]
  • [undefined'undefined]
  • [undefined(undefined]
  • [undefined)undefined]
  • [undefined*undefined]
  • [undefined+undefined]
  • [undefined,undefined]
  • [undefined.undefined]
  • [undefined/undefined]
  • [undefined;undefined]
  • [undefined<undefined]
  • [undefined=undefined]
  • [undefined>undefined]
  • [undefined@undefined]
  • [undefined\undefined]
  • [undefined^undefined]
  • [undefined`undefined]
  • [undefined{undefined]
  • [undefined|undefined]
  • [undefined}undefined]
  • [undefined~undefined]
  • "undefined undefined"
  • "undefined!undefined"
  • "undefined#undefined"
  • "undefined%undefined"
  • "undefined&undefined"
  • "undefined'undefined"
  • "undefined(undefined"
  • "undefined)undefined"
  • "undefined*undefined"
  • "undefined+undefined"
  • "undefined,undefined"
  • "undefined.undefined"
  • "undefined/undefined"
  • "undefined;undefined"
  • "undefined<undefined"
  • "undefined=undefined"
  • "undefined>undefined"
  • "undefined@undefined"
  • "undefined[undefined"
  • "undefined\undefined"
  • "undefined]undefined"
  • "undefined^undefined"
  • "undefined`undefined"
  • "undefined{undefined"
  • "undefined|undefined"
  • "undefined}undefined"
  • "undefined~undefined"
  • 'undefined undefined'
  • 'undefined!undefined'
  • 'undefined"undefined'
  • 'undefined#undefined'
  • 'undefined%undefined'
  • 'undefined&undefined'
  • 'undefined(undefined'
  • 'undefined)undefined'
  • 'undefined*undefined'
  • 'undefined+undefined'
  • 'undefined,undefined'
  • 'undefined.undefined'
  • 'undefined/undefined'
  • 'undefined;undefined'
  • 'undefined<undefined'
  • 'undefined=undefined'
  • 'undefined>undefined'
  • 'undefined@undefined'
  • 'undefined[undefined'
  • 'undefined\undefined'
  • 'undefined]undefined'
  • 'undefined^undefined'
  • 'undefined`undefined'
  • 'undefined{undefined'
  • 'undefined|undefined'
  • 'undefined}undefined'
  • 'undefined~undefined'