Module: Evil::Client::Dictionary

Includes:
Enumerable
Defined in:
lib/evil/client/dictionary.rb

Overview

Class-level methods

Constant Summary collapse

Error =

Exception to be risen when item cannot be found in a dictionary

Class.new(ArgumentError)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.[](path) ⇒ self

Loads [#raw] dictionary from YAML config file

Parameters:

  • path (String)

Returns:

  • (self)


54
55
56
57
58
59
60
# File 'lib/evil/client/dictionary.rb', line 54

def [](path)
  file, paths = path.to_s.split("#")
  list = YAML.load_file(file)
  keys = paths.to_s.split("/").map(&:to_sym)
  @raw = keys.any? ? Hash(list).dig(*keys) : list
  self
end

Instance Method Details

#[](item) ⇒ Evil::Client::Dictionary

Alias for [.call]



44
45
46
# File 'lib/evil/client/dictionary.rb', line 44

def [](item)
  call(item)
end

#allArray<Evil::Client::Dictionary>

List of the dictionary items

Returns:



17
18
19
# File 'lib/evil/client/dictionary.rb', line 17

def all
  @all ||= raw.map { |item| new(item) }
end

#call(item) ⇒ Evil::Client::Dictionary

Calls the item and raises when it is not in the dictionary



33
34
35
36
# File 'lib/evil/client/dictionary.rb', line 33

def call(item)
  return item if all.include? item
  raise Error, "#{item} is absent in the dictionary #{self}"
end

#eachEnumerator<Evil::Client::Dictionary>

Iterates by dictionary items

Returns:



23
24
25
# File 'lib/evil/client/dictionary.rb', line 23

def each
  block_given? ? all.each { |item| yield(item) } : all.to_enum
end

#rawString

Raw data for the dictionary items

Returns:

  • (String)


11
12
13
# File 'lib/evil/client/dictionary.rb', line 11

def raw
  @raw ||= []
end