class ErrataSlip
Constants
- VERSION
Attributes
errata[R]
Public Class Methods
load_file(filename)
click to toggle source
@return [ErrataSlip]
# File lib/errata_slip.rb, line 9 def self.load_file(filename) ErrataSlip.new(YAML::load_file(filename)) end
new(errata)
click to toggle source
# File lib/errata_slip.rb, line 15 def initialize(errata) @errata = errata end
Public Instance Methods
correct!(items)
click to toggle source
@param [Array] items -
# File lib/errata_slip.rb, line 20 def correct!(items) items.each do |item| correct_item!(item) end end
correct_item!(item)
click to toggle source
# File lib/errata_slip.rb, line 26 def correct_item!(item) @errata.each do |errata| hash_key_is_symbol = nil item.each_key { |k| hash_key_is_symbol = k.is_a?(Symbol); break } next unless item_matches_errata(item, errata, hash_key_is_symbol) change_fields = errata.keys.select { |field| field[0] == '~' } change_fields.map! { |field| field[1..-1]} change_fields.each do |field| hash_field = hash_key_is_symbol ? field.to_sym : field item[hash_field] = errata["~#{field}"] end end item end
item_matches_errata(hash, errata, hash_key_is_symbol = false)
click to toggle source
# File lib/errata_slip.rb, line 41 def item_matches_errata(hash, errata, hash_key_is_symbol = false) find_fields = errata.keys.select { |field| field[0] != '~' } find_fields.each do |key| hash_key = hash_key_is_symbol ? key.to_sym : key return false if hash[hash_key] != errata[key] end true end