Class: Helm::Record
- Inherits:
-
Object
- Object
- Helm::Record
- Defined in:
- lib/helm/record.rb
Class Attribute Summary collapse
-
.columns ⇒ Object
Returns the value of attribute columns.
Class Method Summary collapse
- .column_accessor(name) ⇒ Object
- .subclass(*columns, &block) ⇒ Object
- .types ⇒ Object
- .with_columns(*columns) ⇒ Object
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
- #changed ⇒ Object
-
#initialize(row) ⇒ Record
constructor
A new instance of Record.
- #keys ⇒ Object
- #to_hash ⇒ Object
- #to_yaml ⇒ Object
Constructor Details
#initialize(row) ⇒ Record
Returns a new instance of Record.
53 54 55 56 57 58 |
# File 'lib/helm/record.rb', line 53 def initialize(row) @row = row @values = Hash.new do |h, k| @row[k] end end |
Class Attribute Details
.columns ⇒ Object
Returns the value of attribute columns.
4 5 6 |
# File 'lib/helm/record.rb', line 4 def columns @columns end |
Class Method Details
.column_accessor(name) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/helm/record.rb', line 25 def column_accessor(name) unless instance_methods(false).include?(name) define_method name do @values[name] end end write_method = "#{name}=" unless instance_methods(false).include?(write_method) define_method write_method do |value| @values[name] = value end end end |
.subclass(*columns, &block) ⇒ Object
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/helm/record.rb', line 14 def subclass(*columns, &block) klass = Class.new(self, &block) columns = columns.sort klass.columns = columns columns.each do |column| klass.column_accessor(column) end types[columns] ||= klass end |
.types ⇒ Object
6 7 8 |
# File 'lib/helm/record.rb', line 6 def types @types ||= {} end |
.with_columns(*columns) ⇒ Object
10 11 12 |
# File 'lib/helm/record.rb', line 10 def with_columns(*columns) types[columns.sort] || subclass(*columns) end |
Instance Method Details
#[](key) ⇒ Object
41 42 43 |
# File 'lib/helm/record.rb', line 41 def [](key) @values[key] end |
#[]=(key, value) ⇒ Object
45 46 47 |
# File 'lib/helm/record.rb', line 45 def []=(key, value) @values[key] = value end |
#changed ⇒ Object
60 61 62 |
# File 'lib/helm/record.rb', line 60 def changed @values.keys end |
#keys ⇒ Object
49 50 51 |
# File 'lib/helm/record.rb', line 49 def keys @row.keys | @values.keys end |
#to_hash ⇒ Object
64 65 66 |
# File 'lib/helm/record.rb', line 64 def to_hash Hash[ keys.map{|key| [key, self[key]]}] end |
#to_yaml ⇒ Object
68 69 70 |
# File 'lib/helm/record.rb', line 68 def to_yaml to_hash.to_yaml end |