Class: ANVL::Document
- Inherits:
-
Object
- Object
- ANVL::Document
- Defined in:
- lib/anvl.rb
Overview
< Hash
Instance Attribute Summary collapse
-
#entries ⇒ Object
readonly
Returns the value of attribute entries.
Class Method Summary collapse
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
-
#initialize(obj = nil) ⇒ Document
constructor
A new instance of Document.
- #push(hash) ⇒ Object (also: #<<)
- #to_h ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(obj = nil) ⇒ Document
Returns a new instance of Document.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/anvl.rb', line 11 def initialize obj = nil @entries = Hash.new { |h,k| h[k] = [] } case obj when Hash obj.each do |key, value| @entries[key.to_sym] = value end when String lines = obj.gsub(/\s?\n\s+/, ' ').split("\n") lines.each_with_index do |str, i| case str when /^#/ parse_comment str, i else parse_entry str, i end end end if obj add_entries_methods gc! end |
Instance Attribute Details
#entries ⇒ Object (readonly)
Returns the value of attribute entries.
9 10 11 |
# File 'lib/anvl.rb', line 9 def entries @entries end |
Class Method Details
Instance Method Details
#[](key) ⇒ Object
56 57 58 |
# File 'lib/anvl.rb', line 56 def [] key return @entries[key] end |
#[]=(key, value) ⇒ Object
60 61 62 63 |
# File 'lib/anvl.rb', line 60 def []= key, value value = [value] unless value.is_a? Array @entries[key] = value end |
#push(hash) ⇒ Object Also known as: <<
65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/anvl.rb', line 65 def push hash hash.each do |key, value| @entries[key] = [@entries[key]] unless @entries[key].is_a? Array if value.is_a? Array value.each do |v| @entries[key] << v end else @entries[key] << value end end gc! @entries end |
#to_h ⇒ Object
51 52 53 54 |
# File 'lib/anvl.rb', line 51 def to_h gc! @entries end |
#to_s ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/anvl.rb', line 38 def to_s gc! @entries.map do |key, value| if value.is_a? Array value.map do |v| "#{key}: #{v}" end else "#{key}: #{value}" end end.join "\n" end |