No commit activity in last 3 years
No release in over 3 years
Library for loading and writing of Java properties files that matches java.util.Properties behaviour
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

 Project Readme

ProperProperties

Build Status Code Climate Coveralls RubyGems Gemnasium

A ruby library to read and write Java properties files, which format is better described in the Java documentation.

Installation

Install via Rubygems or Gemfile

$ gem install proper_properties

Loading files

You can load a valid Java properties file from the file system using a path:

properties = ProperProperties.load("path/to/my.properties")
properties[:foo] # => "bar"
properties['foo'] # => "bar"

If have already the content of the properties file at hand than parse the content as:

properties = ProperProperties.load("foo=bar")
properties[:foo] # => "bar"
properties['foo'] # => "bar"

Writing files

You can write any Hash-like structure (with symbol or string keys) as a properties file:

hash = {:foo => "bar", "foobar" => "barfoo"}
ProperProperties.write(hash, "path/to/my.properties")

Or if you want to omit the file you can receive the content directly:

hash = {:foo => "bar"}
ProperProperties.generate(hash)  # => "foo=bar"

Encodings and special chars

Although ISO 8859-1 is assumed for Java properties files, they normally use UTF-8 encoding. This tool tries to convert them:

"ה" <=> "\u05d4"

The tool also escaped every '=', ' ' and ':' in the name part of a property line:

ProperProperties.generate({"i : like=strange" => "bar"}) 
# => "i\ \:\ like\=strange=bar"

Multi line and line breaks

In Java properties files there is distinction between natural lines and logical lines (than may span several lines by escaping the line terminator characters).

Assume the following input:

my=This is a multi \
   line content with only \n one line break

The parses would read:

{:my => "This is a multi line content which only \n one line break"}

In the opposite direction line breaks will be correctly escaped but the generator will never use multi line values.

Contributing

  1. Fork it!
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Author

References

For a proper description about the properties file format have a look at the Java Plattform documentation.

License

This gem is released under the MIT License. See the LICENSE.txt file for further details.