Class: ANVL::Document

Inherits:
Object
  • Object
show all
Defined in:
lib/anvl.rb

Overview

< Hash

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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

#entriesObject (readonly)

Returns the value of attribute entries.



9
10
11
# File 'lib/anvl.rb', line 9

def entries
  @entries
end

Class Method Details

.parse(str) ⇒ Object



4
5
6
7
# File 'lib/anvl.rb', line 4

def self.parse str
  anvl = ANVL::Document.new  str
  anvl
end

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_hObject



51
52
53
54
# File 'lib/anvl.rb', line 51

def to_h
  gc!
  @entries
end

#to_sObject



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