Class Hashery::IniHash
In: lib/hashery/ini_hash.rb
Parent: Object

Hash class with methods to read from and write into ini files.

A ini file is a text file in a specific format, it may include several fields which are sparated by field headlines which are enclosured by "[]". Each field may include several key-value pairs.

Each key-value pair is represented by one line and the value is sparated from the key by a "=".

Examples

Example ini file

  # this is the first comment which will be saved in the comment attribute
  mail=info@example.com
  domain=example.com # this is a comment which will not be saved
  [database]
  db=example
  user=john
  passwd=very-secure
  host=localhost
  # this is another comment
  [filepaths]
  tmp=/tmp/example
  lib=/home/john/projects/example/lib
  htdocs=/home/john/projects/example/htdocs
  [ texts ]
  wellcome=Wellcome on my new website!
  Website description = This is only a example. # and another comment

Example object

Ini#comment stores:

  "this is the first comment which will be saved in the comment attribute"

Ini‘s internal hash stores:

  {
   "mail" => "info@example.com",
   "domain" => "example.com",
   "database" => {
    "db" => "example",
    "user" => "john",
    "passwd" => "very-secure",
    "host" => "localhost"
   },
   "filepaths" => {
    "tmp" => "/tmp/example",
    "lib" => "/home/john/projects/example/lib",
    "htdocs" => "/home/john/projects/example/htdocs"
   }
   "texts" => {
    "wellcome" => "Wellcome on my new website!",
    "Website description" => "This is only a example."
   }
  }

As you can see this module gets rid of all comments, linebreaks and unnecessary spaces at the beginning and the end of each field headline, key or value.

Using the object

Using the object is stright forward:

  ini = IniHash.new("path/settings.ini")
  ini["mail"] = "info@example.com"
  ini["filepaths"] = { "tmp" => "/tmp/example" }
  ini.comment = "This is\na comment"
  puts ini["filepaths"]["tmp"]
  # => /tmp/example
  ini.write()

Acknowlegements

IniHash is based on ini.rb.

Copyright (C) 2007 Jeena Paradies <info@jeenaparadies.net>

Methods

[]   []=   load   method_missing   new   read_comment_from_file   read_from_file   restore   save   text   to_h   to_s   update   write_to_file  

External Aliases

to_s -> inspect
text -> to_s
  @deprecated

Attributes

comment  [RW]  The string which holds the comments on the top of the file
inihash  [RW]  The hash which holds all INI data.

Public Class methods

NOTE: In future versions, `new` will not take a path, and `load` will have to be used.

Creating a new IniHash object.

path - is a path to the ini file load - if nil restores the data if possible

       if true restores the data, if not possible raises an error
       if false does not resotre the data

Reading comments from file

path - a path to the INI file

Returns a `String` with the comments from the beginning of the INI file.

Reading data from file

path - a path to the ini file

Returns a `Hash` which represents the data from the file.

Turn a hash (up to 2 levels deepness) into a ini string

inihash - Hash representing the ini File. Default is a empty hash.

Returns a String in the ini file format.

TODO: Rename `IniHash.text` method to something else ?

Writing a ini hash into a file

path - Path to the INI file. inihash - Hash representing the ini File. Default is a empty hash. comment - String with comments which appear on the

          top of the file. Each line will get a "#" before.
          Default is no comment.

Public Instance methods

Retrive the ini data for the key key

Set the ini data for the key key

key - Index key. value - The value to index.

Returns value.

Delegate missing mthods to underlying Hash.

TODO: Sublcass Hash instead of delegating.

Restores the data from file into the object

Store data from the object in the file.

Convert to hash by duplicating the underlying hash table.

Turn a hash (up to 2 levels deepness) into a ini string

inihash - Hash representing the ini File. Default is a empty hash.

Returns a string in the ini file format.

Deprecated: Save INI data to file path. Use save instead.

[Validate]