Web::Microformats2::Document - A parsed Microformats2 data structure


An object of this class represents a Microformats2 data structure that has been either parsed from an HTML document or deserialized from JSON.

The expected use-case is that you will construct document objects either via the "parse" in Web::Microformats2::Parser method of Web::Microformats2::Parser, or by this class's "new_from_json" method. Once constructed, we expect you to treat documents as read-only.

See Web::Microformats2 for further context and purpose.


Class Methods


 $doc = Web::Microformats2->new_from_json( $json_string )

Given a JSON string containing a properly serialized Microformats2 data structure, returns a Web::Microformats2::Document object.

Object Methods


 $json = $doc->as_json

Returns a JSON representation of this object, created according to Microformats2 serialization rules.


 $mf2_data_ref = $doc->as_raw_data

Returns a hash reference containing unblessed data structures that map exactly to the JSON version of this object, as defined by Microformats2 serialization rules. In other words, it contains items, rels, and rel-urls keys, and builds down from there.

Call this if you'd like to parse the Microformats2 metadata out of a document and then work with it at low level, as opposed to (or as well as) using the various convenience methods offered by this class.

Equivalent to calling decode_json() (see "decode_json" in JSON) on the output of as_json.


 @items = $doc->all_items;

Returns a list of all Web::Microformats2::Item objects this document contains at any level.


 @items = $doc->all_top_level_items;

Returns a list of all Web::Microformats2::Item objects this document contains at the top level.


 $item = $doc->get_first( $item_type );

 # So:
 $entry = $doc->get_first( 'h-entry' );
 # Or...
 $entry = $doc->get_first( 'entry' );

Given a Microformats2 item-type string -- e.g. "h-entry" (or just "entry") -- returns the first item of that type that this document contains (in document order, depth-first).


Jason McIntosh (


This software is Copyright (c) 2018 by Jason McIntosh.

This is free software, licensed under:

  The MIT (X11) License