Parser for metadata header in plain-text files

Gem Version Build Status Coverage Status


@key value

  value line 1
  value line 2


Any kind of comment syntax or prefix can be used:

 * @key value

An alternative syntax is also supported:

Key Name: Value

Parsing stops at the first empty line (ignoring white space).


require 'metaheader'

input = '@key value'
mh = input

# alternatively:
# mh = MetaHeader.from_file path

# mark unknown keys as invalid
# mh.strict = true

# set @key as mandatory
errors = mh.validate key: MetaHeader::REQUIRED

# other validators are available:
# mh.validate key: MetaHeader::OPTIONAL
# mh.validate key: MetaHeader::SINGLELINE
# mh.validate key: MetaHeader::HAS_VALUE
# mh.validate key: /^\w{2,}$/
# mh.validate key: proc {|value| 'return nil or error' }

value = mh[:key]


MetaHeader's documentation is hosted at


  1. Fork this repository
  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 -u origin my-new-feature)
  5. Create a new Pull Request