Class: ConfigReader
- Inherits:
-
Object
- Object
- ConfigReader
- Defined in:
- lib/config_reader.rb
Instance Attribute Summary collapse
-
#rule ⇒ Object
readonly
Returns the value of attribute rule.
Instance Method Summary collapse
- #extract_exact_value(conf) ⇒ Object
-
#initialize(conf) ⇒ ConfigReader
constructor
A new instance of ConfigReader.
- #parse_array(conf) ⇒ Object
- #parse_boolean(conf) ⇒ Object
- #parse_element(conf) ⇒ Object
- #parse_null(conf) ⇒ Object
- #parse_number(conf) ⇒ Object
- #parse_object(conf) ⇒ Object
- #parse_object_key(key, conf) ⇒ Object
- #parse_string(conf) ⇒ Object
Constructor Details
#initialize(conf) ⇒ ConfigReader
Returns a new instance of ConfigReader.
17 18 19 |
# File 'lib/config_reader.rb', line 17 def initialize(conf) @rule = parse_element(conf['rule']) end |
Instance Attribute Details
#rule ⇒ Object (readonly)
Returns the value of attribute rule.
15 16 17 |
# File 'lib/config_reader.rb', line 15 def rule @rule end |
Instance Method Details
#extract_exact_value(conf) ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/config_reader.rb', line 83 def extract_exact_value(conf) if conf.has_key?('value') conf['value'] else JsonDef::ANY_VALUE end end |
#parse_array(conf) ⇒ Object
55 56 57 58 59 60 61 62 |
# File 'lib/config_reader.rb', line 55 def parse_array(conf) rule = JsonRuleArray.new min_val = if conf.has_key?('min') then conf['min'] else nil end max_val = if conf.has_key?('max') then conf['max'] else nil end rule.set_count(min_val, max_val) rule.set_rule(parse_element(conf['rule'])) if conf.has_key?('rule') rule end |
#parse_boolean(conf) ⇒ Object
74 75 76 77 |
# File 'lib/config_reader.rb', line 74 def parse_boolean(conf) rule = JsonRuleBoolean.new(extract_exact_value(conf)) rule end |
#parse_element(conf) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/config_reader.rb', line 21 def parse_element(conf) case conf['type'] when 'object' parse_object(conf) when 'array' parse_array(conf) when 'string' parse_string(conf) when 'number' parse_number(conf) when 'boolean' parse_boolean(conf) when 'nullval' parse_null(conf) else raise "Unknown rule type: #{conf['type']}" end end |
#parse_null(conf) ⇒ Object
79 80 81 |
# File 'lib/config_reader.rb', line 79 def parse_null(conf) JsonRuleNull.new end |
#parse_number(conf) ⇒ Object
69 70 71 72 |
# File 'lib/config_reader.rb', line 69 def parse_number(conf) rule = JsonRuleNumber.new(extract_exact_value(conf)) rule end |
#parse_object(conf) ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/config_reader.rb', line 40 def parse_object(conf) rule = JsonRuleObject.new conf['keys'].each { |k, v| rule.add_key_rule(parse_object_key(k, v)) } if conf.has_key?('keys') rule.disallow_other_keys if conf.has_key?('disallow_other_keys') && conf['disallow_other_keys'] rule end |
#parse_object_key(key, conf) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/config_reader.rb', line 48 def parse_object_key(key, conf) rule = JsonRuleObjectKey.new(key) rule.set_optional if conf.has_key?('optional') && conf['optional'] rule.set_rule(parse_element(conf['rule'])) if conf.has_key?('rule') rule end |
#parse_string(conf) ⇒ Object
64 65 66 67 |
# File 'lib/config_reader.rb', line 64 def parse_string(conf) rule = JsonRuleString.new(extract_exact_value(conf)) rule end |