Sha256: 7c891c0ba1e07c0be0630d4b13ee50c1cd3a46df769852456180c84dfed0cc16
Contents?: true
Size: 1.54 KB
Versions: 3
Compression:
Stored size: 1.54 KB
Contents
module ComplexConfig class Tree def self.convert(name, value) case value when ComplexConfig::Settings convert(name, value.to_h) when Hash obj = new(name.to_s) value.each do |name, value| obj << convert(name, value) end obj when Array obj = new(name.to_s) value.each_with_index do |value, i| obj << convert(i, value) end obj else if name.is_a?(Integer) new value.inspect else new "#{name} = #{value.inspect}" end end end def initialize(name) @name = name @children = [] end private def inner_child_prefix(i) i.zero? ? "├─ " : "│ " end def last_child_prefix(i) i.zero? ? "└─ " : " " end public def to_enum Enumerator.new do |y| y.yield @name @children.each_with_index do |child, child_index| children_enum = child.to_enum if child_index < @children.size - 1 children_enum.each_with_index do |setting, i| y.yield "#{inner_child_prefix(i)}#{setting}" end else children_enum.each_with_index do |setting, i| y.yield "#{last_child_prefix(i)}#{setting}" end end end end end def <<(child) @children << child end def to_ary to_enum.to_a end alias to_a to_ary def to_str to_ary * ?\n end alias to_s to_str end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
complex_config-0.21.2 | lib/complex_config/tree.rb |
complex_config-0.21.1 | lib/complex_config/tree.rb |
complex_config-0.21.0 | lib/complex_config/tree.rb |