1 /// dYAML wrapper
2 module sily.dyaml;
3 
4 import dyaml;
5 
6 /**
7 Checks if node is NodeType.
8 
9 Usage:
10 ---
11 node.isType!NodeType.mapping;
12 ---
13 
14 Params:
15     node = Node to check
16 */
17 public bool isType(NodeType T)(Node node) {
18     if (node.type == T) {
19         return true;
20     }
21     return false;
22 }
23 
24 /**
25 Checks if node has key of NodeType.
26 
27 Usage:
28 ---
29 node.hasKeyType!(NodeType.mapping)("keymap");
30 ---
31 
32 Params:
33     node = Node to get key from
34     key = Key name
35 */
36 public bool hasKeyType(NodeType T)(Node node, string key) {
37     if (node.containsKey(key)) {
38         if (node[key].type == T) {
39             return true;
40         }
41     }
42     return false;
43 }
44 
45 /**
46 Checks if node has key of type.
47 
48 Usage:
49 ---
50 node.hasKeyAs!bool("useColor");
51 ---
52 
53 Params:
54     node = Node to get key from
55     key = Key name
56 */
57 public bool hasKeyAs(T)(Node node, string key) {
58     if (node.containsKey(key)) {
59         if (node[key].convertsTo!T) {
60             return true;
61         }
62     }
63     return false;
64 }
65 
66 /**
67 Puts value from node key if key exists.
68 
69 Usage:
70 ---
71 node.getKey!bool(&useColor, "useColor");
72 ---
73 
74 Params:
75     node = Node to get key from
76     variable = Pointer to variable
77     field = Key name
78 */
79 public void getKey(T)(Node node, T* variable, string field) {
80     if (node.hasKeyAs!T(field)) {
81         *variable = node[field].as!T;
82     }
83 }