class IniParse::Document
Represents an INI document.
def [](key)
Returns nil if there is no Section with the given key.
Returns the section identified by +key+.
def [](key) @lines[key.to_s] end
def delete(*args)
Returns the document.
Deletes the section whose name matches the given +key+.
def delete(*args) @lines.delete(*args) self end
def each(*args, &blk)
include_blank
==== Parameters
lines to be yielded, pass true.
Does not yield blank and comment lines by default; if you want _all_
Enumerates through each Section in this document.
def each(*args, &blk) @lines.each(*args, &blk) end
def has_section?(key)
def has_section?(key) @lines.has_key?(key.to_s) end
def initialize(path = nil)
def initialize(path = nil) @path = path @lines = IniParse::SectionCollection.new end
def inspect
def inspect sections = @lines.select { |l| l.is_a?(IniParse::Lines::Section) } "#<IniParse::Document {#{ sections.map(&:key).join(', ') }}>" end
def save(path = nil)
IniParseError:: If your document couldn't be saved.
==== Raises
path
==== Parameters
calling Document#save.
path, or you wish to save the document elsewhere, supply a path when
needs to be given to Document#save. If Document was not given a file
If a path was supplied when the Document was initialized then nothing
Saves a copy of this Document to disk.
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
def section(key)
If there is no Section with the given key it will be created.
Returns the section identified by +key+.
def section(key) @lines[key.to_s] ||= Lines::Section.new(key.to_s) end
def to_hash
Returns a has representation of the INI with multi-line options
def to_hash result = {} @lines.entries.each do |section| result[section.key] ||= {} section.entries.each do |option| opts = Array(option) val = opts.map { |o| o.respond_to?(:value) ? o.value : o } val = val.size > 1 ? val : val.first result[section.key][opts.first.key] = val end end result end
def to_ini
def to_ini string = @lines.to_a.map { |line| line.to_ini }.join($/) string = "#{ string }\n" unless string[-1] == "\n" string end