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
push(source)
Alias for: <<
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
to_h()
Alias for: settings