diff --git a/js/test_cases/helpers_gt/README.md b/js/test_cases/helpers_gt/README.md index 29c57b3..58a764a 100644 --- a/js/test_cases/helpers_gt/README.md +++ b/js/test_cases/helpers_gt/README.md @@ -1,7 +1,19 @@ Based on my tests, it appears dust is sorting based on ascii-table values. This also appears to extend to unicode codepoints based on a symbols test. +Greater than follows the same pattern for not rendering when key is omitted or null. + + +greater than +------------ + All comparisons between non-matching types (for example, int vs string) appear to render the else block. -Comparisons between non-scalar types (like arrays) appears to render the else block. +Comparisons between non-scalar types (like arrays) appears to render the else block -Greater than follows the same pattern for not rendering when key is omitted or null. + +greater than or equals to +------------------------- + +All comparisons between non-matching types (for example, int vs string) appear to render the main block. + +Comparisons between non-scalar types (like arrays) appears to render the main block diff --git a/js/test_cases/helpers_gte/input1.json b/js/test_cases/helpers_gte/input1.json new file mode 100644 index 0000000..bfbbd94 --- /dev/null +++ b/js/test_cases/helpers_gte/input1.json @@ -0,0 +1,60 @@ +{ + "str": "master", + "int": 7, + "alpha": 21, + "beta": "21", + "null": null, + "true_value": true, + "false_value": false, + "array_lower": [ + 3, + 5, + 7 + ], + "copy_array_lower": [ + 3, + 5, + 7 + ], + "array_higher": [ + 8, + 9 + ], + "some_obj": { + "name": "cat" + }, + "copy_some_obj": { + "name": "cat" + }, + "other_obj": { + "name": "dog" + }, + "array_of_some_obj": [ + { + "name": "cat" + }, + { + "name": "cat" + } + ], + "copy_array_of_some_obj": [ + { + "name": "cat" + }, + { + "name": "cat" + } + ], + "array_of_other_obj": [ + { + "name": "dog" + }, + { + "name": "dog" + } + ], + "array_of_strings": [ + "cat", + "dog" + ] +} diff --git a/js/test_cases/helpers_gte/main.dust b/js/test_cases/helpers_gte/main.dust new file mode 100644 index 0000000..a3eb601 --- /dev/null +++ b/js/test_cases/helpers_gte/main.dust @@ -0,0 +1,35 @@ +Testing helpers:{~n} +str is {str}{~n} +int is {int}{~n} +alpha is {alpha}{~n} +beta is {beta}{~n} +{@gte key=str value="master"}str is greater than or equal to "master"{:else}str is less than "master"{/gte}{~n} +{@gte key=str value="7"}str is greater than or equal to "7"{:else}str is less than "7"{/gte}{~n} +{@gte key=int value="7"}int is greater than or equal to "7"{:else}int is less than "7"{/gte}{~n} +{@gte key=int value=7}int is greater than or equal to 7{:else}int is less than 7{/gte}{~n} +{@gte key=int value=6}int is greater than or equal to 6{:else}int is less than 6{/gte}{~n} +{@gte key=alpha value=beta}alpha is greater than or equal to beta{:else}alpha is less than beta{/gte}{~n} +{@gte value=beta}missing key is true{:else}missing key is false{/gte}{~n} +{@gte value=gamma}missing key and non-existent value is true{:else}missing key and non-existent value is false{/gte}{~n} +{@gte key=alpha}missing value is true{:else}missing value is false{/gte}{~n} +{@gte key=gamma}missing value and non-existent key is true{:else}missing value and non-existent key is false{/gte}{~n} +{@gte key="master" value="master"}"master" is greater than or equal to "master"{:else}"master" is less than "master"{/gte}{~n} +{@gte key=null}null is greater than or equal to a missing value{:else}null is less than a missing value{/gte}{~n} +{@gte key=null value=gamma}null is greater than or equal to a non-existent value{:else}null is less than a non-existent value{/gte}{~n} +{@gte}no parameters is true{:else}no parameters is false{/gte}{~n} +{@gte key="a" value="]"}"a" is greater than or equal to "]"{:else}"a" is less than "]"{/gte}{~n} +{@gte key="a" value="A"}"a" is greater than or equal to "A"{:else}"a" is less than "A"{/gte}{~n} +{@gte key="a" value="}"}"a" is greater than or equal to "}"{:else}"a" is less than "}"{/gte}{~n} +{@gte key="☃" value="☄"}"☃" is greater than or equal to "☄"{:else}"☃" is less than "☄"{/gte}{~n} +{@gte key=true_value value=false_value}true is greater than or equal to false{:else}true is less than false{/gte}{~n} +{@gte key=array_lower value=array_higher}[3,5,7] is greater than or equal to [8,9]{:else}[3,5,7] is less than [8,9]{/gte}{~n} +{@gte key=array_higher value=array_lower}[8,9] is greater than or equal to [3,5,7]{:else}[8,9] is less than [3,5,7]{/gte}{~n} +{! non-scalar and copied value tests !} +{@gte key=array_lower value=array_lower}array_lower is greater than or equal to array_lower{:else}array_lower is less than array_lower{/gte}{~n} +{@gte key=array_lower value=copy_array_lower}array_lower is greater than or equal to copy_array_lower{:else}array_lower is less than copy_array_lower{/gte}{~n} +{@gte key=some_obj value=some_obj}some_obj is greater than or equal to some_obj{:else}some_obj is less than some_obj{/gte}{~n} +{@gte key=some_obj value=copy_some_obj}some_obj is greater than or equal to copy_some_obj{:else}some_obj is less than copy_some_obj{/gte}{~n} +{@gte key=some_obj value=other_obj}some_obj is greater than or equal to other_obj{:else}some_obj is less than other_obj{/gte}{~n} +{@gte key=array_of_some_obj value=array_of_some_obj}array_of_some_obj is greater than or equal to array_of_some_obj{:else}array_of_some_obj is less than array_of_some_obj{/gte}{~n} +{@gte key=array_of_some_obj value=copy_array_of_some_obj}array_of_some_obj is greater than or equal to copy_array_of_some_obj{:else}array_of_some_obj is less than copy_array_of_some_obj{/gte}{~n} +{@gte key=array_of_some_obj value=array_of_other_obj}array_of_some_obj is greater than or equal to array_of_other_obj{:else}array_of_some_obj is less than array_of_other_obj{/gte}{~n} diff --git a/src/renderer/renderer.rs b/src/renderer/renderer.rs index aeee5cb..7ecfc14 100644 --- a/src/renderer/renderer.rs +++ b/src/renderer/renderer.rs @@ -334,6 +334,13 @@ impl<'a> DustRenderer<'a> { } } } + DustTag::DTHelperGreaterThan(parameterized_block) => { + let param_map: HashMap<&str, &RValue<'a>> = parameterized_block + .params + .iter() + .map(|pair: &KVPair<'a>| (pair.key, &pair.value)) + .collect(); + } _ => (), // TODO: Implement the rest } Ok("".to_owned())