Sha256: 6173665b263244928a022f86ba5e6ad4d07527cd10e14eb06c388d441f311e3f

Contents?: true

Size: 1.73 KB

Versions: 7

Compression:

Stored size: 1.73 KB

Contents

module IniParse
  # Represents an INI document.
  class Document
    include Enumerable

    attr_reader   :lines
    attr_accessor :path

    # Creates a new Document instance.
    def initialize(path = nil)
      @path  = path
      @lines = IniParse::SectionCollection.new
    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?
    #
    def each(*args, &blk)
      @lines.each(*args, &blk)
    end

    # Returns the section identified by +key+.
    #
    # Returns nil if there is no Section with the given key.
    #
    def [](key)
      @lines[key.to_s]
    end

    # Returns this document as a string suitable for saving to a file.
    def to_ini
      @lines.to_a.map { |line| line.to_ini }.join($/)
    end

    # Returns true if a section with the given +key+ exists in this document.
    def has_section?(key)
      @lines.has_key?(key.to_s)
    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.
    #
    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
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
iniparse-1.2.0 lib/iniparse/document.rb
iniparse-1.1.6 lib/iniparse/document.rb
iniparse-1.1.5 lib/iniparse/document.rb
iniparse-1.1.4 lib/iniparse/document.rb
iniparse-1.1.3 lib/iniparse/document.rb
iniparse-1.1.2 lib/iniparse/document.rb
iniparse-1.1.1 lib/iniparse/document.rb