class Oval::HashItem

Attributes

key_decl[R]
val_decl[R]

Public Class Methods

[](item_decl) click to toggle source
# File lib/oval/hash_item.rb, line 18
def self.[](item_decl)
  new(item_decl)
end
new(item_decl) click to toggle source
# File lib/oval/hash_item.rb, line 22
def initialize(item_decl)
  self.item_decl = item_decl
end
validate_item_decl(decl) click to toggle source
# File lib/oval/hash_item.rb, line 29
def self.validate_item_decl(decl)
  unless (decl.is_a?(Hash) and decl.size == 1)
    raise Oval::DeclError, "Invalid item declaration #{decl.inspect}. " +
      "Should be one-element Hash of type { key_decl => value_decl }"
  end
end

Public Instance Methods

it_should() click to toggle source
# File lib/oval/hash_item.rb, line 13
def it_should
  "be {key => value} where key should #{self.class.it_should(key_decl)} " +
  "and value should #{self.class.it_should(val_decl)}"
end
validate(item, i, subject = nil) click to toggle source
# File lib/oval/hash_item.rb, line 6
def validate(item, i, subject = nil)
  key_subject = subject.nil? ? nil: "#{subject} key"
  val_subject = subject.nil? ? nil: "#{subject}[#{item[0].inspect}]"
  self.class.validate(item[0],key_decl,key_subject)
  self.class.validate(item[1],val_decl,val_subject)
end

Private Instance Methods

item_decl=(decl) click to toggle source
# File lib/oval/hash_item.rb, line 38
def item_decl=(decl)
  if decl.is_a?(Oval::Anything) or (decl.is_a?(Class) and decl == Oval::Anything)
    @key_decl, @val_decl = [Oval::Anything[], Oval::Anything[]]
  else
    self.class.validate_item_decl(decl)
    @key_decl, @val_decl = decl.first
  end
end