// Copyright 2013 Frank Schroeder. All rights reserved. MIT licensed.

// Package properties reads Java properties files.
//
// Java properties files contain key/value pairs in one of the following form:
//
//   key value
//   key = value
//   key : value
//
// The value is optional and ends with EOF or a new line which can either be '\n', '\r' or "\r\n".
// Therefore, the following expression is legal and results in a key with an empty value:
//
//   key
//
// Whitespace before the key and around the delimiter is ignored. Whitespace at the end of the value is part of the value.
// Besides the space ' ' (U+0020) character the TAB (U+0009) and FF (U+000C) characters are also treated as whitespace.
// Therefore, the following expressions are equal:
//
//   key=value
//      key=value
//   key= value
//   key =value
//   key = value
//   key   =   value
//   key\f=\fvalue
//   key\t=\tvalue
//
// Blank lines and comment lines starting with '#' or '!' and are ignored until the end of the line.
//
//   # the next line is empty and will be ignored
//
//   ! this is a comment
//   key = value
//
// If the delimiter characters '=' and ':' appear in either key or value then
// they must be escaped with a backslash. Because of this the backslash must
// also be escaped. The characters '\n', '\r' or '\t' can be part of both key
// or value and must be escaped. For all other characters the backslash is
// silently dropped.
//
//   # key:1 = value=2
//   key\:1 = value\=2
//
//   # key = value	with	tabs
//   key = value\twith\ttabs
//
//   # key = value with silently dropped backslash
//   key = v\alu\e with silently dropped backslash
//
// Values can span multiple lines by using a backslash before the newline character.
// All subsequent whitespace on the following line is ignored. Comment lines cannot be
// extended like this.
//
//   # key = value continued
//   key = value \
//         continued
//
// Java properties files are ISO-8559-1 encoded and can have Unicode literals for
// characters outside the character set. Unicode literals are specified as \uXXXX.
//
//   # key = value with €
//   key = value with \u20AC
//
package properties
