module Sting::StingOperations
Public Class Methods
new(source = nil)
click to toggle source
# File lib/sting/sting_operations.rb, line 5 def initialize(source = nil) self << source if source end
Public Instance Methods
<<(source)
click to toggle source
# File lib/sting/sting_operations.rb, line 9 def <<(source) if source.is_a? Hash content = source.collect{ |k,v| [k.to_s, v] }.to_h elsif source.include? '*' Dir["#{source}"].sort.each { |file| push file } elsif File.directory? source Dir["#{source}/*.yml"].sort.each { |file| push file } else source = "#{source}.yml" unless source =~ /\.ya?ml$/ content = ExtendedYAML.load source end settings.merge! content if content end
Also aliased as: push
[](*keys)
click to toggle source
# File lib/sting/sting_operations.rb, line 28 def [](*keys) settings.dig(*keys.map(&:to_s)) end
has_key?(key)
click to toggle source
# File lib/sting/sting_operations.rb, line 73 def has_key?(key) settings.has_key? key.to_s end
method_missing(name, *args, &blk)
click to toggle source
# File lib/sting/sting_operations.rb, line 32 def method_missing(name, *args, &blk) name = name.to_s return settings[name] if has_key? name suffix = nil if name.end_with?('=', '!', '?') suffix = name[-1] name = name[0..-2] end case suffix when "=" settings[name] = args.first when "?" !!settings[name] when "!" if has_key? name return settings[name] else raise ArgumentError, "Key '#{name}' does not exist" end else nil end end
reset!()
click to toggle source
# File lib/sting/sting_operations.rb, line 69 def reset! @settings = nil end
settings()
click to toggle source
# File lib/sting/sting_operations.rb, line 64 def settings @settings ||= {} end
Also aliased as: to_h