Project

metaheader

0.0
No commit activity in last 3 years
No release in over 3 years
Parser for metadata headers in plain-text files
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 2.0
~> 5.10
~> 13.0
~> 0.13
 Project Readme

Parser for metadata header in plain-text files

Gem Version Test status Donate

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

  1. Fork this repository
  2. Create your feature branch (git switch -c my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push -u origin my-new-feature)
  5. Create a new Pull Request