Module: Folder
- Defined in:
- lib/folder.rb,
lib/folder/version.rb
Constant Summary collapse
- DEFAULT_SEPARATOR =
'.'.freeze
- VERSION =
"0.0.2"
Instance Method Summary collapse
Instance Method Details
#fold(separator = DEFAULT_SEPARATOR) ⇒ Object
28 29 30 |
# File 'lib/folder.rb', line 28 def fold(separator = DEFAULT_SEPARATOR) clone.fold! separator end |
#fold!(separator = DEFAULT_SEPARATOR) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/folder.rb', line 6 def fold!(separator = DEFAULT_SEPARATOR) klass = self.class folded = klass.new each do |key, value| next unless key.is_a?(String) and key.include?(separator) keys = key.split(separator, -1) last = keys.pop current = keys.reduce(folded) {|memo, item| memo[item].is_a?(klass) ? memo[item] : (memo[item] = klass.new) } current[last] = value unless current[last].is_a?(klass) delete key end merge! folded end |