Parser for metadata header in plain-text files
Syntax
@key value
@key
value line 1
value line 2
@key
@key true
@nokey
@key false
Any kind of comment syntax or prefix can be used (every line of a multiline value must begin with the same decoration characters):
/*
* @key value
*/
An alternative syntax that allows spaces in the key name is also supported:
Key: Value
Parsing stops at the first empty line outside of a multiline value (ignoring white space).
Usage
require 'metaheader'
input = '@key value'
mh = MetaHeader.parse input
# alternatively:
# mh = MetaHeader.from_file path
# set @key as mandatory
errors = mh.validate key: MetaHeader::REQUIRED
# other validators are available:
# mh.validate key: MetaHeader::BOOLEAN
# mh.validate key: MetaHeader::OPTIONAL
# mh.validate key: MetaHeader::SINGLELINE
# mh.validate key: MetaHeader::VALUE
# mh.validate key: /^\w{2,}$/
# mh.validate key: proc {|value| 'return nil or error' }
value = mh[:key]
Documentation
MetaHeader's documentation is hosted at https://rubydoc.info/gems/metaheader/MetaHeader.
Contributing
- Fork this repository
- Create your feature branch (
git switch -c my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push -u origin my-new-feature
) - Create a new Pull Request