Class: MicroMicro::Document

Inherits:
Object
  • Object
show all
Defined in:
lib/micro_micro/document.rb

Instance Method Summary collapse

Constructor Details

#initialize(markup, base_url) ⇒ Document

Parse a string of HTML for microformats2-encoded data.

Examples:

Parse a String of markup

MicroMicro::Document.new(%(<a href="/" class="h-card" rel="me">Jason Garber</a>), "https://sixtwothree.org")

Parse a String of markup from a URL

url = "https://tantek.com"
markup = Net::HTTP.get(URI.parse(url))

doc = MicroMicro::Document.new(markup, url)

Parameters:

  • markup (String)

    The HTML to parse for microformats2-encoded data.

  • base_url (String)

    The URL associated with markup. Used for relative URL resolution.



18
19
20
# File 'lib/micro_micro/document.rb', line 18

def initialize(markup, base_url)
  @document = Nokogiri::HTML5::Document.parse(markup, base_url).resolve_relative_urls!
end

Instance Method Details

#inspectString

:nocov:

Returns:

  • (String)


25
26
27
28
29
# File 'lib/micro_micro/document.rb', line 25

def inspect
  "#<#{self.class}:#{format('%#0x', object_id)} " \
    "items: #{items.inspect}, " \
    "relationships: #{relationships.inspect}>"
end

#itemsMicroMicro::Collections::ItemsCollection

A collection of Items parsed from the provided markup.



35
36
37
# File 'lib/micro_micro/document.rb', line 35

def items
  @items ||= Collections::ItemsCollection.new(Item.from_context(document.element_children))
end

#relationshipsMicroMicro::Collections::RelationshipsCollection

A collection of Relationships parsed from the provided markup.



42
43
44
# File 'lib/micro_micro/document.rb', line 42

def relationships
  @relationships ||= Collections::RelationshipsCollection.new(Relationship.from_context(document))
end

#to_hHash{Symbol => Array, Hash}

Return the parsed document as a Hash.



56
57
58
59
60
61
62
# File 'lib/micro_micro/document.rb', line 56

def to_h
  {
    items: items.to_a,
    rels: relationships.group_by_rel,
    "rel-urls": relationships.group_by_url
  }
end