File tree Expand file tree Collapse file tree 3 files changed +31
-5
lines changed Expand file tree Collapse file tree 3 files changed +31
-5
lines changed Original file line number Diff line number Diff line change
1
+ name : Josh
2
+ value : 1,000,000
3
+ taxed_value : 800,000
4
+ in_ca : Yes
Original file line number Diff line number Diff line change @@ -34,13 +34,26 @@ YAMLContext: class extends Context {
34
34
35
35
nodeToValue : static func (node : DocumentNode ) -> Value {
36
36
match node class {
37
- case ScalarNode => StringValue new (( node as ScalarNode ) value )
37
+ case ScalarNode => scalarToValue ( node as ScalarNode )
38
38
case SequenceNode => sequenceToListValue (node as SequenceNode )
39
39
case MappingNode => mappingToHashValue (node as MappingNode )
40
40
case => Exception new ("Unknown node type!" ) throw (); null
41
41
}
42
42
}
43
43
44
+ scalarToValue : static func (scalar : ScalarNode ) -> Value {
45
+ normalizedValue := scalar value trim () toLower ()
46
+
47
+ // TODO: boolean detection should be moved into ooc-yaml (datatype detection)
48
+ match normalizedValue {
49
+ case "true" => BoolValue new (true )
50
+ case "yes" => BoolValue new (true )
51
+ case "false" => BoolValue new (false )
52
+ case "no" => BoolValue new (false )
53
+ case => StringValue new (scalar value)
54
+ }
55
+ }
56
+
44
57
sequenceToListValue : static func (seq : SequenceNode ) -> ListValue {
45
58
list := ListValue new ()
46
59
Original file line number Diff line number Diff line change @@ -3,13 +3,22 @@ import structs/ArrayList
3
3
import mustang/[Template, YAMLContext]
4
4
5
5
main : func (args : ArrayList < String > ) -> Int {
6
- if (args size () < 3 ) {
7
- "Usage: mustang <TEMPLATE> < YAML> " println ()
6
+ if (args size () < 2 ) {
7
+ "Usage: mustang <TEMPLATE> [ YAML] " println ()
8
8
return 1
9
9
}
10
10
11
- context := YAMLContext loadFromFile (args[2 ])
12
- template := Template loadFromFile (args[1 ])
11
+ templateFile := args[1 ]
12
+ yamlFile : String
13
+ if (args size () ! = 3 ) {
14
+ yamlFile = "%s.yaml" format (templateFile substring (0 , templateFile lastIndexOf ('.' )))
15
+ }
16
+ else {
17
+ yamlFile = args[2 ]
18
+ }
19
+
20
+ context := YAMLContext loadFromFile (yamlFile)
21
+ template := Template loadFromFile (templateFile)
13
22
template render (context) println ()
14
23
15
24
return 0
You can’t perform that action at this time.
0 commit comments