Module: Liner::Hashable

Defined in:
lib/liner/hashable.rb

Instance Method Summary collapse

Instance Method Details

#[](key) ⇒ Object

Read a liner attribute

Parameters:

  • key (Symbol, String)

    The attribute to fetch the value for

Returns:

  • (Object)

    The attribute value



8
9
10
11
12
# File 'lib/liner/hashable.rb', line 8

def [](key)
  send key.to_sym
rescue NoMethodError
  liner_get key
end

#[]=(key, value) ⇒ Object

Set a liner attribute

Parameters:

  • key (Symbol, String)

    The attribute to set the value for

  • value (Object)

    The attribute value to set

Returns:

  • (Object)

    The attribute value



19
20
21
22
23
# File 'lib/liner/hashable.rb', line 19

def []=(key,value)
  send :"#{key}=", value
rescue NoMethodError
  liner_set key, value
end

#linerHash

Build a hash of liner attributes

Returns:

  • (Hash)

    A hash of liner attributes



28
29
30
# File 'lib/liner/hashable.rb', line 28

def liner
  liner_keys.inject({}) { |h,k| h[k] = self[k]; h }.freeze
end

#liner=(hash) ⇒ Hash

Set multiple attribute values

Parameters:

  • hash (Hash)

    A hash of attribute-value pairs to set

Returns:

  • (Hash)


36
37
38
# File 'lib/liner/hashable.rb', line 36

def liner=(hash)
  hash.each { |k,v| self[k] = hash[k] }
end

#liner_values=(values) ⇒ Array

Set mulitple attribute values

Parameters:

  • values (Array)

    Ordered array of attribute values

Returns:

  • (Array)


44
45
46
47
48
# File 'lib/liner/hashable.rb', line 44

def liner_values=(values)
  values.each_with_index do |value, i|
    self[liner_keys[i]] = value
  end
end

#to_hHash Also known as: to_hash

Get a hash of attributes

Returns:

  • (Hash)

    An attribute-value hash



53
54
55
# File 'lib/liner/hashable.rb', line 53

def to_h
  liner.dup
end