class IniParse::Document
Represents an INI document.
Attributes
Public Class Methods
Creates a new Document
instance.
# File lib/iniparse/document.rb, line 10 def initialize(path = nil) @path = path @lines = IniParse::SectionCollection.new end
Public Instance Methods
Returns the section identified by key
.
Returns nil if there is no Section with the given key.
# File lib/iniparse/document.rb, line 31 def [](key) @lines[key.to_s] end
Deletes the section whose name matches the given key
.
Returns the document.
# File lib/iniparse/document.rb, line 39 def delete(*args) @lines.delete(*args) self end
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?
# File lib/iniparse/document.rb, line 23 def each(*args, &blk) @lines.each(*args, &blk) end
Returns true if a section with the given key
exists in this document.
# File lib/iniparse/document.rb, line 61 def has_section?(key) @lines.has_key?(key.to_s) end
A human-readable version of the document, for debugging.
# 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
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.
# 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
Returns this document as a string suitable for saving to a file.
# 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