Sha256: 2ebafa2549749e9bb25ea492d145f6b82c1d59b70a0456715166d191db4fbb1e

Contents?: true

Size: 636 Bytes

Versions: 4

Compression:

Stored size: 636 Bytes

Contents

require "chronic_duration"

class Eye::Patch::Settings

  def initialize(filename)
    @settings = YAML.load(File.open(filename))
  end

  def [](value)
    parsed[value]
  end

  private

  def parsed
    @parsed ||= parse(@settings)
  end

  def parse(item)
    case item
    when Hash
      item.each_with_object({}) do |(key, val), result|
        result[key.to_sym] = parse(val)
      end
    when Array
      item.map { |val| parse(val) }
    when String
      # Assume that we should parse any time-like values
      item =~ /\b(hour|second|minute)s?\b/ ? ChronicDuration.parse(item) : item
    else
      item
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
eye-patch-0.0.4 lib/eye/patch/settings.rb
eye-patch-0.0.3 lib/eye/patch/settings.rb
eye-patch-0.0.2 lib/eye/patch/settings.rb
eye-patch-0.0.1 lib/eye/patch/settings.rb