Class: Flow
- Inherits:
-
Object
- Object
- Flow
- Defined in:
- lib/args.rb
Instance Attribute Summary collapse
-
#root ⇒ Object
readonly
Returns the value of attribute root.
Instance Method Summary collapse
- #add(arg) ⇒ Object
- #find(elt) ⇒ Object
- #iadd(arg, node) ⇒ Object
- #iargs(node, args) ⇒ Object
- #ifind(elt, node, args) ⇒ Object
-
#initialize(root) ⇒ Flow
constructor
A new instance of Flow.
-
#iset(name, value, node) ⇒ Object
return true for success false for unable to find arg name String for invalid arg.
- #print_flow(node) ⇒ Object
- #set(name, value) ⇒ Object
- #to_s ⇒ Object
Constructor Details
Instance Attribute Details
#root ⇒ Object (readonly)
Returns the value of attribute root.
89 90 91 |
# File 'lib/args.rb', line 89 def root @root end |
Instance Method Details
#add(arg) ⇒ Object
195 196 197 198 199 200 201 |
# File 'lib/args.rb', line 195 def add(arg) if @root.nil? @root = arg else iadd(arg, @root) end end |
#find(elt) ⇒ Object
139 140 141 |
# File 'lib/args.rb', line 139 def find(elt) return ifind(elt, @root, {}) end |
#iadd(arg, node) ⇒ Object
187 188 189 190 191 192 193 |
# File 'lib/args.rb', line 187 def iadd(arg, node) if node.next_node.nil? node.next_node = arg else iadd(arg, node.next_node) end end |
#iargs(node, args) ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/args.rb', line 95 def iargs(node, args) if node.nil? return args end if (node.class == Arg) if node.value new_args = args.clone new_args[node.name] = node.value args = new_args end iargs(node.next_node, args) elsif (node.class == Decision) node.chosen.each { |child| return iargs(child, args) } end end |
#ifind(elt, node, args) ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/args.rb', line 113 def ifind(elt, node, args) if node.nil? return nil end if (node == elt) return args elsif (node.class == Arg) if node.value new_args = args.clone new_args[node.name] = node.value args = new_args end ifind(elt, node.next_node, args) elsif (node.class == Decision) found = false node.children.each { |child| result = ifind(elt, child, args) if (result) return result end } return nil end end |
#iset(name, value, node) ⇒ Object
return true for success false for unable to find arg name String for invalid arg
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/args.rb', line 147 def iset(name, value, node) if node.nil? return false end if (node.class == Arg ) if (node.name == name) response = node.validate?(value) if (response.class == String) return response else node.value = value return true end else iset(name, value, node.next_node) end elsif (node.class == Decision) result = false node.children.each { |flow| response = iset(name, value, flow.root) if (response == true) result = true elsif (response.class == String) return response end } result end end |
#print_flow(node) ⇒ Object
210 211 212 213 214 215 216 217 218 219 220 |
# File 'lib/args.rb', line 210 def print_flow(node) if node.nil? return end result = node.name + " - " + node.desc if (node.value) result += ":" + node.value end puts result print_flow(node.next_node) end |
#set(name, value) ⇒ Object
177 178 179 180 181 182 183 184 185 |
# File 'lib/args.rb', line 177 def set(name, value) response = iset(name, value, @root) if (response == false) puts "ERROR: could not find argument with name " + name elsif (response.class == String) puts "ERROR: " + response end response end |
#to_s ⇒ Object
203 204 205 206 207 208 |
# File 'lib/args.rb', line 203 def to_s args = iargs(@root, {}) args.each { |name, value| puts name + ":" + value } end |