Class: IniParse::Document

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/iniparse/document.rb

Overview

Represents an INI document.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path = nil) ⇒ Document

Creates a new Document instance.



10
11
12
13
# File 'lib/iniparse/document.rb', line 10

def initialize(path = nil)
  @path  = path
  @lines = IniParse::SectionCollection.new
end

Instance Attribute Details

#linesObject (readonly)

Returns the value of attribute lines.



6
7
8
# File 'lib/iniparse/document.rb', line 6

def lines
  @lines
end

#pathObject

Returns the value of attribute path.



7
8
9
# File 'lib/iniparse/document.rb', line 7

def path
  @path
end

Instance Method Details

#[](key) ⇒ Object

Returns the section identified by key.

Returns nil if there is no Section with the given key.



31
32
33
# File 'lib/iniparse/document.rb', line 31

def [](key)
  @lines[key.to_s]
end

#delete(*args) ⇒ Object

Deletes the section whose name matches the given key.

Returns the document.



39
40
41
42
# File 'lib/iniparse/document.rb', line 39

def delete(*args)
  @lines.delete(*args)
  self
end

#each(*args, &blk) ⇒ Object

Enumerates through each Section in this document.

Does not yield blank and comment lines by default; if you want all lines to be yielded, pass true.

Parameters

include_blank<Boolean>

Include blank/comment lines?



23
24
25
# File 'lib/iniparse/document.rb', line 23

def each(*args, &blk)
  @lines.each(*args, &blk)
end

#has_section?(key) ⇒ Boolean

Returns true if a section with the given key exists in this document.

Returns:

  • (Boolean)


61
62
63
# File 'lib/iniparse/document.rb', line 61

def has_section?(key)
  @lines.has_key?(key.to_s)
end

#inspectObject

A human-readable version of the document, for debugging.



55
56
57
58
# File 'lib/iniparse/document.rb', line 55

def inspect
  sections = @lines.select { |l| l.is_a?(IniParse::Lines::Section) }
  "#<IniParse::Document {#{ sections.map(&:key).join(', ') }}>"
end

#save(path = nil) ⇒ Object

Saves a copy of this Document to disk.

If a path was supplied when the Document was initialized then nothing needs to be given to Document#save. If Document was not given a file path, or you wish to save the document elsewhere, supply a path when calling Document#save.

Parameters

path<String>

A path to which this document will be saved.

Raises

IniParseError

If your document couldn’t be saved.

Raises:



78
79
80
81
82
# File 'lib/iniparse/document.rb', line 78

def save(path = nil)
  @path = path if path
  raise IniParseError, 'No path given to Document#save' if @path !~ /\S/
  File.open(@path, 'w') { |f| f.write(self.to_ini) }
end

#to_iniObject Also known as: to_s

Returns this document as a string suitable for saving to a file.



45
46
47
48
49
50
# File 'lib/iniparse/document.rb', line 45

def to_ini
  string = @lines.to_a.map { |line| line.to_ini }.join($/)
  string = "#{ string }\n" unless string[-1] == "\n"

  string
end