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 }