├── .ruby-version ├── .rubocop ├── .rspec ├── lib ├── microformats │ ├── version.rb │ ├── absolute_uri.rb │ └── results │ │ └── property_set.rb └── microformats.rb ├── vendor └── tests │ ├── tests │ ├── microformats-v1 │ │ ├── hcard │ │ │ ├── justaname.html │ │ │ ├── justahyperlink.html │ │ │ ├── hyperlinkedphoto.html │ │ │ ├── justaname.json │ │ │ ├── justahyperlink.json │ │ │ ├── hyperlinkedphoto.json │ │ │ ├── format.html │ │ │ ├── format.json │ │ │ ├── email.json │ │ │ ├── name.json │ │ │ ├── name.html │ │ │ ├── email.html │ │ │ ├── single.json │ │ │ └── single.html │ │ ├── geo │ │ │ ├── abbrpattern.html │ │ │ ├── simpleproperties.html │ │ │ ├── hidden.json │ │ │ ├── abbrpattern.json │ │ │ ├── simpleproperties.json │ │ │ ├── valuetitleclass.json │ │ │ ├── hidden.html │ │ │ └── valuetitleclass.html │ │ ├── hreview-aggregate │ │ │ ├── justahyperlink.html │ │ │ ├── vevent.html │ │ │ ├── justahyperlink.json │ │ │ ├── hcard.html │ │ │ ├── vevent.json │ │ │ └── hcard.json │ │ ├── hreview │ │ │ ├── item.html │ │ │ ├── item.json │ │ │ └── vcard.html │ │ ├── hcalendar │ │ │ ├── concatenate.html │ │ │ ├── concatenate.json │ │ │ ├── combining.html │ │ │ ├── ampm.json │ │ │ ├── attendees.html │ │ │ ├── time.json │ │ │ ├── combining.json │ │ │ ├── attendees.json │ │ │ ├── ampm.html │ │ │ └── time.html │ │ ├── adr │ │ │ ├── simpleproperties.html │ │ │ └── simpleproperties.json │ │ ├── includes │ │ │ ├── table.html │ │ │ ├── table.json │ │ │ ├── hyperlink.html │ │ │ ├── hcarditemref.html │ │ │ ├── object.html │ │ │ ├── heventitemref.html │ │ │ ├── heventitemref.json │ │ │ ├── object.json │ │ │ ├── hyperlink.json │ │ │ └── hcarditemref.json │ │ ├── hresume │ │ │ ├── affiliation.html │ │ │ ├── skill.html │ │ │ ├── education.html │ │ │ ├── work.html │ │ │ ├── affiliation.json │ │ │ ├── contact.html │ │ │ ├── education.json │ │ │ ├── work.json │ │ │ ├── skill.json │ │ │ └── contact.json │ │ ├── hproduct │ │ │ ├── simpleproperties.html │ │ │ ├── simpleproperties.json │ │ │ └── aggregate.html │ │ ├── hentry │ │ │ ├── summarycontent.html │ │ │ └── summarycontent.json │ │ ├── hnews │ │ │ ├── minimum.html │ │ │ └── all.html │ │ └── hfeed │ │ │ └── simple.html │ ├── microformats-v2 │ │ ├── h-card │ │ │ ├── justaname.html │ │ │ ├── justahyperlink.html │ │ │ ├── hyperlinkedphoto.html │ │ │ ├── relativeurlsempty.html │ │ │ ├── hcard.html │ │ │ ├── nested.html │ │ │ ├── justaname.json │ │ │ ├── justahyperlink.json │ │ │ ├── baseurl.html │ │ │ ├── impliedurlempty.html │ │ │ ├── relativeurls.html │ │ │ ├── hyperlinkedphoto.json │ │ │ ├── impliedurl.html │ │ │ ├── childimplied.html │ │ │ ├── childimplied.json │ │ │ ├── p-property.json │ │ │ ├── nested.json │ │ │ ├── relativeurlsempty.json │ │ │ ├── hcard.json │ │ │ ├── extendeddescription.json │ │ │ ├── extendeddescription.html │ │ │ ├── baseurl.json │ │ │ ├── relativeurls.json │ │ │ ├── p-property.html │ │ │ ├── impliedphoto.html │ │ │ ├── impliedurlempty.json │ │ │ ├── impliedurl.json │ │ │ └── impliedname.html │ │ ├── h-event │ │ │ ├── justaname.html │ │ │ ├── justahyperlink.html │ │ │ ├── justaname.json │ │ │ ├── justahyperlink.json │ │ │ ├── concatenate.json │ │ │ ├── concatenate.html │ │ │ ├── dt-property.json │ │ │ ├── attendees.html │ │ │ ├── combining.html │ │ │ ├── ampm.json │ │ │ ├── time.json │ │ │ ├── dates.json │ │ │ ├── dates.html │ │ │ ├── combining.json │ │ │ ├── dt-property.html │ │ │ ├── attendees.json │ │ │ └── ampm.html │ │ ├── h-product │ │ │ ├── justaname.html │ │ │ ├── justahyperlink.html │ │ │ ├── justaname.json │ │ │ ├── justahyperlink.json │ │ │ ├── simpleproperties.html │ │ │ ├── aggregate.html │ │ │ └── simpleproperties.json │ │ ├── h-review │ │ │ ├── justaname.html │ │ │ ├── hyperlink.html │ │ │ ├── photo.html │ │ │ ├── implieditem.html │ │ │ ├── justaname.json │ │ │ ├── photo.json │ │ │ ├── hyperlink.json │ │ │ ├── item.html │ │ │ ├── implieditem.json │ │ │ ├── item.json │ │ │ └── vcard.html │ │ ├── h-entry │ │ │ ├── justaname.html │ │ │ ├── justahyperlink.html │ │ │ ├── encoding.html │ │ │ ├── justaname.json │ │ │ ├── scriptstyletags.html │ │ │ ├── justahyperlink.json │ │ │ ├── impliedvalue-nested.html │ │ │ ├── scriptstyletags.json │ │ │ ├── encoding.json │ │ │ ├── u-property.json │ │ │ ├── impliedname.html │ │ │ ├── urlincontent.html │ │ │ ├── impliedvalue-nested.json │ │ │ ├── summarycontent.html │ │ │ ├── impliedname.json │ │ │ ├── urlincontent.json │ │ │ └── u-property.html │ │ ├── h-adr │ │ │ ├── justaname.html │ │ │ ├── geourl.html │ │ │ ├── justaname.json │ │ │ ├── geourl.json │ │ │ ├── lettercase.json │ │ │ ├── simpleproperties.html │ │ │ ├── geo.html │ │ │ ├── simpleproperties.json │ │ │ ├── geo.json │ │ │ └── lettercase.html │ │ ├── h-resume │ │ │ ├── justaname.html │ │ │ ├── justaname.json │ │ │ ├── skill.json │ │ │ ├── skill.html │ │ │ ├── affiliation.html │ │ │ ├── affiliation.json │ │ │ ├── education.html │ │ │ ├── work.html │ │ │ ├── contact.html │ │ │ ├── contact.json │ │ │ ├── education.json │ │ │ └── work.json │ │ ├── rel │ │ │ ├── license.html │ │ │ ├── nofollow.html │ │ │ ├── varying-text-duplicate-rels.html │ │ │ ├── license.json │ │ │ ├── nofollow.json │ │ │ ├── rel-urls.html │ │ │ ├── varying-text-duplicate-rels.json │ │ │ ├── xfn-elsewhere.html │ │ │ ├── duplicate-rels.html │ │ │ ├── rel-urls.json │ │ │ ├── xfn-all.html │ │ │ └── xfn-elsewhere.json │ │ ├── h-geo │ │ │ ├── justaname.html │ │ │ ├── abbrpattern.html │ │ │ ├── justaname.json │ │ │ ├── simpleproperties.html │ │ │ ├── hidden.json │ │ │ ├── abbrpattern.json │ │ │ ├── valuetitleclass.json │ │ │ ├── simpleproperties.json │ │ │ ├── altitude.html │ │ │ ├── altitude.json │ │ │ ├── hidden.html │ │ │ └── valuetitleclass.html │ │ ├── h-recipe │ │ │ ├── minimum.html │ │ │ └── minimum.json │ │ ├── h-review-aggregate │ │ │ ├── justahyperlink.html │ │ │ ├── hevent.html │ │ │ ├── justahyperlink.json │ │ │ ├── hevent.json │ │ │ ├── simpleproperties.html │ │ │ └── simpleproperties.json │ │ └── h-feed │ │ │ ├── implied-title.html │ │ │ └── simple.html │ └── microformats-mixed │ │ ├── h-card │ │ ├── tworoots.html │ │ ├── tworoots.json │ │ ├── mixedproperties.html │ │ └── mixedproperties.json │ │ ├── h-resume │ │ ├── mixedroots.html │ │ └── mixedroots.json │ │ └── h-entry │ │ ├── mixedroots.html │ │ └── mixedroots.json │ ├── .gitignore │ ├── composer.json │ ├── interface.js │ ├── package.json │ └── app.js ├── Gemfile ├── spec ├── support │ ├── cases │ │ └── microformats.org │ │ │ └── microformats-2 │ │ │ ├── microformats-2-0.html │ │ │ ├── microformats-2-1.html │ │ │ ├── microformats-2-0.js │ │ │ ├── microformats-2-1.js │ │ │ ├── microformats-2-5.html │ │ │ ├── microformats-2-2.html │ │ │ ├── microformats-2-5.js │ │ │ ├── microformats-2-9.html │ │ │ ├── microformats-2-6.html │ │ │ ├── microformats-2-8.html │ │ │ ├── microformats-2-7.html │ │ │ ├── microformats-2-2.js │ │ │ ├── microformats-2-9.js │ │ │ ├── microformats-2-8.js │ │ │ ├── microformats-2-6.js │ │ │ ├── microformats-2-7.js │ │ │ ├── microformats-2-4.html │ │ │ ├── microformats-2-3.js │ │ │ ├── microformats-2-3.html │ │ │ └── microformats-2-4.js │ └── lib │ │ ├── edge_cases │ │ ├── blank_value.html │ │ ├── link_parse.html │ │ ├── blank_value.js │ │ ├── blank_href.js │ │ ├── vcp-dates.html │ │ ├── blank_src.js │ │ ├── vcp-dates.js │ │ ├── relative.js │ │ ├── link_parse.js │ │ ├── blank_href.html │ │ ├── blank_rel.html │ │ ├── blank_src.html │ │ ├── relative.html │ │ └── blank_rel.js │ │ └── microformats │ │ ├── nested-property.js │ │ ├── implied_property │ │ ├── url-relative.html │ │ ├── url-unnormalized.html │ │ ├── url-pass.html │ │ ├── url-fail.html │ │ ├── name-pass.html │ │ ├── photo-pass.html │ │ ├── name-fail.html │ │ └── photo-fail.html │ │ ├── nested-property.html │ │ ├── nested-format-with-property-of-same-name.html │ │ ├── nested-format-without-property.html │ │ ├── nested-format-with-property.html │ │ ├── blank_href.js │ │ ├── rels.js │ │ ├── simple.js │ │ ├── rels-with-unnormalized-urls.html │ │ ├── rels-that-drop-the-base.html │ │ ├── rels.html │ │ ├── nested-format-with-property-of-same-name.js │ │ ├── nested-format-with-property.js │ │ ├── blank_href.html │ │ └── simple.html ├── spec_helper.rb └── lib │ ├── microformats_parse_spec.rb │ ├── microformats │ ├── property_set_spec.rb │ ├── absolute_uri_absolutize_spec.rb │ └── parser_result_spec.rb │ └── microformats_read_html_spec.rb ├── Rakefile ├── .github ├── dependabot.yml └── workflows │ └── ci.yml ├── Guardfile ├── .editorconfig ├── .simplecov ├── .rubocop.yml ├── bin └── microformats ├── .gitignore └── microformats.gemspec /.ruby-version: -------------------------------------------------------------------------------- 1 | 3.2.0 2 | -------------------------------------------------------------------------------- /.rubocop: -------------------------------------------------------------------------------- 1 | --display-style-guide 2 | --extra-details 3 | --parallel 4 | -------------------------------------------------------------------------------- /.rspec: -------------------------------------------------------------------------------- 1 | --format documentation 2 | --order random 3 | --require spec_helper 4 | -------------------------------------------------------------------------------- /lib/microformats/version.rb: -------------------------------------------------------------------------------- 1 | module Microformats 2 | VERSION = '4.5.0'.freeze 3 | end 4 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/justaname.html: -------------------------------------------------------------------------------- 1 |

Frances Berriman

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/justaname.html: -------------------------------------------------------------------------------- 1 |

Frances Berriman

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/justaname.html: -------------------------------------------------------------------------------- 1 |

IndieWebCamp 2012

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-product/justaname.html: -------------------------------------------------------------------------------- 1 |

Raspberry Pi

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review/justaname.html: -------------------------------------------------------------------------------- 1 |

Crepes on Cole

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-mixed/h-card/tworoots.html: -------------------------------------------------------------------------------- 1 |

Frances Berriman

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/justaname.html: -------------------------------------------------------------------------------- 1 |

microformats.org at 7

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/justahyperlink.html: -------------------------------------------------------------------------------- 1 | Ben Ward -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/justahyperlink.html: -------------------------------------------------------------------------------- 1 | Ben Ward -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # Specify your gem's dependencies in microformats.gemspec 4 | gemspec 5 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-adr/justaname.html: -------------------------------------------------------------------------------- 1 |

665 3rd St. Suite 207 San Francisco, CA 94107 U.S.A.

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-resume/justaname.html: -------------------------------------------------------------------------------- 1 |

Tim Berners-Lee, invented the World Wide Web.

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/license.html: -------------------------------------------------------------------------------- 1 | cc by 2.5 -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/justahyperlink.html: -------------------------------------------------------------------------------- 1 | IndieWebCamp 2012 -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-product/justahyperlink.html: -------------------------------------------------------------------------------- 1 | Raspberry Pi -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/nofollow.html: -------------------------------------------------------------------------------- 1 | Copyrights -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review/hyperlink.html: -------------------------------------------------------------------------------- 1 | Crepes on Cole -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review/photo.html: -------------------------------------------------------------------------------- 1 | Crepes on Cole -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-geo/justaname.html: -------------------------------------------------------------------------------- 1 |

On my way to The Bricklayer's Arms 2 | (Geo: 51.513458;-0.14812) 3 |

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/justahyperlink.html: -------------------------------------------------------------------------------- 1 | microformats.org at 7 -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-0.html: -------------------------------------------------------------------------------- 1 | 2 | Frances Berriman 3 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/hyperlinkedphoto.html: -------------------------------------------------------------------------------- 1 | 2 | Rohit Khare 3 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/hyperlinkedphoto.html: -------------------------------------------------------------------------------- 1 | 2 | Rohit Khare 3 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/encoding.html: -------------------------------------------------------------------------------- 1 |
2 |
x<y AT&T <b>NotBold</b> Bold
3 |
-------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-1.html: -------------------------------------------------------------------------------- 1 | 2 | Ben Ward 3 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require 'bundler/gem_tasks' 2 | require 'rspec/core/rake_task' 3 | require 'rubocop/rake_task' 4 | 5 | RSpec::Core::RakeTask.new 6 | RuboCop::RakeTask.new 7 | 8 | task default: :spec 9 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/justaname.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": {} 5 | }], 6 | "rels": {}, 7 | "rel-urls": {} 8 | } -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "bundler" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | assignees: 8 | - "dissolve" 9 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/justahyperlink.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": {} 5 | }], 6 | "rels": {}, 7 | "rel-urls": {} 8 | } -------------------------------------------------------------------------------- /spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | $LOAD_PATH.unshift File.expand_path('../lib', __dir__) 2 | 3 | require 'simplecov' 4 | require 'webmock/rspec' 5 | 6 | require 'microformats' 7 | 8 | WebMock.disable_net_connect! 9 | -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/blank_value.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | This should not be the value of the content attribute 4 | 5 |
6 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/hyperlinkedphoto.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": {} 5 | }], 6 | "rels": {}, 7 | "rel-urls": {} 8 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/relativeurlsempty.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | Max Mustermann 4 |
-------------------------------------------------------------------------------- /Guardfile: -------------------------------------------------------------------------------- 1 | guard :rspec, cmd: 'bundle exec rspec' do 2 | watch(%r{^spec/.+_spec\.rb$}) 3 | watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" } 4 | watch('spec/spec_helper.rb') { 'spec' } 5 | end 6 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-adr/geourl.html: -------------------------------------------------------------------------------- 1 |

2 | Bricklayer's Arms, 3 | London 4 |

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/format.html: -------------------------------------------------------------------------------- 1 |

2 | 3 | John 4 | Doe 5 | 6 |

-------------------------------------------------------------------------------- /spec/support/lib/microformats/nested-property.js: -------------------------------------------------------------------------------- 1 | { "items": [{ 2 | "type": ["h-card"], 3 | "properties": { 4 | "name": ["jlsuttles"], 5 | "nickname": ["jlsuttles"] 6 | } 7 | }], 8 | "rels": {} 9 | } 10 | 11 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/geo/abbrpattern.html: -------------------------------------------------------------------------------- 1 | 2 |

3 | N 37° 24.491, 4 | W 122° 08.313 5 |

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review/implieditem.html: -------------------------------------------------------------------------------- 1 |
2 | Crepes on Cole 3 |

4.7 out of 5 stars

4 |
-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-geo/abbrpattern.html: -------------------------------------------------------------------------------- 1 | 2 |

3 | N 37° 24.491, 4 | W 122° 08.313 5 |

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/hcard.html: -------------------------------------------------------------------------------- 1 |
2 | Mitchell Baker 3 | (Mozilla Foundation) 4 |
-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/nested.html: -------------------------------------------------------------------------------- 1 |
2 | Mitchell Baker 3 | (Mozilla Foundation) 4 |
-------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | insert_final_newline = true 8 | indent_size = 2 9 | indent_style = space 10 | trim_trailing_whitespace = true 11 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/geo/simpleproperties.html: -------------------------------------------------------------------------------- 1 | We are meeting at 2 | 3 | The Bricklayer's Arms 4 | (Geo: 51.513458: 5 | -0.14812) 6 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-recipe/minimum.html: -------------------------------------------------------------------------------- 1 |
2 |

Toast

3 | 7 |
-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/justaname.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["Frances Berriman"] 6 | } 7 | }], 8 | "rels": {}, 9 | "rel-urls": {} 10 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-geo/justaname.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-geo"], 4 | "properties": { 5 | "name": ["51.513458;-0.14812"] 6 | } 7 | }], 8 | "rels": {}, 9 | "rel-urls": {} 10 | } -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-0.js: -------------------------------------------------------------------------------- 1 | // http://microformats.org/wiki/microformats-2 2 | { 3 | "items": [{ 4 | "type": ["h-card"], 5 | "properties": { 6 | "name": ["Frances Berriman"] 7 | } 8 | }] 9 | } 10 | -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/link_parse.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-mixed/h-card/tworoots.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["Frances Berriman"] 6 | } 7 | }], 8 | "rels": {}, 9 | "rel-urls": {} 10 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/justaname.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "name": ["IndieWebCamp 2012"] 6 | } 7 | }], 8 | "rels": {}, 9 | "rel-urls": {} 10 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-geo/simpleproperties.html: -------------------------------------------------------------------------------- 1 |

We are meeting at 2 | The Bricklayer's Arms 3 | (Geo: 51.513458: 4 | -0.14812) 5 |

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-product/justaname.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-product"], 4 | "properties": { 5 | "name": ["Raspberry Pi"] 6 | } 7 | }], 8 | "rels": {}, 9 | "rel-urls": {} 10 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review/justaname.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-review"], 4 | "properties": { 5 | "name": ["Crepes on Cole"] 6 | } 7 | }], 8 | "rels": {}, 9 | "rel-urls": {} 10 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/justaname.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-entry"], 4 | "properties": { 5 | "name": ["microformats.org at 7"] 6 | } 7 | }], 8 | "rels": {}, 9 | "rel-urls": {} 10 | } -------------------------------------------------------------------------------- /spec/support/lib/microformats/implied_property/url-relative.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/implied_property/url-unnormalized.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/nested-property.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 |
7 | jlsuttles 8 |
9 |
10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/blank_value.js: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "type": [ 5 | "h-entry" 6 | ], 7 | "properties": { 8 | "content": [""] 9 | } 10 | } 11 | ], 12 | "rels": { 13 | }, 14 | "rel-urls": { 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/implied_property/url-pass.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 7 |
8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-1.js: -------------------------------------------------------------------------------- 1 | // http://microformats.org/wiki/microformats-2 2 | { 3 | "items": [{ 4 | "type": ["h-card"], 5 | "properties": { 6 | "name": ["Ben Ward"], 7 | "url": ["http://benward.me"] 8 | } 9 | }] 10 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/geo/hidden.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-geo"], 4 | "properties": { 5 | "latitude": ["51.513458"], 6 | "longitude": ["-0.14812"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-adr/justaname.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-adr"], 4 | "properties": { 5 | "name": ["665 3rd St. Suite 207 San Francisco, CA 94107 U.S.A."] 6 | } 7 | }], 8 | "rels": {}, 9 | "rel-urls": {} 10 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-geo/hidden.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-geo"], 4 | "properties": { 5 | "latitude": ["51.513458"], 6 | "longitude": ["-0.14812"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-resume/justaname.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-resume"], 4 | "properties": { 5 | "name": ["Tim Berners-Lee, invented the World Wide Web."] 6 | } 7 | }], 8 | "rels": {}, 9 | "rel-urls": {} 10 | } -------------------------------------------------------------------------------- /spec/lib/microformats_parse_spec.rb: -------------------------------------------------------------------------------- 1 | describe Microformats, '.parse' do 2 | let(:html) { '

Jessica Lynn Suttles

' } 3 | 4 | it 'returns Collection' do 5 | expect(described_class.parse(html)).to be_kind_of(Microformats::Collection) 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/geo/abbrpattern.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-geo"], 4 | "properties": { 5 | "latitude": ["37.408183"], 6 | "longitude": ["-122.13855"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/format.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["John \n Doe"], 6 | "given-name": ["John"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/geo/simpleproperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-geo"], 4 | "properties": { 5 | "latitude": ["51.513458"], 6 | "longitude": ["-0.14812"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/geo/valuetitleclass.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-geo"], 4 | "properties": { 5 | "latitude": ["51.513458"], 6 | "longitude": ["-0.14812"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/justahyperlink.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["Ben Ward"], 6 | "url": ["http://benward.me/"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-geo/abbrpattern.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-geo"], 4 | "properties": { 5 | "latitude": ["37.408183"], 6 | "longitude": ["-122.13855"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-geo/valuetitleclass.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-geo"], 4 | "properties": { 5 | "latitude": ["51.513458"], 6 | "longitude": ["-0.14812"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | lib-cov 3 | *.seed 4 | *.log 5 | *.csv 6 | *.dat 7 | *.out 8 | *.pid 9 | *.gz 10 | 11 | pids 12 | logs 13 | results 14 | 15 | node_modules 16 | lib 17 | oldhtml 18 | templates/change-log.html 19 | 20 | npm-debug.log 21 | _site 22 | .DS_Store 23 | *.svn-base 24 | 25 | 26 | -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-5.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | Mitchell Baker 6 | (Mozilla Foundation) 7 |
-------------------------------------------------------------------------------- /.simplecov: -------------------------------------------------------------------------------- 1 | require 'simplecov-console' 2 | 3 | formatters = [SimpleCov::Formatter::HTMLFormatter] 4 | 5 | if RSpec.configuration.files_to_run.length > 1 6 | formatters << SimpleCov::Formatter::Console 7 | end 8 | 9 | SimpleCov.start do 10 | formatter SimpleCov::Formatter::MultiFormatter.new(formatters) 11 | end 12 | -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Rohit Khare 5 | 6 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/justahyperlink.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "name": ["IndieWebCamp 2012"], 6 | "url": ["http://indiewebcamp.com/2012"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-product/justahyperlink.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-product"], 4 | "properties": { 5 | "name": ["Raspberry Pi"], 6 | "url": ["http://www.raspberrypi.org/"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review/photo.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-review"], 4 | "properties": { 5 | "name": ["Crepes on Cole"], 6 | "photo": ["http://example.com/images/photo.gif"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/scriptstyletags.html: -------------------------------------------------------------------------------- 1 |
2 | A post 3 |
text bold
4 |
5 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/nested-format-with-property-of-same-name.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 | 7 | 123 Rainbow Lane 8 | 9 | 10 |
11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/baseurl.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | Mitchell Baker 4 | (Mozilla Foundation) 5 | 6 |
-------------------------------------------------------------------------------- /spec/support/lib/microformats/nested-format-without-property.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
Jessica Lynn Suttles
6 |
7 | 8 | G5 9 | 10 |
11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hreview-aggregate/justahyperlink.html: -------------------------------------------------------------------------------- 1 |

2 | 3 | Mediterranean Wraps 4 | - Rated: 5 | 4.5 out of 5 (6 reviews) 6 |

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review/hyperlink.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-review"], 4 | "properties": { 5 | "name": ["Crepes on Cole"], 6 | "url": ["https://plus.google.com/116941523817079328322/about"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mf2/tests", 3 | "type": "library", 4 | "description": "Microformats test suite", 5 | "homepage": "https://github.com/microformats/tests", 6 | "license": "CC0", 7 | "authors": [ 8 | { 9 | "name": "Glenn Jones", 10 | "homepage": "https://glennjones.net/" 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-5.js: -------------------------------------------------------------------------------- 1 | // http://microformats.org/wiki/microformats-2 2 | { 3 | "items": [{ 4 | "type": ["h-card"], 5 | "properties": { 6 | "name": ["Mitchell Baker"], 7 | "url": ["http://blog.lizardwrangler.com/"], 8 | "org": ["Mozilla Foundation"] 9 | } 10 | }] 11 | } -------------------------------------------------------------------------------- /spec/support/lib/microformats/nested-format-with-property.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 | 7 | Jessica Lynn Suttles 8 | 9 |
10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hreview/item.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |

4 | 5 | Crepes on Cole 6 |

7 |

5 out of 5 stars

8 |
-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/impliedurlempty.html: -------------------------------------------------------------------------------- 1 | Jane Doe 2 | Jane Doe 3 |
Jane Doe

4 |
Jane Doe

5 |
Jane Doe

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/relativeurls.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | Mitchell Baker 4 | (Mozilla Foundation) 5 | 6 |
-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/justahyperlink.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-entry"], 4 | "properties": { 5 | "name": ["microformats.org at 7"], 6 | "url": ["http://microformats.org/2012/06/25/microformats-org-at-7"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-geo/simpleproperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-geo"], 4 | "properties": { 5 | "name": ["The Bricklayer's Arms"], 6 | "latitude": ["51.513458"], 7 | "longitude": ["-0.14812"] 8 | } 9 | }], 10 | "rels": {}, 11 | "rel-urls": {} 12 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/varying-text-duplicate-rels.html: -------------------------------------------------------------------------------- 1 | This is a contrived example - not found links like this in the wild: 2 | Asides 3 | B-sides 4 | seasides -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-adr/geourl.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-adr"], 4 | "properties": { 5 | "name": ["Bricklayer's Arms"], 6 | "geo": ["geo:51.526421;-0.081067;crs=wgs84;u=40"], 7 | "locality": ["London"] 8 | } 9 | }], 10 | "rels": {}, 11 | "rel-urls": {} 12 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-adr/lettercase.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-adr"], 4 | "properties": { 5 | "name": ["Bricklayer's Arms"], 6 | "street-address": ["3 Charlotte Road"], 7 | "locality": ["City of London"] 8 | } 9 | }], 10 | "rels": {}, 11 | "rel-urls": {} 12 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/license.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [], 3 | "rels": { 4 | "license": ["http://creativecommons.org/licenses/by/2.5/"] 5 | }, 6 | "rel-urls": { 7 | "http://creativecommons.org/licenses/by/2.5/": { 8 | "text": "cc by 2.5", 9 | "rels": ["license"] 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-9.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | Mitchell Baker 6 | (Mozilla Foundation) 9 |
10 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcalendar/concatenate.html: -------------------------------------------------------------------------------- 1 |
2 | The 4th Microformat party will be on 3 | 4 | , from 5 | to 6 | . 7 |
-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcalendar/concatenate.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "name": ["The 4th Microformat party"], 6 | "start": ["2009-06-26 19:00"], 7 | "end": ["2009-06-26 22:00"] 8 | } 9 | }], 10 | "rels": {}, 11 | "rel-urls": {} 12 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-geo/altitude.html: -------------------------------------------------------------------------------- 1 |

My favourite hill in the lakes is 2 | 3 | Pen-y-ghent 4 | (Geo: 54.155278, 5 | -2.249722). It 6 | raises to 694m. 7 | 8 |

-------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-6.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | Mitchell Baker 6 | (Mozilla Foundation) 9 |
10 | -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-8.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | Mitchell Baker 6 | (Mozilla Foundation) 9 |
10 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/blank_href.js: -------------------------------------------------------------------------------- 1 | { "items": [{ 2 | "type": ["h-card"], 3 | "properties": { 4 | "url": ["http://example.org/", "", "http://twitter.com/jlsuttles"], 5 | "name": ["Jessica Lynn Suttles"], 6 | "bday": ["1990-10-15"], 7 | "content": ["

Vegan. Cat lover. Coder.

"] 8 | } 9 | }], 10 | "rels": {} 11 | } 12 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/rels.js: -------------------------------------------------------------------------------- 1 | { 2 | "items": [], 3 | "rels": { 4 | "friend": ["http://adactio.com/", "http://tantek.com/"], 5 | "met": ["http://adactio.com/", "http://tantek.com/"] 6 | }, 7 | "alternates": [ 8 | {"url": "http://tantek.com/updates.atom", 9 | "type": "application/atom+xml", 10 | "rel": "updates" 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/geo/hidden.html: -------------------------------------------------------------------------------- 1 |

2 | The Bricklayer's Arms 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/concatenate.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "name": ["The 4th Microformat party"], 6 | "start": ["2009-06-26 19:00-0600"], 7 | "end": ["2009-06-26 22:00-0600"] 8 | } 9 | }], 10 | "rels": {}, 11 | "rel-urls": {} 12 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-geo/altitude.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-geo"], 4 | "properties": { 5 | "name": ["Pen-y-ghent"], 6 | "latitude": ["54.155278"], 7 | "longitude": ["-2.249722"], 8 | "altitude": ["694"] 9 | } 10 | }], 11 | "rels": {}, 12 | "rel-urls": {} 13 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review/item.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |

4 | 5 | Crepes on Cole 6 |

7 |

5 out of 5 stars

8 |
-------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-7.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | Mitchell Baker 6 | (Mozilla Foundation) 9 |
10 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/hyperlinkedphoto.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["Rohit Khare"], 6 | "photo": ["http://example.com/images/photo.gif"], 7 | "url": ["http://rohit.khare.org/"] 8 | } 9 | }], 10 | "rels": {}, 11 | "rel-urls": {} 12 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/nofollow.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [], 3 | "rels": { 4 | "nofollow": ["http://microformats.org/wiki/microformats:copyrights"] 5 | }, 6 | "rel-urls": { 7 | "http://microformats.org/wiki/microformats:copyrights": { 8 | "text": "Copyrights", 9 | "rels": ["nofollow"] 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /spec/support/lib/microformats/simple.js: -------------------------------------------------------------------------------- 1 | { "items": [{ 2 | "type": ["h-card"], 3 | "properties": { 4 | "url": ["http://example.org/", "http://flickr.com/", "http://twitter.com/jlsuttles"], 5 | "name": ["Jessica Lynn Suttles"], 6 | "bday": ["1990-10-15"], 7 | "content": ["

Vegan. Cat lover. Coder.

"] 8 | } 9 | }], 10 | "rels": {} 11 | } 12 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/adr/simpleproperties.html: -------------------------------------------------------------------------------- 1 |

2 | 665 3rd St. 3 | Suite 207 4 | San Francisco, 5 | CA 6 | 94107 7 | U.S.A. 8 |

-------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/email.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["John Doe"], 6 | "email": ["mailto:john@example.com", "john@example.com", "mailto:john@example.com?subject=parser-test", "john@example.com"] 7 | } 8 | }], 9 | "rels": {}, 10 | "rel-urls": {} 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/concatenate.html: -------------------------------------------------------------------------------- 1 | 2 | The 4th Microformat party will be on 3 | 4 | , from 5 | 6 | to 7 | . 8 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-geo/hidden.html: -------------------------------------------------------------------------------- 1 |

2 | The Bricklayer's Arms 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |

-------------------------------------------------------------------------------- /spec/support/lib/microformats/rels-with-unnormalized-urls.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Rels Test 5 | 6 | 7 | 8 | 9 |
  • Jessica Dillon
  • 10 | 11 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/impliedurl.html: -------------------------------------------------------------------------------- 1 | Jane Doe 2 | Jane Doe 3 |
    Jane Doe

    4 |
    Jane Doe

    5 |
    Jane Doe

    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-resume/skill.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-resume"], 4 | "properties": { 5 | "name": ["Tim Berners-Lee"], 6 | "summary": ["invented the World Wide Web"], 7 | "skill": ["information systems", "advocacy", "leadership"] 8 | } 9 | }], 10 | "rels": {}, 11 | "rel-urls": {} 12 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review-aggregate/justahyperlink.html: -------------------------------------------------------------------------------- 1 |
    2 |

    Mediterranean Wraps

    3 | 4 | Customers flock to this small restaurant for their 5 | tasty falafel and shawerma wraps and welcoming staff. 6 | 7 | 4.5 out of 5 8 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-adr/simpleproperties.html: -------------------------------------------------------------------------------- 1 |

    2 | 665 3rd St. 3 | Suite 207 4 | San Francisco, 5 | CA 6 | 94107 7 | U.S.A. 8 |

    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/childimplied.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |

    Håkon Wium Lie

    5 | 6 |
    7 |
    -------------------------------------------------------------------------------- /spec/support/lib/microformats/implied_property/url-fail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
    7 | 8 | 9 |
    10 | 11 |
    12 |
    13 | 14 |
    15 |
    16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | require: 2 | - rubocop-rspec 3 | 4 | Metrics/BlockLength: 5 | Exclude: 6 | - microformats.gemspec 7 | - spec/**/*.rb 8 | 9 | Metrics/LineLength: 10 | Enabled: false 11 | 12 | RSpec/MultipleExpectations: 13 | Max: 5 14 | 15 | RSpec/NestedGroups: 16 | Max: 4 17 | 18 | Style/Documentation: 19 | Enabled: false 20 | 21 | Style/FrozenStringLiteralComment: 22 | Enabled: false 23 | -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-2.js: -------------------------------------------------------------------------------- 1 | // http://microformats.org/wiki/microformats-2 2 | { 3 | "items": [{ 4 | "type": ["h-card"], 5 | "properties": { 6 | "name": ["Rohit Khare"], 7 | "url": ["http://rohit.khare.org"], 8 | "photo": ["https://s3.amazonaws.com/twitter_production/profile_images/53307499/180px-Rohit-sq_bigger.jpg"] 9 | } 10 | }] 11 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/geo/valuetitleclass.html: -------------------------------------------------------------------------------- 1 | 2 |

    3 | 4 | 5 | N 51° 51.345, 6 | 7 | 8 | W -0° 14.812 9 | 10 | 11 |

    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/rel-urls.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | post 1 4 | post 2 5 | French mobile homepage -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-geo/valuetitleclass.html: -------------------------------------------------------------------------------- 1 | 2 |

    3 | 4 | 5 | N 51° 51.345, 6 | 7 | 8 | W -0° 14.812 9 | 10 | 11 |

    -------------------------------------------------------------------------------- /spec/support/lib/microformats/rels-that-drop-the-base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Rels without Base Test 5 | 6 | 7 | 8 |
  • Jeremy Keith
  • 9 |
  • Tantek Çelik
  • 10 | 11 | 12 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/rels.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Rels Test 5 | 6 | 7 | 8 | 9 |
  • Jeremy Keith
  • 10 |
  • Tantek Çelik
  • 11 | 12 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/includes/table.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
    Opera
    Chris Mills
    Erik Möller
    -------------------------------------------------------------------------------- /vendor/tests/interface.js: -------------------------------------------------------------------------------- 1 | 2 | 'use strict'; 3 | // This file allows node apps to get the current 4 | // test suite version number programmicatlly 5 | // Glenn Jones 6 | 7 | 8 | if(require.main === module) { 9 | // if they want the app 10 | var app = require('app.js'); 11 | }else{ 12 | // if they want a module interface 13 | var pack = require('./package.json'); 14 | 15 | module.exports = { 16 | 'version': pack.version 17 | } 18 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/impliedvalue-nested.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | Example Author 5 | Home 6 | 7 | Example Post 8 |
    9 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-resume/skill.html: -------------------------------------------------------------------------------- 1 |
    2 |

    3 | Tim Berners-Lee, 4 | invented the World Wide Web. 5 |

    6 | Skills: 7 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/scriptstyletags.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-entry"], 4 | "properties": { 5 | "name": ["A post"], 6 | "content": [{ 7 | "value": "text bold", 8 | "html": "text bold" 9 | }] 10 | } 11 | }], 12 | "rels": {}, 13 | "rel-urls": {} 14 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-entry"], 4 | "properties": { 5 | "name": ["xNotBold Bold"], 6 | "content": [{ 7 | "value": "xNotBold Bold", 8 | "html": "x<y AT&T <b>NotBold</b> Bold" 9 | }] 10 | } 11 | }], 12 | "rels": {}, 13 | "rel-urls": {} 14 | } -------------------------------------------------------------------------------- /spec/support/lib/microformats/nested-format-with-property-of-same-name.js: -------------------------------------------------------------------------------- 1 | { "items": [{ 2 | "type": ["h-card"], 3 | "properties": { 4 | "adr": [{ 5 | "value": "123 Rainbow Lane", 6 | "type": ["h-adr"], 7 | "properties": { 8 | "street-address": ["123 Rainbow Lane"], 9 | "name": ["123 Rainbow Lane"] 10 | } 11 | }], 12 | "name": ["123 Rainbow Lane"] 13 | } 14 | }], 15 | "rels": {} 16 | } 17 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/childimplied.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["Håkon Wium Lie"], 6 | "photo": ["http://upload.wikimedia.org/wikipedia/commons/thumb/9/96/H%C3%A5kon-Wium-Lie-2009-03.jpg/215px-H%C3%A5kon-Wium-Lie-2009-03.jpg"], 7 | "url": ["http://people.opera.com/howcome/"] 8 | } 9 | }], 10 | "rels": {}, 11 | "rel-urls": {} 12 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/adr/simpleproperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-adr"], 4 | "properties": { 5 | "street-address": ["665 3rd St."], 6 | "extended-address": ["Suite 207"], 7 | "locality": ["San Francisco"], 8 | "region": ["CA"], 9 | "postal-code": ["94107"], 10 | "country-name": ["U.S.A."] 11 | } 12 | }], 13 | "rels": {}, 14 | "rel-urls": {} 15 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-adr/geo.html: -------------------------------------------------------------------------------- 1 |

    2 | Bricklayer's Arms 3 | 4 | 3 Charlotte Road, 5 | City of London, 6 | EC2A 3PE, 7 | UK 8 | – 9 | Geo:(51.526421;-0.081067) 10 |

    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/p-property.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["JohnDoe"], 6 | "given-name": ["John"], 7 | "additional-name": ["Peter"], 8 | "family-name": ["Doe"], 9 | "honorific-suffix": ["MSc", "", "", "PHD"], 10 | "org": ["Madgex", "Mozilla"] 11 | } 12 | }], 13 | "rels": {}, 14 | "rel-urls": {} 15 | } -------------------------------------------------------------------------------- /spec/support/lib/microformats/nested-format-with-property.js: -------------------------------------------------------------------------------- 1 | { "items": [{ 2 | "type": ["h-entry"], 3 | "properties": { 4 | "author": [{ 5 | "value": "Jessica Lynn Suttles", 6 | "type": ["h-card", "h-org"], 7 | "properties": { 8 | "url": ["http://twitter.com/jlsuttles"], 9 | "name": ["Jessica Lynn Suttles"] 10 | } 11 | }], 12 | "name": ["Jessica Lynn Suttles"] 13 | } 14 | }], 15 | "rels": {} 16 | } 17 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-adr/simpleproperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-adr"], 4 | "properties": { 5 | "street-address": ["665 3rd St."], 6 | "extended-address": ["Suite 207"], 7 | "locality": ["San Francisco"], 8 | "region": ["CA"], 9 | "postal-code": ["94107"], 10 | "country-name": ["U.S.A."] 11 | } 12 | }], 13 | "rels": {}, 14 | "rel-urls": {} 15 | } -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/blank_href.js: -------------------------------------------------------------------------------- 1 | { "items": [{ 2 | "type": ["h-card"], 3 | "properties": { 4 | "url": ["http://example.org/", "http://example.org/", "http://twitter.com/jlsuttles"], 5 | "name": ["Jessica Lynn Suttles"], 6 | "bday": ["1990-10-15"], 7 | "content": [{ 8 | "value": "Vegan. Cat lover. Coder.", 9 | "html": "

    Vegan. Cat lover. Coder.

    " 10 | }] 11 | } 12 | }], 13 | "rels": {}, 14 | "rel-urls": {} 15 | } 16 | -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/vcp-dates.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
    6 | HomebrewWebsiteClub Berlin will be next on 7 | 8 | 2017-05-31, from 9 | 19:00 (UTC+02:00) 10 | to 21:00. 11 |
    12 | 13 | 14 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/name.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "honorific-prefix": ["Dr"], 6 | "given-name": ["John"], 7 | "additional-name": ["Peter"], 8 | "family-name": ["Doe"], 9 | "honorific-suffix": ["MSc", "PHD"], 10 | "photo": ["http://example.com/images/logo.gif"] 11 | } 12 | }], 13 | "rels": {}, 14 | "rel-urls": {} 15 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-recipe/minimum.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-recipe"], 4 | "properties": { 5 | "name": ["Toast"], 6 | "ingredient": [{ 7 | "value": "Slice of bread", 8 | "html": "Slice of bread" 9 | }, { 10 | "value": "Butter", 11 | "html": "Butter" 12 | }] 13 | } 14 | }], 15 | "rels": {}, 16 | "rel-urls": {} 17 | } -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-9.js: -------------------------------------------------------------------------------- 1 | // http://microformats.org/wiki/microformats-2 2 | { 3 | "items": [{ 4 | "type": ["h-card"], 5 | "properties": { 6 | "name": ["Mitchell Baker"], 7 | "url": ["http://blog.lizardwrangler.com/"] 8 | }, 9 | "children": [{ 10 | "type": ["h-card"], 11 | "properties": { 12 | "name": ["Mozilla Foundation"], 13 | "url": ["http://mozilla.org/"] 14 | } 15 | }] 16 | }] 17 | } -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-8.js: -------------------------------------------------------------------------------- 1 | // http://microformats.org/wiki/microformats-2 2 | { 3 | "items": [{ 4 | "type": ["h-card"], 5 | "properties": { 6 | "name": ["Mitchell Baker"], 7 | "url": ["http://blog.lizardwrangler.com/"] 8 | }, 9 | "children": [{ 10 | "type": ["h-card","h-org"], 11 | "properties": { 12 | "name": ["Mozilla Foundation"], 13 | "url": ["http://mozilla.org/"] 14 | } 15 | }] 16 | }] 17 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-resume/affiliation.html: -------------------------------------------------------------------------------- 1 |
    2 |

    3 | Tim Berners-Lee, 4 | invented the World Wide Web. 5 |

    6 | Belongs to following groups: 7 |

    8 | 9 | W3C 10 | 11 |

    12 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/name.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |
    4 | Dr 5 | John 6 | P 7 | Doe 8 | 9 | PHD 10 |
    11 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hresume/affiliation.html: -------------------------------------------------------------------------------- 1 |
    2 |

    3 | Tim Berners-Lee, 4 | invented the World Wide Web. 5 |

    6 | Belongs to following groups: 7 |

    8 | 9 | W3C 10 | 11 |

    12 |
    -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/blank_src.js: -------------------------------------------------------------------------------- 1 | { "items": [{ 2 | "type": ["h-card"], 3 | "properties": { 4 | "photo": ["http://example.org/"], 5 | "url": ["http://example.org/", "http://flickr.com", "http://twitter.com/jlsuttles"], 6 | "name": ["Jessica Lynn Suttles"], 7 | "bday": ["1990-10-15"], 8 | "content": [{ 9 | "value": "Vegan. Cat lover. Coder.", 10 | "html": "

    Vegan. Cat lover. Coder.

    " 11 | }] 12 | } 13 | }], 14 | "rels": {}, 15 | "rel-urls": {} 16 | } 17 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/varying-text-duplicate-rels.json: -------------------------------------------------------------------------------- 1 | { 2 | "rels": { 3 | "category": [ 4 | "http://ma.tt/category/asides/" 5 | ], 6 | "tag": [ 7 | "http://ma.tt/category/asides/" 8 | ] 9 | }, 10 | "items": [], 11 | "rel-urls": { 12 | "http://ma.tt/category/asides/": { 13 | "rels": [ 14 | "category", 15 | "tag" 16 | ], 17 | "text": "Asides" 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/includes/table.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["Chris Mills"], 6 | "url": ["http://dev.opera.com/"], 7 | "org": ["Opera"] 8 | } 9 | }, { 10 | "type": ["h-card"], 11 | "properties": { 12 | "name": ["Erik Möller"], 13 | "url": ["http://dev.opera.com/"], 14 | "org": ["Opera"] 15 | } 16 | }], 17 | "rels": {}, 18 | "rel-urls": {} 19 | } -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-6.js: -------------------------------------------------------------------------------- 1 | // http://microformats.org/wiki/microformats-2 2 | { 3 | "items": [{ 4 | "type": ["h-card"], 5 | "properties": { 6 | "name": ["Mitchell Baker"], 7 | "url": ["http://blog.lizardwrangler.com/"], 8 | "org": [{ 9 | "value": "Mozilla Foundation", 10 | "type": ["h-card"], 11 | "properties": { 12 | "name": ["Mozilla Foundation"], 13 | "url": ["http://mozilla.org/"] 14 | } 15 | }] 16 | } 17 | }] 18 | } -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-7.js: -------------------------------------------------------------------------------- 1 | // http://microformats.org/wiki/microformats-2 2 | { 3 | "items": [{ 4 | "type": ["h-card"], 5 | "properties": { 6 | "name": ["Mitchell Baker"], 7 | "url": ["http://blog.lizardwrangler.com/"], 8 | "org": [{ 9 | "value": "Mozilla Foundation", 10 | "type": ["h-card", "h-org"], 11 | "properties": { 12 | "name": ["Mozilla Foundation"], 13 | "url": ["http://mozilla.org/"] 14 | } 15 | }] 16 | } 17 | }] 18 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/nested.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["Mitchell Baker"], 6 | "url": ["http://blog.lizardwrangler.com/"] 7 | }, 8 | "children": [{ 9 | "type": ["h-org", "h-card"], 10 | "properties": { 11 | "name": ["Mozilla Foundation"], 12 | "url": ["http://mozilla.org/"] 13 | } 14 | }] 15 | }], 16 | "rels": {}, 17 | "rel-urls": {} 18 | } 19 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review/implieditem.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-review"], 4 | "properties": { 5 | "item": [{ 6 | "value": "Crepes on Cole", 7 | "type": ["h-item"], 8 | "properties": { 9 | "name": ["Crepes on Cole"], 10 | "url": ["http://example.com/crepeoncole"] 11 | } 12 | }], 13 | "rating": ["4.7"] 14 | } 15 | }], 16 | "rels": {}, 17 | "rel-urls": {} 18 | } -------------------------------------------------------------------------------- /spec/support/lib/microformats/implied_property/name-pass.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Jessica 6 | 7 | 8 | 9 |
    10 | Jessica 11 |
    12 | 13 |
    14 | 15 |
    16 | 17 |
    18 |
    19 | Jessica 20 |
    21 |
    22 | 23 |
    24 |
    25 | 26 |
    27 |
    28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/vcp-dates.js: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "type": [ 5 | "h-event" 6 | ], 7 | "properties": { 8 | "summary": [ 9 | { 10 | "value": "HomebrewWebsiteClub Berlin", 11 | "html": "HomebrewWebsiteClub Berlin" 12 | } 13 | ], 14 | "start": [ 15 | "2017-05-31 19:00+0200" 16 | ], 17 | "end": [ 18 | "2017-05-31 21:00" 19 | ] 20 | } 21 | } 22 | ], 23 | "rels": { 24 | }, 25 | "rel-urls": { 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/relative.js: -------------------------------------------------------------------------------- 1 | { "items": [{ 2 | "type": ["h-card"], 3 | "properties": { 4 | "url": ["http://example.org/", "http://example.org/relative/page.html", "http://twitter.com/jlsuttles", "http://example.org/index.html#fragment", "http://example.org/index.html#" ], 5 | "name": ["Jessica Lynn Suttles"], 6 | "bday": ["1990-10-15"], 7 | "content": [{ 8 | "value": "Vegan. Cat lover. Coder.", 9 | "html": "

    Vegan. Cat lover. Coder.

    " 10 | }] 11 | } 12 | }], 13 | "rels": {}, 14 | "rel-urls": {} 15 | } 16 | -------------------------------------------------------------------------------- /bin/microformats: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require 'microformats' 4 | require 'json' 5 | 6 | def print_usage 7 | puts 'Usage: microformats (URL, filepath, or HTML)' 8 | end 9 | 10 | def process_html(html) 11 | collection = Microformats.parse(html) 12 | puts JSON.pretty_generate(JSON[collection.to_json.to_s]) 13 | end 14 | 15 | if STDIN.tty? 16 | if ARGV[0].nil? 17 | print_usage 18 | else 19 | process_html(ARGV[0]) 20 | end 21 | else 22 | html = STDIN.read 23 | 24 | if html.nil? 25 | print_usage 26 | else 27 | process_html(html) 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hreview-aggregate/vevent.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Fullfrontal

    4 |

    A one day JavaScript Conference held in Brighton

    5 |

    6 |
    7 | 8 |

    9 | 9.9 out of 10 | 10 11 | based on 62 reviews 12 |

    13 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-adr/geo.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-adr"], 4 | "properties": { 5 | "name": ["Bricklayer's Arms"], 6 | "label": ["3 Charlotte Road, \n City of London, \n EC2A 3PE, \n UK"], 7 | "street-address": ["3 Charlotte Road"], 8 | "locality": ["City of London"], 9 | "postal-code": ["EC2A 3PE"], 10 | "country-name": ["UK"], 11 | "geo": ["51.526421;-0.081067"] 12 | } 13 | }], 14 | "rels": {}, 15 | "rel-urls": {} 16 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/dt-property.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "name": ["The party"], 6 | "start": [ 7 | "2013-03-14", 8 | "2013-06-25 07:00:00", 9 | "2013-06-26", 10 | "2013-06-27", 11 | "2013-06-28", 12 | "2013-06-29", 13 | "2013-07-01", 14 | "2013-07-02" 15 | ] 16 | } 17 | }], 18 | "rels": {}, 19 | "rel-urls": {} 20 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/attendees.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 | CPJ Online Press Freedom Summit 4 | () in 5 | San Francisco. 6 | Attendees: 7 |
      8 |
    • Brian Warner
    • 9 |
    • Kyle Machulis
    • 10 |
    • Tantek Çelik
    • 11 |
    • Sid Sutter
    • 12 |
    13 |
    14 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review-aggregate/hevent.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Fullfrontal

    4 |

    A one day JavaScript Conference held in Brighton

    5 |

    6 |
    7 | 8 |

    9 | 9.9 out of 10 | 10 11 | based on 62 reviews 12 |

    13 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/relativeurlsempty.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "type": [ 5 | "h-card" 6 | ], 7 | "properties": { 8 | "name": [ 9 | "Max Mustermann" 10 | ], 11 | "url": [ 12 | "http://example.com/profile" 13 | ], 14 | "uid": [ 15 | "http://example.com/profile" 16 | ] 17 | } 18 | } 19 | ], 20 | "rels": {}, 21 | "rel-urls": {} 22 | } 23 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/combining.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | IndieWebCamp 2012 4 | 5 | from 6 | to at 7 | 8 | Geoloqi, 9 | 920 SW 3rd Ave. Suite 400, 10 | Portland, 11 | OR 12 | 13 |
    -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/link_parse.js: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "type": [ 5 | "h-entry" 6 | ], 7 | "properties": { 8 | "name": [ 9 | "Example.com homepage" 10 | ], 11 | "url": [ 12 | "https://example.com/" 13 | ] 14 | } 15 | } 16 | ], 17 | "rels": { 18 | "canonical": [ 19 | "https://example.com/" 20 | ] 21 | }, 22 | "rel-urls": { 23 | "https://example.com/": { 24 | "title": "Example.com homepage", 25 | "rels": [ 26 | "canonical" 27 | ] 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/hcard.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "url": ["http://blog.lizardwrangler.com/"], 6 | "name": ["Mitchell Baker"], 7 | "org": [{ 8 | "value": "Mozilla Foundation", 9 | "type": ["h-card"], 10 | "properties": { 11 | "name": ["Mozilla Foundation"], 12 | "url": ["http://mozilla.org/"] 13 | } 14 | }] 15 | } 16 | }], 17 | "rels": {}, 18 | "rel-urls": {} 19 | } -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/blank_href.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
    6 | 7 | Jessica Lynn Suttles 8 | 9 | 10 | @jlsuttles 11 | 12 | 13 | @jlsuttles 14 | 15 | 18 |
    19 |

    Vegan. Cat lover. Coder.

    20 |
    21 |
    22 | 23 | 24 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/blank_href.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
    6 | 7 | Jessica Lynn Suttles 8 | 9 | 10 | @jlsuttles 11 | 12 | 13 | @jlsuttles 14 | 15 | 18 |
    19 |

    Vegan. Cat lover. Coder.

    20 |
    21 |
    22 | 23 | 24 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hreview/item.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-review"], 4 | "properties": { 5 | "item": [{ 6 | "value": "Crepes on Cole", 7 | "type": ["h-item"], 8 | "properties": { 9 | "photo": ["http://example.com/images/photo.gif"], 10 | "name": ["Crepes on Cole"], 11 | "url": ["http://example.com/crepeoncole"] 12 | } 13 | }], 14 | "rating": ["5"] 15 | } 16 | }], 17 | "rels": {}, 18 | "rel-urls": {} 19 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review/item.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-review"], 4 | "properties": { 5 | "item": [{ 6 | "value": "Crepes on Cole", 7 | "type": ["h-item"], 8 | "properties": { 9 | "photo": ["http://example.com/images/photo.gif"], 10 | "name": ["Crepes on Cole"], 11 | "url": ["http://example.com/crepeoncole"] 12 | } 13 | }], 14 | "rating": ["5"] 15 | } 16 | }], 17 | "rels": {}, 18 | "rel-urls": {} 19 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-mixed/h-card/mixedproperties.html: -------------------------------------------------------------------------------- 1 |
    2 |

    3 | Mozilla Foundation 4 | 5 |

    6 |

    7 | 665 3rd St. 8 | Suite 207 9 | San Francisco, 10 | CA 11 | 94107 12 | U.S.A. 13 |

    14 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hreview-aggregate/justahyperlink.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-review-aggregate"], 4 | "properties": { 5 | "item": [{ 6 | "value": "Mediterranean Wraps", 7 | "type": ["h-item"], 8 | "properties": { 9 | "name": ["Mediterranean Wraps"], 10 | "url": ["http://example.com/mediterraneanwraps"] 11 | } 12 | }], 13 | "rating": ["4.5"], 14 | "count": ["6"] 15 | } 16 | }], 17 | "rels": {}, 18 | "rel-urls": {} 19 | } 20 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-resume/affiliation.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-resume"], 4 | "properties": { 5 | "name": ["Tim Berners-Lee"], 6 | "summary": ["invented the World Wide Web"], 7 | "affiliation": [{ 8 | "type": ["h-card"], 9 | "value": "W3C", 10 | "properties": { 11 | "name": ["W3C"], 12 | "photo": ["http://www.w3.org/Icons/WWW/w3c_home_nb.png"] 13 | } 14 | }] 15 | } 16 | }], 17 | "rels": {}, 18 | "rel-urls": {} 19 | } 20 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
    6 | 7 | Jessica Lynn Suttles 8 | 9 | 10 | @jlsuttles 11 | 12 | 13 | @jlsuttles 14 | 15 | 18 |
    19 |

    Vegan. Cat lover. Coder.

    20 |
    21 |
    22 | 23 | 24 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcalendar/combining.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | IndieWebCamp 2012 4 | 5 | from 6 | to at 7 | 8 | Geoloqi, 9 | 10 | 920 SW 3rd Ave. Suite 400, 11 | Portland, 12 | OR 13 | 14 | 15 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/email.html: -------------------------------------------------------------------------------- 1 |
    2 | John Doe 3 | 14 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hresume/skill.html: -------------------------------------------------------------------------------- 1 |
    2 |

    3 | Tim Berners-Lee, 4 | invented the World Wide Web. 5 |

    6 | Skills: 7 | 12 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/includes/hyperlink.html: -------------------------------------------------------------------------------- 1 |
    2 | Ben Ward 3 | Twitter 4 |
    5 |
    6 | Dan Webb 7 | Twitter 8 |
    9 | 10 |
    11 |

    Twitter

    12 |

    13 | 1355 Market St, 14 | San Francisco, 15 | CA 16 | 94103 17 |

    18 |
    -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/blank_rel.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
    6 | 7 | Jessica Lynn Suttles 8 | 9 | 10 | @jlsuttles 11 | 12 | 13 | @jlsuttles 14 | 15 | 18 |
    19 |

    Vegan. Cat lover. Coder.

    20 |
    21 |
    22 | 23 | 24 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hresume/education.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Tim Berners-Lee

    4 |

    Director of the World Wide Web Foundation

    5 |
    6 |

    Invented the World Wide Web.


    7 |

    8 | The Queen's College, Oxford University, 9 | BA Hons (I) Physics 10 | – 11 | 12 |

    13 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review-aggregate/justahyperlink.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-review-aggregate"], 4 | "properties": { 5 | "item": [{ 6 | "value": "Mediterranean Wraps", 7 | "type": ["h-item"], 8 | "properties": { 9 | "name": ["Mediterranean Wraps"] 10 | } 11 | }], 12 | "summary": ["Customers flock to this small restaurant for their \n tasty falafel and shawerma wraps and welcoming staff."], 13 | "rating": ["4.5"] 14 | } 15 | }], 16 | "rels": {}, 17 | "rel-urls": {} 18 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-resume/education.html: -------------------------------------------------------------------------------- 1 |
    2 |

    Tim Berners-Lee

    3 |
    4 |

    Director of the World Wide Web Foundation

    5 |
    6 |

    Invented the World Wide Web.


    7 |

    8 | The Queen's College, Oxford University, 9 | BA Hons (I) Physics 10 | – 11 | 12 |

    13 |
    -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/blank_src.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
    6 | 7 | 8 | Jessica Lynn Suttles 9 | 10 | 11 | @jlsuttles 12 | 13 | 14 | @jlsuttles 15 | 16 | 19 |
    20 |

    Vegan. Cat lover. Coder.

    21 |
    22 |
    23 | 24 | 25 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcalendar/ampm.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "name": ["The 4th Microformat party"], 6 | "start": [ 7 | "2009-06-26 19:00:00", 8 | "2009-06-26 07:00:00", 9 | "2009-06-26 19:00", 10 | "2009-06-26 19:00", 11 | "2009-06-26 19:00", 12 | "2009-06-26 19:00", 13 | "2009-06-26 19:00", 14 | "2009-06-26 19:00", 15 | "2009-06-26 07:00" 16 | ] 17 | } 18 | }], 19 | "rels": {}, 20 | "rel-urls": {} 21 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcalendar/attendees.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 | CPJ Online Press Freedom Summit 4 | () in 5 | San Francisco. 6 | Attendees: 7 |
      8 |
    • Brian Warner
    • 9 |
    • Kyle Machulis
    • 10 |
    • Tantek Çelik
    • 11 |
    • Sid Sutter
    • 12 |
    13 |
    14 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/extendeddescription.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "photo": ["http://blog.mozilla.org/press/files/2012/04/mitchell-baker.jpg"], 6 | "url": ["http://blog.lizardwrangler.com/", "https://twitter.com/MitchellBaker"], 7 | "name": ["Mitchell Baker"], 8 | "org": ["Mozilla Foundation"], 9 | "note": ["Mitchell is responsible for setting the direction and scope of the Mozilla Foundation and its activities."], 10 | "category": ["Strategy", "Leadership"] 11 | } 12 | }], 13 | "rels": {}, 14 | "rel-urls": {} 15 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/ampm.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "name": ["The 4th Microformat party"], 6 | "start": [ 7 | "2009-06-26 19:00:00", 8 | "2009-06-26 07:00:00", 9 | "2009-06-26 19:00", 10 | "2009-06-26 19:00", 11 | "2009-06-26 19:00", 12 | "2009-06-26 19:00", 13 | "2009-06-26 19:00", 14 | "2009-06-26 19:00", 15 | "2009-06-26 07:00" 16 | ] 17 | } 18 | }], 19 | "rels": {}, 20 | "rel-urls": {} 21 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/includes/hcarditemref.html: -------------------------------------------------------------------------------- 1 |
    2 | Brendan Eich 3 |
    4 |
    5 | Mitchell Baker 6 |
    7 | 8 |

    Mozilla

    9 |

    10 | 665 3rd St. 11 | Suite 207 12 | San Francisco, 13 | CA 14 | 94107 15 | U.S.A. 16 |

    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/extendeddescription.html: -------------------------------------------------------------------------------- 1 |
    2 | photo of Mitchell 3 |

    4 | Mitchell Baker 5 | (@MitchellBaker) 6 | Mozilla Foundation 7 |

    8 |

    Mitchell is responsible for setting the direction and scope of the Mozilla Foundation and its activities.

    9 |

    Strategy and Leadership

    10 |
    -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-4.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 | 4 | IndieWebCamp 2012 5 | 6 | from 7 | to at 8 | 9 | 10 | Geoloqi 11 | , 12 | 920 SW 3rd Ave. Suite 400, 13 | Portland, 14 | OR 15 | 16 |
    17 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/implied_property/photo-pass.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
    10 | 11 |
    12 | 13 |
    14 | 15 | 16 | 17 |
    18 |
    19 | 20 |
    21 |
    22 | 23 |
    24 |
    25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /vendor/tests/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "Glenn Jones", 3 | "name": "microformat-tests", 4 | "description": "A microformat 2 testsuite", 5 | "version": "0.1.26", 6 | "license": "CC0-1.0", 7 | "repository": { 8 | "type": "git", 9 | "url": "git://github.com/microformats/tests.git" 10 | }, 11 | "engines": { 12 | "node": ">= 0.12.x" 13 | }, 14 | "main": "interface.js", 15 | "scripts": { 16 | "test": "echo \"Error: no test specified\" && exit 1" 17 | }, 18 | "dependencies": { 19 | "blipp": "2.1.x", 20 | "boom": "2.7.x", 21 | "good": "6.1.x", 22 | "good-console": "5.0.x", 23 | "handlebars": "4.0.x", 24 | "hapi": "11.1.x", 25 | "joi": "6.4.x" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/u-property.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-entry"], 4 | "properties": { 5 | "name": ["microformats.org at 7"], 6 | "url": ["http://microformats.org/", "http://microformats.org/2012/06/25/microformats-org-at-7", "http://microformats.org/2012/06/25/microformats-org-at-7", "http://microformats.org/", "http://microformats.org/wiki/microformats2-parsing", "http://microformats.org/wiki/value-class-pattern", "http://microformats.org/wiki/", "http://microformats.org/discuss"], 7 | "photo": ["http://example.com/images/logo.gif", "http://example.com/posterimage.jpg"] 8 | } 9 | }], 10 | "rels": {}, 11 | "rel-urls": {} 12 | } -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-3.js: -------------------------------------------------------------------------------- 1 | // http://microformats.org/wiki/microformats-2 2 | { 3 | "items": [{ 4 | "type": ["h-card"], 5 | "properties": { 6 | "photo": ["https://webfwd.org/content/about-experts/300.mitchellbaker/mentor_mbaker.jpg"], 7 | "name": ["Mitchell Baker"], 8 | "url": [ 9 | "http://blog.lizardwrangler.com/", 10 | "https://twitter.com/MitchellBaker" 11 | ], 12 | "org": ["Mozilla Foundation"], 13 | "note": ["Mitchell is responsible for setting the direction and scope of the Mozilla Foundation and its activities."], 14 | "category": [ 15 | "Strategy", 16 | "Leadership" 17 | ] 18 | } 19 | }] 20 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-mixed/h-card/mixedproperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["Mozilla Foundation"], 6 | "org": ["Mozilla Foundation"], 7 | "url": ["http://mozilla.org/"] 8 | }, 9 | "children" : [{ 10 | "type": ["h-adr"], 11 | "properties": { 12 | "street-address": ["665 3rd St."], 13 | "extended-address": ["Suite 207"], 14 | "locality": ["San Francisco"], 15 | "region": ["CA"], 16 | "postal-code": ["94107"] 17 | } 18 | }] 19 | }], 20 | "rels": {}, 21 | "rel-urls": {} 22 | } 23 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/baseurl.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": [ 4 | "h-card" 5 | ], 6 | "properties": { 7 | "name": [ 8 | "Mitchell Baker" 9 | ], 10 | "url": ["http://blog.lizardwrangler.com/"], 11 | "org": [{ 12 | "value": "Mozilla Foundation", 13 | "type": [ 14 | "h-card" 15 | ], 16 | "properties": { 17 | "name": ["Mozilla Foundation"], 18 | "url": ["http://example.org/bios/mitchell-baker/"] 19 | } 20 | }], 21 | "photo": ["http://example.org/images/photo.gif"] 22 | } 23 | }], 24 | "rels": {}, 25 | "rel-urls": {} 26 | } 27 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review-aggregate/hevent.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-review-aggregate"], 4 | "properties": { 5 | "item": [{ 6 | "value": "Fullfrontal", 7 | "type": ["h-event"], 8 | "properties": { 9 | "name": ["Fullfrontal"], 10 | "description": ["A one day JavaScript Conference held in Brighton"], 11 | "start": ["2012-11-09"] 12 | } 13 | }], 14 | "rating": ["9.9"], 15 | "average": ["9.9"], 16 | "best": ["10"], 17 | "count": ["62"] 18 | } 19 | }], 20 | "rels": {}, 21 | "rel-urls": {} 22 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcalendar/time.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "name": ["The 4th Microformat party"], 6 | "start": [ 7 | "2009-06-26 19:00:00-0800", 8 | "2009-06-26 19:00:00-0800", 9 | "2009-06-26 19:00:00+0800", 10 | "2009-06-26 19:00:00Z", 11 | "2009-06-26 19:00:00", 12 | "2009-06-26 19:00-0800", 13 | "2009-06-26 19:00+0800", 14 | "2009-06-26 19:00Z", 15 | "2009-06-26 19:00" 16 | ], 17 | "end": ["2013-034"] 18 | } 19 | }], 20 | "rels": {}, 21 | "rel-urls": {} 22 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hreview-aggregate/hcard.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Mediterranean Wraps

    4 |

    5 | 6 | 433 S California Ave, 7 | Palo Alto, 8 | CA - 9 | 10 | (650) 321-8189 11 |

    12 |
    13 |

    14 | 9.2 out of 15 | 10 16 | based on 17 reviews 17 |

    18 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hreview-aggregate/vevent.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-review-aggregate"], 4 | "properties": { 5 | "item": [{ 6 | "value": "Fullfrontal", 7 | "type": ["h-event"], 8 | "properties": { 9 | "name": ["Fullfrontal"], 10 | "description": ["A one day JavaScript Conference held in Brighton"], 11 | "start": ["2012-11-09"] 12 | } 13 | }], 14 | "rating": ["9.9"], 15 | "average": ["9.9"], 16 | "best": ["10"], 17 | "count": ["62"] 18 | } 19 | }], 20 | "rels": {}, 21 | "rel-urls": {} 22 | } 23 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hresume/work.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |
    4 |

    Tim Berners-Lee

    5 |

    Director of the World Wide Web Foundation

    6 |
    7 |

    Invented the World Wide Web.


    8 |
    9 |

    Director

    10 |

    World Wide Web Foundation

    11 |

    12 | – Present 13 | 14 |

    15 |
    16 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/xfn-elsewhere.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-mixed/h-resume/mixedroots.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |
    4 |

    Tim Berners-Lee

    5 |

    Director of the World Wide Web Foundation

    6 |
    7 |

    Invented the World Wide Web.


    8 |
    9 |

    Director

    10 |

    World Wide Web Foundation

    11 |

    12 | – Present 13 | 14 |

    15 |
    16 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/single.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["John Doe"], 6 | "given-name": ["John"], 7 | "sort-string": ["John"], 8 | "bday": ["2000-01-01 00:00:00-08:00"], 9 | "role": ["Designer"], 10 | "geo": [{ 11 | "value": "30.267991;-97.739568", 12 | "type": ["h-geo"], 13 | "properties": {} 14 | }], 15 | "tz": ["-05:00"], 16 | "uid": ["http://example.com/profiles/johndoe"], 17 | "class": ["Public"], 18 | "rev": ["2008-01-01 13:45:00"] 19 | } 20 | }], 21 | "rels": {}, 22 | "rel-urls": {} 23 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-resume/work.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    Tim Berners-Lee

    4 |
    5 |

    Director of the World Wide Web Foundation

    6 |
    7 |

    Invented the World Wide Web.


    8 |
    9 |

    Director

    10 |

    World Wide Web Foundation

    11 |

    12 | – Present 13 | 14 |

    15 |
    16 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/relativeurls.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": [ 4 | "h-card" 5 | ], 6 | "properties": { 7 | "name": [ 8 | "Mitchell Baker" 9 | ], 10 | "url": ["http://blog.lizardwrangler.com/"], 11 | "org": [ 12 | { 13 | "value": "Mozilla Foundation", 14 | "type": [ 15 | "h-card" 16 | ], 17 | "properties": { 18 | "name": ["Mozilla Foundation"], 19 | "url": ["http://example.com/bios/mitchell-baker/"] 20 | } 21 | } 22 | ], 23 | "photo": ["http://example.com/bios/mitchell-baker/picture.jpeg"] 24 | } 25 | }], 26 | "rels": {}, 27 | "rel-urls": {} 28 | } 29 | -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-3.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 | photo of Mitchell 5 | Mitchell Baker 8 | (@MitchellBaker) 11 | Mozilla Foundation 12 |

    13 | Mitchell is responsible for setting the direction and scope of the Mozilla Foundation and its activities. 14 |

    15 | Strategy 16 | Leadership 17 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/impliedname.html: -------------------------------------------------------------------------------- 1 |
    2 |

    This should imply a p-name

    3 |
    4 | 5 |
    6 |

    This should not imply a p-name since it has an p-* property.

    7 |
    8 | 9 |
    10 |

    This should not imply a p-name since it has an e-* property.

    11 |
    12 | 13 |
    14 |
    15 |

    I really like Microformats

    16 |
    17 |

    This should not imply a p-name since it has a nested microformat.

    18 |
    19 | 20 | 21 | -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/relative.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
    6 | 7 | Jessica Lynn Suttles 8 | 9 | 10 | @jlsuttles 11 | 12 | 13 | @jlsuttles 14 | 15 | 16 | something on this page 17 | 18 | 19 | this page 20 | 21 | 24 |
    25 |

    Vegan. Cat lover. Coder.

    26 |
    27 |
    28 | 29 | 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | *.rbc 3 | /.config 4 | /coverage/ 5 | /InstalledFiles 6 | /pkg/ 7 | /spec/reports/ 8 | /spec/examples.txt 9 | /test/tmp/ 10 | /test/version_tmp/ 11 | /tmp/ 12 | 13 | # Used by dotenv library to load environment variables. 14 | # .env 15 | 16 | # Documentation cache and generated files: 17 | /.yardoc/ 18 | /_yardoc/ 19 | /doc/ 20 | /rdoc/ 21 | 22 | # Environment normalization: 23 | /.bundle/ 24 | /vendor/bundle 25 | /lib/bundler/man/ 26 | 27 | # for a library or gem, you might want to ignore these files since the code is 28 | # intended to run in multiple environments; otherwise, check them in: 29 | Gemfile.lock 30 | # .ruby-version 31 | # .ruby-gemset 32 | 33 | # unless supporting rvm < 1.11.0 or doing something fancy, ignore this: 34 | .rvmrc 35 | 36 | #vim files being edited 37 | *.swp 38 | -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-4.js: -------------------------------------------------------------------------------- 1 | // http://microformats.org/wiki/microformats-2 2 | { 3 | "items": [{ 4 | "type": ["h-event"], 5 | "properties": { 6 | "name": ["IndieWebCamp 2012"], 7 | "url": ["http://indiewebcamp.com/2012"], 8 | "start": ["2012-06-30"], 9 | "end": ["2012-07-01"], 10 | "location": [{ 11 | "value": "Geoloqi, 920 SW 3rd Ave. Suite 400, Portland, OR", 12 | "type": ["h-card"], 13 | "properties": { 14 | "name": ["Geoloqi"], 15 | "org": ["Geoloqi"], 16 | "url": ["http://geoloqi.com/"], 17 | "street-address": ["920 SW 3rd Ave. Suite 400"], 18 | "locality": ["Portland"], 19 | "region": ["Oregon"] 20 | } 21 | }] 22 | } 23 | }] 24 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/urlincontent.html: -------------------------------------------------------------------------------- 1 |
    2 |

    Expanding URLs within HTML content

    3 | 13 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/time.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "name": ["The 4th Microformat party"], 6 | "start": [ 7 | "2009-06-26 19:00:00-0800", 8 | "2009-06-26 19:00:00-0800", 9 | "2009-06-26 19:00:00+0800", 10 | "2009-06-26 19:00:00Z", 11 | "2009-06-26 19:00:00", 12 | "2009-06-26 19:00-0800", 13 | "2009-06-26 19:00+0800", 14 | "2009-06-26 19:00Z", 15 | "2009-06-26 19:00" 16 | ], 17 | "end": [ 18 | "2013-034", 19 | "2013-06-27 15:34" 20 | ] 21 | } 22 | }], 23 | "rels": {}, 24 | "rel-urls": {} 25 | } -------------------------------------------------------------------------------- /lib/microformats.rb: -------------------------------------------------------------------------------- 1 | require 'nokogiri' 2 | require 'open-uri' 3 | require 'json' 4 | require 'set' 5 | 6 | require 'microformats/version' 7 | require 'microformats/absolute_uri' 8 | require 'microformats/parser_core' 9 | require 'microformats/parser' 10 | require 'microformats/format_parser' 11 | require 'microformats/property_parser' 12 | require 'microformats/time_property_parser' 13 | require 'microformats/results/parser_result' 14 | require 'microformats/results/collection' 15 | require 'microformats/results/property_set' 16 | 17 | module Microformats 18 | class << self 19 | def parse(html, base: nil) 20 | Parser.new.parse(html, base: base) 21 | end 22 | 23 | def read_html(html) 24 | Parser.new.read_html(html) 25 | end 26 | end 27 | 28 | class InvalidPropertyPrefix < StandardError; end 29 | end 30 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/dates.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "type": [ 5 | "h-event" 6 | ], 7 | "properties": { 8 | "name": [ 9 | "The 4th Microformat party" 10 | ], 11 | "start": [ 12 | "2009-06-26T19:00-08:00", 13 | "2009-06-26T19:00-08", 14 | "2009-06-26T19:00-0800", 15 | "2009-06-26T19:00+0800", 16 | "2009-06-26T19:00+08:00", 17 | "2009-06-26T19:00Z", 18 | "2009-06-26t19:00-08:00", 19 | "2009-06-26 19:00:00-08:00" 20 | ] 21 | } 22 | } 23 | ], 24 | "rels": {}, 25 | "rel-urls": {} 26 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hresume/affiliation.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-resume"], 4 | "properties": { 5 | "contact": [{ 6 | "value": "Tim Berners-Lee", 7 | "type": ["h-card"], 8 | "properties": { 9 | "name": ["Tim Berners-Lee"] 10 | } 11 | }], 12 | "summary": ["invented the World Wide Web"], 13 | "affiliation": [{ 14 | "value": "W3C", 15 | "type": ["h-card"], 16 | "properties": { 17 | "name": ["W3C"], 18 | "photo": ["http://www.w3.org/Icons/WWW/w3c_home_nb.png"] 19 | } 20 | }] 21 | } 22 | }], 23 | "rels": {}, 24 | "rel-urls": {} 25 | } 26 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-resume/contact.html: -------------------------------------------------------------------------------- 1 |
    2 |

    Tim Berners-Lee

    3 |

    Invented the World Wide Web.


    4 |
    5 |

    MIT

    6 |

    7 | 32 Vassar Street, 8 | Room 32-G524, 9 | Cambridge, 10 | MA 11 | 02139, 12 | USA. 13 |

    14 |

    Tel:+1 (617) 253 5702

    15 |

    Email:timbl@w3.org

    16 |
    17 |
    -------------------------------------------------------------------------------- /lib/microformats/absolute_uri.rb: -------------------------------------------------------------------------------- 1 | module Microformats 2 | class AbsoluteUri 3 | attr_accessor :base, :relative 4 | 5 | def initialize(relative, base: nil) 6 | @base = base 7 | @relative = relative 8 | @base = base.strip unless base.nil? 9 | @relative = relative.strip unless relative.nil? 10 | end 11 | 12 | def absolutize 13 | return relative if base.nil? 14 | return base if relative.nil? || relative == '' 15 | return relative if relative =~ %r{^https?://} 16 | return base + relative if relative =~ /^#/ 17 | 18 | uri = URI.parse(relative) 19 | uri = URI.join(base.to_s, relative.to_s) if base && !uri.absolute? 20 | 21 | uri.normalize! 22 | uri.to_s 23 | rescue URI::BadURIError, URI::InvalidURIError 24 | relative.to_s 25 | end 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review-aggregate/simpleproperties.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Mediterranean Wraps

    4 |

    5 | 433 S California Ave, 6 | Palo Alto, 7 | CA - 8 | (650) 321-8189 9 |

    10 |
    11 | Customers flock to this small restaurant for their 12 | tasty falafel and shawerma wraps and welcoming staff. 13 | 14 | 9.2 out of 15 | 10 16 | based on 17 reviews 17 | 18 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/dates.html: -------------------------------------------------------------------------------- 1 |
    2 |

    The 4th Microformat party will be on:

    3 |
      4 |
    • 5 |
    • 6 |
    • 7 |
    • 8 |
    • 9 |
    • 10 |
    • 11 |
    • 12 |
    13 |
    -------------------------------------------------------------------------------- /spec/lib/microformats/property_set_spec.rb: -------------------------------------------------------------------------------- 1 | describe Microformats::PropertySet do 2 | let(:html) { '

    Jessica Lynn Suttles

    ' } 3 | let(:property_set) { Microformats.parse(html).items[0].properties } 4 | 5 | it 'is accessible as a hash []' do 6 | expect(property_set['name'][0]).to eq('Jessica Lynn Suttles') 7 | end 8 | 9 | it 'can convert to hash' do 10 | expect(property_set.to_hash['name'][0]).to eq('Jessica Lynn Suttles') 11 | end 12 | 13 | it 'can convert to hash by to_h' do 14 | expect(property_set.to_h['name'][0]).to eq('Jessica Lynn Suttles') 15 | end 16 | 17 | it 'converts to json' do 18 | expect(property_set.to_json).to eq('{"name":["Jessica Lynn Suttles"]}') 19 | end 20 | 21 | it 'converts to string' do 22 | expect(property_set.to_s).to eq(property_set.to_h.to_s) 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hresume/contact.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Tim Berners-Lee

    4 |

    MIT

    5 |

    6 | 32 Vassar Street, 7 | Room 32-G524, 8 | Cambridge, 9 | MA 10 | 02139, 11 | USA. 12 | (Work) 13 |

    14 |

    Tel:+1 (617) 253 5702

    15 |

    Email:

    16 |
    17 |

    Invented the World Wide Web.

    18 |
    -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: [push, pull_request] 3 | jobs: 4 | analyze: 5 | name: Analyze 6 | permissions: 7 | contents: read 8 | security-events: write 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v3 12 | - uses: github/codeql-action/init@v2 13 | with: 14 | languages: ruby 15 | - uses: github/codeql-action/analyze@v2 16 | test: 17 | name: Test 18 | runs-on: ubuntu-latest 19 | strategy: 20 | fail-fast: false 21 | matrix: 22 | # See: https://github.com/actions/runner/issues/849 23 | ruby: ["2.7", "3.0", "3.1", "3.2"] 24 | steps: 25 | - uses: actions/checkout@v3 26 | - uses: ruby/setup-ruby@v1 27 | with: 28 | bundler-cache: true 29 | ruby-version: ${{ matrix.ruby }} 30 | - run: bundle exec rspec 31 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/impliedvalue-nested.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-entry"], 4 | "properties": { 5 | "in-reply-to": [{ 6 | "type": ["h-cite"], 7 | "properties": { 8 | "name": ["Example Post"], 9 | "url": ["http://example.com/post"], 10 | "author": [{ 11 | "type": ["h-card"], 12 | "properties": { 13 | "url": ["http://example.com"], 14 | "name": ["Example Author"] 15 | }, 16 | "value": "Example Author" 17 | }] 18 | }, 19 | "value": "http://example.com/post" 20 | }] 21 | } 22 | }], 23 | "rels": {}, 24 | "rel-urls": {} 25 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/single.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 |
    John Doe
    4 |
    Birthday: January 1st, 2000
    5 |
    Role: Designer
    6 |
    Location: Brighton
    7 |
    Time zone: Eastern Standard Time
    8 | 9 |
    Profile details: 10 |
    Profile id: http://example.com/profiles/johndoe
    11 |
    Details are: Public
    12 |
    Last updated: January 1st, 2008 - 13:45
    13 |
    14 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/combining.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "name": ["IndieWebCamp 2012"], 6 | "url": ["http://indiewebcamp.com/2012"], 7 | "start": ["2012-06-30"], 8 | "end": ["2012-07-01"], 9 | "location": [{ 10 | "value": "Geoloqi", 11 | "type": ["h-card"], 12 | "properties": { 13 | "name": ["Geoloqi"], 14 | "org": ["Geoloqi"], 15 | "url": ["http://geoloqi.com/"], 16 | "street-address": ["920 SW 3rd Ave. Suite 400"], 17 | "locality": ["Portland"], 18 | "region": ["Oregon"] 19 | } 20 | }] 21 | } 22 | }], 23 | "rels": {}, 24 | "rel-urls": {} 25 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/dt-property.html: -------------------------------------------------------------------------------- 1 | 2 | The party will be on 3 | 4 |

    5 | 6 | March 14th 2013 7 |

    8 |

    9 | , from 10 | 07:00:00am 11 |

    12 | 13 |

    14 | 15 | 16 | Just added, 17 | Removed 18 |

    19 | June 29 20 | 21 |

    2013-07-02

    22 | 23 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/p-property.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | John 5 | P 6 | Doe 7 | 8 | 9 | 10 | 11 |
    BSc
    12 |
    BA 13 | 14 | 15 | PHD 16 | company logos 17 | 18 | Madgex 19 | Mozilla 20 | 21 |
    -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/blank_rel.js: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "type": [ 5 | "h-card" 6 | ], 7 | "properties": { 8 | "url": [ 9 | "http://example.org/", 10 | "http://flickr.com", 11 | "http://twitter.com/jlsuttles" 12 | ], 13 | "name": [ 14 | "Jessica Lynn Suttles" 15 | ], 16 | "bday": [ 17 | "1990-10-15" 18 | ], 19 | "content": [ 20 | { 21 | "value": "Vegan. Cat lover. Coder.", 22 | "html": "

    Vegan. Cat lover. Coder.

    " 23 | } 24 | ] 25 | } 26 | } 27 | ], 28 | "rels": { 29 | "me": [ 30 | "http://twitter.com/jlsuttles" 31 | ] 32 | }, 33 | "rel-urls": { 34 | "http://twitter.com/jlsuttles": { 35 | "text": "@jlsuttles", 36 | "rels": [ 37 | "me" 38 | ] 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /spec/lib/microformats_read_html_spec.rb: -------------------------------------------------------------------------------- 1 | describe Microformats, '.read_html' do 2 | context 'when given a string of HTML' do 3 | let(:input) { '

    Jessica Lynn Suttles

    ' } 4 | 5 | it 'returns the HTML' do 6 | expect(described_class.read_html(input)).to include(input) 7 | end 8 | end 9 | 10 | context 'when given a file path' do 11 | let(:input) { 'spec/support/lib/microformats/simple.html' } 12 | 13 | it 'returns the HTML' do 14 | expect(described_class.read_html(input)).to include('
    ') 15 | end 16 | end 17 | 18 | context 'when given a URL' do 19 | let(:url) { 'https://example.com' } 20 | 21 | before do 22 | stub_request(:get, url).to_return(status: 200, body: 'example') 23 | end 24 | 25 | it 'returns the HTML' do 26 | expect(described_class.read_html(url)).to eq('example') 27 | end 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-resume/contact.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-resume"], 4 | "properties": { 5 | "name": ["Tim Berners-Lee"], 6 | "summary": ["Invented the World Wide Web."], 7 | "contact": [{ 8 | "value": "MIT", 9 | "type": ["h-card"], 10 | "properties": { 11 | "name": ["MIT"], 12 | "street-address": ["32 Vassar Street"], 13 | "extended-address": ["Room 32-G524"], 14 | "locality": ["Cambridge"], 15 | "region": ["MA"], 16 | "postal-code": ["02139"], 17 | "country-name": ["USA"], 18 | "tel": ["+1 (617) 253 5702"], 19 | "email": ["mailto:timbl@w3.org"] 20 | } 21 | }] 22 | } 23 | }], 24 | "rels": {}, 25 | "rel-urls": {} 26 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review-aggregate/simpleproperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-review-aggregate"], 4 | "properties": { 5 | "item": [{ 6 | "value": "Mediterranean Wraps", 7 | "type": ["h-card"], 8 | "properties": { 9 | "name": ["Mediterranean Wraps"], 10 | "street-address": ["433 S California Ave"], 11 | "locality": ["Palo Alto"], 12 | "region": ["CA"], 13 | "tel": ["(650) 321-8189"] 14 | } 15 | }], 16 | "summary": ["Customers flock to this small restaurant for their \n tasty falafel and shawerma wraps and welcoming staff."], 17 | "rating": ["9.2"], 18 | "average": ["9.2"], 19 | "best": ["10"], 20 | "count": ["17"] 21 | } 22 | }], 23 | "rels": {}, 24 | "rel-urls": {} 25 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/duplicate-rels.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | Asides 5 | 6 | 8 | 9 | Asides 10 | 11 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/rel-urls.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [], 3 | "rels": { 4 | "author": [ "http://example.com/a", "http://example.com/b" ], 5 | "in-reply-to": [ "http://example.com/1", "http://example.com/2" ], 6 | "home": [ "http://example.com/fr" ], 7 | "alternate": [ "http://example.com/fr" ] 8 | }, 9 | "rel-urls": { 10 | "http://example.com/a": { 11 | "rels": ["author"], 12 | "text": "author a" 13 | }, 14 | "http://example.com/b": { 15 | "rels": ["author"], 16 | "text": "author b" 17 | }, 18 | "http://example.com/1": { 19 | "rels": ["in-reply-to"], 20 | "text": "post 1" 21 | }, 22 | "http://example.com/2": { 23 | "rels": ["in-reply-to"], 24 | "text": "post 2" 25 | }, 26 | "http://example.com/fr": { 27 | "rels": ["alternate", "home"], 28 | "media": "handheld", 29 | "hreflang": "fr", 30 | "text": "French mobile homepage" 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-product/simpleproperties.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    Raspberry Pi

    4 | 5 |

    The Raspberry Pi is a credit-card sized computer that plugs into your TV and a keyboard. It’s a capable little PC which can be used for many of the things that your desktop PC does, like spreadsheets, word-processing and games. It also plays high-definition video. We want to see it being used by kids all over the world to learn programming.

    6 | More info about the Raspberry Pi 7 |

    £29.95

    8 |

    4.5 out of 5

    9 |

    Categories: Computer, Education

    10 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-adr/lettercase.html: -------------------------------------------------------------------------------- 1 |

    2 | Bricklayer's Arms 3 | 3 Charlotte Road, 4 | City of London, 5 | EC2A 3PE, 6 | UK 7 |

    8 |

    9 | Bricklayer's Arms 10 | 3 Charlotte Road, 11 | City of London, 12 | EC2A 3PE, 13 | UK 14 |

    15 |

    16 | Bricklayer's Arms 17 | 3 Charlotte Road, 18 | City of London, 19 | EC2A 3PE, 20 | UK 21 |

    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/impliedphoto.html: -------------------------------------------------------------------------------- 1 | Jane Doe 2 | Jane Doe 3 | 4 |
    Jane Doe
    5 |
    Jane Doe
    6 | 7 |
    Jane Doe
    8 |
    Jane Doe
    9 | 10 | 11 |
    Jane DoeJane Doe
    12 |
    Jane Doe
    13 |
    John Doe
    14 | 15 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/implied_property/name-fail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
    6 | Jessica 7 | Shane 8 |
    9 | 10 |
    11 | 12 | 13 |
    14 | 15 |
    16 |
    17 | Jessica 18 | Shane 19 |
    20 |
    21 | 22 |
    23 |
    24 |
    25 | Jessica 26 |
    27 |
    28 | 29 |
    30 |
    31 | 32 | 33 |
    34 |
    35 | 36 |
    37 |
    38 |
    39 | 40 |
    41 |
    42 | 43 |
    44 |
    45 |
    46 | Jessica 47 |
    48 |
    49 |
    50 | 51 |
    52 |
    53 |
    54 | 55 |
    56 |
    57 |
    58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hproduct/simpleproperties.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    Raspberry Pi

    4 | 5 |

    The Raspberry Pi is a credit-card sized computer that plugs into your TV and a keyboard. It’s a capable little PC which can be used for many of the things that your desktop PC does, like spreadsheets, word-processing and games. It also plays high-definition video. We want to see it being used by kids all over the world to learn programming.

    6 | More info about the Raspberry Pi 7 |

    £29.95

    8 |

    4.5 out of 5

    9 |

    Categories: 10 | , 11 | 12 |

    13 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/includes/object.html: -------------------------------------------------------------------------------- 1 |
    2 | HTML5 & CSS3 latest features in action! - 3 | David Rousset - 4 | 5 | 6 |
    7 |
    8 | Building High-Performing JavaScript for Modern Engines - 9 | John-David Dalton and 10 | Amanda Silver - 11 | 12 | 13 |
    14 | 15 | 16 |
    17 |

    Build Conference

    18 |

    19 | Redmond, 20 | Washington, 21 | USA 22 |

    23 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/summarycontent.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    microformats.org at 7

    4 |
    5 |

    Last week the microformats.org community 6 | celebrated its 7th birthday at a gathering hosted by Mozilla in 7 | San Francisco and recognized accomplishments, challenges, and 8 | opportunities.

    9 | 10 |

    The microformats tagline “humans first, machines second” 11 | forms the basis of many of our 12 | principles, and 13 | in that regard, we’d like to recognize a few people and 14 | thank them for their years of volunteer service

    15 |
    16 |

    Updated 17 | by 18 | Tantek 19 |

    20 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/includes/heventitemref.html: -------------------------------------------------------------------------------- 1 |
    2 | Monetizing Android Apps - spaekers: 3 | Chrix Finne, 4 | Kenneth Lui - 5 | 6 | Room 10 7 | 8 |
    9 |
    10 | New Low-Level Media APIs in Android - spaekers: 11 | Dave Burke - 12 | 13 | Room 11 14 | 15 |
    16 | 17 |

    18 | Session 01 is between: 19 | to 20 | 21 |

    22 |

    23 | Moscone Center, 24 | San Francisco 25 |

    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hresume/education.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-resume"], 4 | "properties": { 5 | "contact": [{ 6 | "value": "Tim Berners-Lee", 7 | "type": ["h-card"], 8 | "properties": { 9 | "name": ["Tim Berners-Lee"], 10 | "job-title": ["Director of the World Wide Web Foundation"] 11 | } 12 | }], 13 | "summary": ["Invented the World Wide Web."], 14 | "education": [{ 15 | "value": "The Queen's College, Oxford University", 16 | "type": ["h-event", "h-card"], 17 | "properties": { 18 | "name": ["The Queen's College, Oxford University"], 19 | "org": ["The Queen's College, Oxford University"], 20 | "description": ["BA Hons (I) Physics"], 21 | "start": ["1973-09"], 22 | "end": ["1976-06"] 23 | } 24 | }] 25 | } 26 | }], 27 | "rels": {}, 28 | "rel-urls": {} 29 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hentry/summarycontent.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    microformats.org at 7

    4 |
    5 |

    Last week the microformats.org community 6 | celebrated its 7th birthday at a gathering hosted by Mozilla in 7 | San Francisco and recognized accomplishments, challenges, and 8 | opportunities.

    9 | 10 |

    The microformats tagline “humans first, machines second” 11 | forms the basis of many of our 12 | principles, and 13 | in that regard, we’d like to recognize a few people and 14 | thank them for their years of volunteer service

    15 |
    16 |

    Updated 17 | by 18 | Tantek 19 |

    20 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-resume/education.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-resume"], 4 | "properties": { 5 | "name": ["Tim Berners-Lee"], 6 | "contact": [{ 7 | "value": "Director of the World Wide Web Foundation", 8 | "type": ["h-card"], 9 | "properties": { 10 | "title": ["Director of the World Wide Web Foundation"] 11 | } 12 | }], 13 | "summary": ["Invented the World Wide Web."], 14 | "education": [{ 15 | "value": "The Queen's College, Oxford University", 16 | "type": ["h-event", "h-card"], 17 | "properties": { 18 | "name": ["The Queen's College, Oxford University"], 19 | "org": ["The Queen's College, Oxford University"], 20 | "description": ["BA Hons (I) Physics"], 21 | "start": ["1973-09"], 22 | "end": ["1976-06"] 23 | } 24 | }] 25 | } 26 | }], 27 | "rels": {}, 28 | "rel-urls": {} 29 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hresume/work.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-resume"], 4 | "properties": { 5 | "contact": [{ 6 | "value": "Tim Berners-Lee", 7 | "type": ["h-card"], 8 | "properties": { 9 | "name": ["Tim Berners-Lee"], 10 | "job-title": ["Director of the World Wide Web Foundation"] 11 | } 12 | }], 13 | "summary": ["Invented the World Wide Web."], 14 | "experience": [{ 15 | "value": "World Wide Web Foundation", 16 | "type": ["h-event", "h-card"], 17 | "properties": { 18 | "job-title": ["Director"], 19 | "name": ["World Wide Web Foundation"], 20 | "org": ["World Wide Web Foundation"], 21 | "url": ["http://www.webfoundation.org/"], 22 | "start": ["2009-01-18"], 23 | "duration": ["P2Y11M"] 24 | } 25 | }] 26 | } 27 | }], 28 | "rels": {}, 29 | "rel-urls": {} 30 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/impliedurlempty.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["Jane Doe"], 6 | "url": ["http://example.com/"] 7 | } 8 | }, 9 | { 10 | "type": ["h-card"], 11 | "properties": { 12 | "name": ["Jane Doe"], 13 | "url": ["http://example.com/"] 14 | } 15 | }, 16 | { 17 | "type": ["h-card"], 18 | "properties": { 19 | "name": ["Jane Doe"], 20 | "url": ["http://example.com/"] 21 | } 22 | }, 23 | { 24 | "type": ["h-card"], 25 | "properties": { 26 | "name": ["Jane Doe"], 27 | "url": ["http://example.com/"] 28 | } 29 | }, 30 | { 31 | "type": ["h-card"], 32 | "properties": {}, 33 | "children": [{ 34 | "type": ["h-card"], 35 | "properties": { 36 | "name": ["Jane Doe"], 37 | "url": ["http://example.com/"] 38 | } 39 | }] 40 | }], 41 | "rels": {}, 42 | "rel-urls": {} 43 | } 44 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-mixed/h-entry/mixedroots.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 11 |
    Did you play 12 | @playmapattackat 13 | #realtimeconf? Here is some more info about how we built it! 14 | http://pdx.esri.com/blog/2013/10/17/introducting-mapattack/ 15 |
    16 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-mixed/h-resume/mixedroots.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-resume"], 4 | "properties": { 5 | "contact": [{ 6 | "value": "Tim Berners-Lee", 7 | "type": ["h-card"], 8 | "properties": { 9 | "name": ["Tim Berners-Lee"], 10 | "job-title": ["Director of the World Wide Web Foundation"] 11 | } 12 | }], 13 | "summary": ["Invented the World Wide Web."], 14 | "experience": [{ 15 | "value": "World Wide Web Foundation", 16 | "type": ["h-event", "h-card"], 17 | "properties": { 18 | "job-title": ["Director"], 19 | "name": ["World Wide Web Foundation"], 20 | "org": ["World Wide Web Foundation"], 21 | "url": ["http://www.webfoundation.org/"], 22 | "start": ["2009-01-18"], 23 | "duration": ["P2Y11M"] 24 | } 25 | }] 26 | } 27 | }], 28 | "rels": {}, 29 | "rel-urls": {} 30 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-resume/work.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-resume"], 4 | "properties": { 5 | "name": ["Tim Berners-Lee"], 6 | "contact": [{ 7 | "value": "Director of the World Wide Web Foundation", 8 | "type": ["h-card"], 9 | "properties": { 10 | "title": ["Director of the World Wide Web Foundation"] 11 | } 12 | }], 13 | "summary": ["Invented the World Wide Web."], 14 | "experience": [{ 15 | "value": "World Wide Web Foundation", 16 | "type": ["h-event", "h-card"], 17 | "properties": { 18 | "title": ["Director"], 19 | "name": ["World Wide Web Foundation"], 20 | "org": ["World Wide Web Foundation"], 21 | "url": ["http://www.webfoundation.org/"], 22 | "start": ["2009-01-18"], 23 | "duration": ["P2Y11M"] 24 | } 25 | }] 26 | } 27 | }], 28 | "rels": {}, 29 | "rel-urls": {} 30 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hresume/skill.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-resume"], 4 | "properties": { 5 | "contact": [{ 6 | "value": "Tim Berners-Lee", 7 | "type": ["h-card"], 8 | "properties": { 9 | "name": ["Tim Berners-Lee"] 10 | } 11 | }], 12 | "summary": ["invented the World Wide Web"], 13 | "skill": ["information systems", "advocacy", "leadership"] 14 | } 15 | }], 16 | "rels": { 17 | "tag": ["http://example.com/skills/informationsystems", "http://example.com/skills/advocacy", "http://example.com/skills/leadership"] 18 | }, 19 | "rel-urls": { 20 | "http://example.com/skills/informationsystems": { 21 | "text": "information systems", 22 | "rels": ["tag"] 23 | }, 24 | "http://example.com/skills/advocacy": { 25 | "text": "advocacy", 26 | "rels": ["tag"] 27 | }, 28 | "http://example.com/skills/leadership": { 29 | "text": "leadership", 30 | "rels": ["tag"] 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/impliedname.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-entry"], 4 | "properties": { 5 | "name": ["This should imply a p-name"] 6 | } 7 | }, { 8 | "type": ["h-entry"], 9 | "properties": { 10 | "content": ["This should not imply a p-name since it has an p-* property."] 11 | } 12 | }, { 13 | "type": ["h-entry"], 14 | "properties": { 15 | "content": [{ 16 | "value": "This should not imply a p-name since it has an e-* property.", 17 | "html": "

    This should not imply a p-name since it has an e-* property.

    " 18 | }] 19 | } 20 | }, { 21 | "type": ["h-entry"], 22 | "properties": { 23 | "like-of": [{ 24 | "value": "http://microformats.org/", 25 | "type": ["h-cite"], 26 | "properties": { 27 | "name": ["Microformats"], 28 | "url": ["http://microformats.org/"] 29 | } 30 | }] 31 | } 32 | }], 33 | "rels": {}, 34 | "rel-urls": {} 35 | } 36 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcalendar/combining.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "name": ["IndieWebCamp 2012"], 6 | "url": ["http://indiewebcamp.com/2012"], 7 | "start": ["2012-06-30"], 8 | "end": ["2012-07-01"], 9 | "location": [{ 10 | "value": "Geoloqi", 11 | "type": ["h-card"], 12 | "properties": { 13 | "name": ["Geoloqi"], 14 | "org": ["Geoloqi"], 15 | "url": ["http://geoloqi.com/"], 16 | "adr": [{ 17 | "value": "920 SW 3rd Ave. Suite 400, \n Portland, \n OR", 18 | "type": ["h-adr"], 19 | "properties": { 20 | "street-address": ["920 SW 3rd Ave. Suite 400"], 21 | "locality": ["Portland"], 22 | "region": ["Oregon"] 23 | } 24 | }] 25 | } 26 | }] 27 | } 28 | }], 29 | "rels": {}, 30 | "rel-urls": {} 31 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/impliedurl.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "name": ["Jane Doe"], 6 | "url": ["http://example.com/jane.html"] 7 | } 8 | }, 9 | { 10 | "type": ["h-card"], 11 | "properties": { 12 | "name": ["Jane Doe"], 13 | "url": ["http://example.com/jane.html"] 14 | } 15 | }, 16 | { 17 | "type": ["h-card"], 18 | "properties": { 19 | "name": ["Jane Doe"], 20 | "url": ["http://example.com/jane.html"] 21 | } 22 | }, 23 | { 24 | "type": ["h-card"], 25 | "properties": { 26 | "name": ["Jane Doe"], 27 | "url": ["http://example.com/jane.html"] 28 | } 29 | }, 30 | { 31 | "type": ["h-card"], 32 | "properties": {}, 33 | "children": [{ 34 | "type": ["h-card"], 35 | "properties": { 36 | "name": ["Jane Doe"], 37 | "url": ["http://example.com/jane.html"] 38 | } 39 | }] 40 | }], 41 | "rels": {}, 42 | "rel-urls": {} 43 | } 44 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hreview-aggregate/hcard.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-review-aggregate"], 4 | "properties": { 5 | "item": [{ 6 | "value": "Mediterranean Wraps", 7 | "type": ["h-card"], 8 | "properties": { 9 | "name": ["Mediterranean Wraps"], 10 | "org": ["Mediterranean Wraps"], 11 | "adr": [{ 12 | "value": "433 S California Ave, \n Palo Alto, \n CA", 13 | "type": ["h-adr"], 14 | "properties": { 15 | "street-address": ["433 S California Ave"], 16 | "locality": ["Palo Alto"], 17 | "region": ["CA"] 18 | } 19 | }], 20 | "tel": ["(650) 321-8189"] 21 | } 22 | }], 23 | "rating": ["9.2"], 24 | "average": ["9.2"], 25 | "best": ["10"], 26 | "count": ["17"] 27 | } 28 | }], 29 | "rels": {}, 30 | "rel-urls": {} 31 | } 32 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-feed/implied-title.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | microformats blog 5 | 6 | 7 |
    8 | 9 |
    10 |

    microformats.org at 7

    11 |
    12 |

    Last week the microformats.org community 13 | celebrated its 7th birthday at a gathering hosted by Mozilla in 14 | San Francisco and recognized accomplishments, challenges, and 15 | opportunities.

    16 | 17 |

    The microformats tagline “humans first, machines second” 18 | forms the basis of many of our 19 | principles, and 20 | in that regard, we’d like to recognize a few people and 21 | thank them for their years of volunteer service

    22 |
    23 |

    Updated 24 | 25 |

    26 |
    27 | 28 |
    29 | 30 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcalendar/attendees.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "name": ["CPJ Online Press Freedom Summit"], 6 | "start": ["2012-10-10"], 7 | "location": ["San Francisco"], 8 | "attendee": [{ 9 | "value": "Brian Warner", 10 | "type": ["h-card"], 11 | "properties": { 12 | "name": ["Brian Warner"] 13 | } 14 | }, { 15 | "value": "Kyle Machulis", 16 | "type": ["h-card"], 17 | "properties": { 18 | "name": ["Kyle Machulis"] 19 | } 20 | }, { 21 | "value": "Tantek Çelik", 22 | "type": ["h-card"], 23 | "properties": { 24 | "name": ["Tantek Çelik"] 25 | } 26 | }, { 27 | "value": "Sid Sutter", 28 | "type": ["h-card"], 29 | "properties": { 30 | "name": ["Sid Sutter"] 31 | } 32 | }] 33 | } 34 | }], 35 | "rels": {}, 36 | "rel-urls": {} 37 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/attendees.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "name": ["CPJ Online Press Freedom Summit"], 6 | "start": ["2012-10-10"], 7 | "location": ["San Francisco"], 8 | "attendee": [{ 9 | "value": "Brian Warner", 10 | "type": ["h-card"], 11 | "properties": { 12 | "name": ["Brian Warner"] 13 | } 14 | }, { 15 | "value": "Kyle Machulis", 16 | "type": ["h-card"], 17 | "properties": { 18 | "name": ["Kyle Machulis"] 19 | } 20 | }, { 21 | "value": "Tantek Çelik", 22 | "type": ["h-card"], 23 | "properties": { 24 | "name": ["Tantek Çelik"] 25 | } 26 | }, { 27 | "value": "Sid Sutter", 28 | "type": ["h-card"], 29 | "properties": { 30 | "name": ["Sid Sutter"] 31 | } 32 | }] 33 | } 34 | }], 35 | "rels": {}, 36 | "rel-urls": {} 37 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/includes/heventitemref.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "location": [{ 6 | "value": "Room 10\n \n Moscone Center, \n San Francisco", 7 | "type": ["h-adr"], 8 | "properties": { 9 | "extended-address": ["Room 10", "Moscone Center"], 10 | "locality": ["San Francisco"] 11 | } 12 | }], 13 | "start": ["2012-06-27 15:45:00-08:00"], 14 | "end": ["2012-06-27 16:45:00-08:00"] 15 | } 16 | }, { 17 | "type": ["h-event"], 18 | "properties": { 19 | "location": [{ 20 | "value": "Room 11\n \n Moscone Center, \n San Francisco", 21 | "type": ["h-adr"], 22 | "properties": { 23 | "extended-address": ["Room 11", "Moscone Center"], 24 | "locality": ["San Francisco"] 25 | } 26 | }], 27 | "start": ["2012-06-27 15:45:00-08:00"], 28 | "end": ["2012-06-27 16:45:00-08:00"] 29 | } 30 | }], 31 | "rels": {}, 32 | "rel-urls": {} 33 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-feed/simple.html: -------------------------------------------------------------------------------- 1 |
    2 |

    Microformats blog

    3 | Tantek 4 | permlink 5 | 6 | 7 |
    8 |

    microformats.org at 7

    9 |
    10 |

    Last week the microformats.org community 11 | celebrated its 7th birthday at a gathering hosted by Mozilla in 12 | San Francisco and recognized accomplishments, challenges, and 13 | opportunities.

    14 | 15 |

    The microformats tagline “humans first, machines second” 16 | forms the basis of many of our 17 | principles, and 18 | in that regard, we’d like to recognize a few people and 19 | thank them for their years of volunteer service

    20 |
    21 |

    Updated 22 | 23 |

    24 |
    25 | 26 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/urlincontent.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-entry"], 4 | "properties": { 5 | "name": ["Expanding URLs within HTML content"], 6 | "content": [{ 7 | "value": "Should not change: http://www.w3.org/\n Should not change: http://example.com/\n File relative: test.html = http://example.com/test.html\n Directory relative: /test/test.html = http://example.com/test/test.html\n Relative to root: /test.html = http://example.com/test.html", 8 | "html": "\n " 9 | }] 10 | } 11 | }], 12 | "rels": {}, 13 | "rel-urls": {} 14 | } 15 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hnews/minimum.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    microformats.org at 7

    4 |
    5 |

    Last week the microformats.org community 6 | celebrated its 7th birthday at a gathering hosted by Mozilla in 7 | San Francisco and recognized accomplishments, challenges, and 8 | opportunities.

    9 | 10 |

    The microformats tagline “humans first, machines second” 11 | forms the basis of many of our 12 | principles, and 13 | in that regard, we’d like to recognize a few people and 14 | thank them for their years of volunteer service

    15 |
    16 |

    Updated 17 | by 18 | Tantek 19 |

    20 |
    21 | 22 |

    23 | microformats.org 24 |

    25 |
    -------------------------------------------------------------------------------- /spec/support/lib/microformats/implied_property/photo-fail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
    6 | 7 | 8 |
    9 | 10 |
    11 | 12 | 13 | 14 | 15 |
    16 |
    17 | 18 | 19 |
    20 |
    21 | 22 |
    23 |
    24 |
    25 | 26 |
    27 |
    28 | 29 |
    30 |
    31 | 32 | 33 | 34 | 35 | 36 |
    37 |
    38 |
    39 | 40 | 41 | 42 | 43 |
    44 |
    45 |
    46 | 47 |
    48 |
    49 |
    50 | 51 |
    52 |
    53 |
    54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hresume/contact.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-resume"], 4 | "properties": { 5 | "contact": [{ 6 | "value": "Tim Berners-Lee", 7 | "type": ["h-card"], 8 | "properties": { 9 | "name": ["Tim Berners-Lee"], 10 | "org": ["MIT"], 11 | "adr": [{ 12 | "value": "32 Vassar Street, \n Room 32-G524, \n Cambridge, \n MA \n 02139, \n USA. \n (Work)", 13 | "type": ["h-adr"], 14 | "properties": { 15 | "street-address": ["32 Vassar Street"], 16 | "extended-address": ["Room 32-G524"], 17 | "locality": ["Cambridge"], 18 | "region": ["MA"], 19 | "postal-code": ["02139"], 20 | "country-name": ["USA"] 21 | } 22 | }], 23 | "tel": ["+1 (617) 253 5702"], 24 | "email": ["mailto:timbl@w3.org"] 25 | } 26 | }], 27 | "summary": ["Invented the World Wide Web."] 28 | } 29 | }], 30 | "rels": {}, 31 | "rel-urls": {} 32 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-product/aggregate.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    Raspberry Pi

    4 | 5 |

    The Raspberry Pi is a credit-card sized computer that plugs into your TV and a keyboard. It’s a capable little PC which can be used for many of the things that your desktop PC does, like spreadsheets, word-processing and games. It also plays high-definition video. We want to see it being used by kids all over the world to learn programming.

    6 | More info about the Raspberry Pi 7 |

    £29.95

    8 |

    9 | 10 | 9.2 out of 11 | 10 12 | based on 178 reviews 13 | 14 |

    15 |

    Categories: Computer, Education

    16 |

    From: 17 | The Raspberry Pi Foundation - 18 | Cambridge 19 | UK 20 |

    21 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/u-property.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    microformats.org at 7

    4 | 5 | 6 |

    7 | 8 | Article permalink 9 |

    10 |

    11 | http://microformats.org/ - 12 | 2012/06/25/microformats-org-at-7 13 |

    14 | 15 |

    Article permalink

    16 | 17 | company logos 18 | 19 | microformats.org 20 | 21 | 22 | company logos 23 | 24 | 27 | 28 | 29 | 30 | value-class-pattern 31 | 32 |

    http://microformats.org/discuss

    33 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/includes/object.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-event"], 4 | "properties": { 5 | "start": ["2012-10-30 11:45:00-08:00"], 6 | "name": ["Build Conference"], 7 | "location": [{ 8 | "value": "Redmond, \n Washington, \n USA", 9 | "type": ["h-adr"], 10 | "properties": { 11 | "locality": ["Redmond"], 12 | "region": ["Washington"], 13 | "country-name": ["USA"] 14 | } 15 | }] 16 | } 17 | }, { 18 | "type": ["h-event"], 19 | "properties": { 20 | "start": ["2012-10-31 11:15:00-08:00"], 21 | "name": ["Build Conference"], 22 | "location": [{ 23 | "value": "Redmond, \n Washington, \n USA", 24 | "type": ["h-adr"], 25 | "properties": { 26 | "locality": ["Redmond"], 27 | "region": ["Washington"], 28 | "country-name": ["USA"] 29 | } 30 | }] 31 | } 32 | }, { 33 | "type": ["h-adr"], 34 | "properties": { 35 | "locality": ["Redmond"], 36 | "region": ["Washington"], 37 | "country-name": ["USA"] 38 | } 39 | }], 40 | "rels": {}, 41 | "rel-urls": {} 42 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/xfn-all.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hfeed/simple.html: -------------------------------------------------------------------------------- 1 |
    2 |

    Microformats blog

    3 | Tantek 4 | permlink 5 | 6 |

    7 | Tags: , 8 | 9 |

    10 | 11 |
    12 |

    microformats.org at 7

    13 |
    14 |

    Last week the microformats.org community 15 | celebrated its 7th birthday at a gathering hosted by Mozilla in 16 | San Francisco and recognized accomplishments, challenges, and 17 | opportunities.

    18 | 19 |

    The microformats tagline “humans first, machines second” 20 | forms the basis of many of our 21 | principles, and 22 | in that regard, we’d like to recognize a few people and 23 | thank them for their years of volunteer service

    24 |
    25 |

    Updated 26 | 27 |

    28 |
    29 | 30 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hreview/vcard.html: -------------------------------------------------------------------------------- 1 |
    2 | 5 out of 5 stars 3 |

    Crepes on Cole is awesome

    4 | 5 | Reviewer: Tantek - 6 | 7 | 8 |
    9 |

    10 | Crepes on Cole is one of the best little 11 | creperies in San Francisco. 12 | Excellent food and service. Plenty of tables in a variety of sizes 13 | for parties large and small. Window seating makes for excellent 14 | people watching to/from the N-Judah which stops right outside. 15 | I've had many fun social gatherings here, as well as gotten 16 | plenty of work done thanks to neighborhood WiFi. 17 |

    18 |
    19 |

    Visit date: April 2005

    20 |

    Food eaten:

    21 |

    Permanent link for review: http://example.com/crepe

    22 |

    Creative Commons Attribution-ShareAlike License

    23 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/impliedname.html: -------------------------------------------------------------------------------- 1 | 2 | Jane Doe 3 | Jane Doe 4 | JD 5 | 6 |
    Jane Doe
    7 |
    Jane Doe
    8 |
    JD
    9 | 10 |
    Jane Doe
    11 |
    Jane Doe
    12 |
    JD
    13 | 14 | 15 |
    John DoeName
    16 |
    John DoeName
    17 |
    JD
    18 | 19 | 20 |
    John Doe, Mozilla
    21 | 22 | 23 |

    John Doe Jr.

    24 | 25 | 26 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-review/vcard.html: -------------------------------------------------------------------------------- 1 |
    2 | 5 out of 5 stars 3 |

    Crepes on Cole is awesome

    4 | 5 | Reviewer: Tantek - 6 | 7 | 8 |
    9 |

    10 | Crepes on Cole is one of the best little 11 | creperies in San Francisco. 12 | Excellent food and service. Plenty of tables in a variety of sizes 13 | for parties large and small. Window seating makes for excellent 14 | people watching to/from the N-Judah which stops right outside. 15 | I've had many fun social gatherings here, as well as gotten 16 | plenty of work done thanks to neighborhood WiFi. 17 |

    18 |
    19 |

    Visit date: April 2005

    20 |

    Food eaten: crepe

    21 |

    Permanent link for review: http://example.com/crepe

    22 |

    Creative Commons Attribution-ShareAlike License

    23 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/includes/hyperlink.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "org": ["Twitter"], 6 | "adr": [{ 7 | "value": "1355 Market St,\n San Francisco, \n CA\n 94103", 8 | "type": ["h-adr"], 9 | "properties": { 10 | "street-address": ["1355 Market St"], 11 | "locality": ["San Francisco"], 12 | "region": ["CA"], 13 | "postal-code": ["94103"] 14 | } 15 | }] 16 | } 17 | }, { 18 | "type": ["h-card"], 19 | "properties": { 20 | "org": ["Twitter"], 21 | "adr": [{ 22 | "value": "1355 Market St,\n San Francisco, \n CA\n 94103", 23 | "type": ["h-adr"], 24 | "properties": { 25 | "street-address": ["1355 Market St"], 26 | "locality": ["San Francisco"], 27 | "region": ["CA"], 28 | "postal-code": ["94103"] 29 | } 30 | }] 31 | } 32 | }, { 33 | "type": ["h-adr"], 34 | "properties": { 35 | "street-address": ["1355 Market St"], 36 | "locality": ["San Francisco"], 37 | "region": ["CA"], 38 | "postal-code": ["94103"] 39 | } 40 | }], 41 | "rels": {}, 42 | "rel-urls": {} 43 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hproduct/simpleproperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-product"], 4 | "properties": { 5 | "name": ["Raspberry Pi"], 6 | "photo": ["http://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/RaspberryPi.jpg/320px-RaspberryPi.jpg"], 7 | "description": [ "The Raspberry Pi is a credit-card sized computer that plugs into your TV and a keyboard. It’s a capable little PC which can be used for many of the things that your desktop PC does, like spreadsheets, word-processing and games. It also plays high-definition video. We want to see it being used by kids all over the world to learn programming." ], 8 | "url": ["http://www.raspberrypi.org/"], 9 | "price": ["£29.95"], 10 | "category": ["Computer", "Education"], 11 | "review": [{ 12 | "value": "4.5 out of 5", 13 | "type": ["h-review"], 14 | "properties": { 15 | "rating": ["4.5"] 16 | } 17 | }] 18 | } 19 | }], 20 | "rels": { 21 | "tag": ["http://en.wikipedia.org/wiki/computer", "http://en.wikipedia.org/wiki/education"] 22 | }, 23 | "rel-urls": { 24 | "http://en.wikipedia.org/wiki/computer": { 25 | "text": "Computer", 26 | "rels": ["tag"] 27 | }, 28 | "http://en.wikipedia.org/wiki/education": { 29 | "text": "Education", 30 | "rels": ["tag"] 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-product/simpleproperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-product"], 4 | "properties": { 5 | "name": ["Raspberry Pi"], 6 | "photo": ["http://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/RaspberryPi.jpg/320px-RaspberryPi.jpg"], 7 | "description": [{ 8 | "value": "The Raspberry Pi is a credit-card sized computer that plugs into your TV and a keyboard. It’s a capable little PC which can be used for many of the things that your desktop PC does, like spreadsheets, word-processing and games. It also plays high-definition video. We want to see it being used by kids all over the world to learn programming.", 9 | "html": "The Raspberry Pi is a credit-card sized computer that plugs into your TV and a keyboard. It’s a capable little PC which can be used for many of the things that your desktop PC does, like spreadsheets, word-processing and games. It also plays high-definition video. We want to see it being used by kids all over the world to learn programming." 10 | }], 11 | "url": ["http://www.raspberrypi.org/"], 12 | "price": ["£29.95"], 13 | "category": ["Computer", "Education"], 14 | "review": [{ 15 | "value": "4.5 out of 5", 16 | "type": ["h-review"], 17 | "properties": { 18 | "rating": ["4.5"] 19 | } 20 | }] 21 | } 22 | }], 23 | "rels": {}, 24 | "rel-urls": {} 25 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hproduct/aggregate.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    Raspberry Pi

    4 | 5 |

    The Raspberry Pi is a credit-card sized computer that plugs into your TV and a keyboard. It’s a capable little PC which can be used for many of the things that your desktop PC does, like spreadsheets, word-processing and games. It also plays high-definition video. We want to see it being used by kids all over the world to learn programming.

    6 | More info about the Raspberry Pi 7 |

    £29.95

    8 |

    9 | 10 | 9.2 out of 11 | 10 12 | based on 178 reviews 13 | 14 |

    15 |

    Categories: 16 | , 17 | 18 |

    19 |

    From: 20 | The Raspberry Pi Foundation - 21 | 22 | Cambridge 23 | UK 24 | 25 |

    26 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/xfn-elsewhere.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [], 3 | "rels": { 4 | "me": ["http://twitter.com/glennjones", "http://delicious.com/glennjonesnet/", "https://plus.google.com/u/0/105161464208920272734/about", "http://lanyrd.com/people/glennjones/", "http://github.com/glennjones", "http://www.flickr.com/photos/glennjonesnet/", "http://www.linkedin.com/in/glennjones", "http://www.slideshare.net/glennjones/presentations"] 5 | }, 6 | "rel-urls": { 7 | "http://twitter.com/glennjones": { 8 | "text": "twitter", 9 | "rels": ["me"] 10 | }, 11 | "http://delicious.com/glennjonesnet/": { 12 | "text": "delicious", 13 | "rels": ["me"] 14 | }, 15 | "https://plus.google.com/u/0/105161464208920272734/about": { 16 | "text": "google+", 17 | "rels": ["me"] 18 | }, 19 | "http://lanyrd.com/people/glennjones/": { 20 | "text": "lanyrd", 21 | "rels": ["me"] 22 | }, 23 | "http://github.com/glennjones": { 24 | "text": "github", 25 | "rels": ["me"] 26 | }, 27 | "http://www.flickr.com/photos/glennjonesnet/": { 28 | "text": "flickr", 29 | "rels": ["me"] 30 | }, 31 | "http://www.linkedin.com/in/glennjones": { 32 | "text": "linkedin", 33 | "rels": ["me"] 34 | }, 35 | "http://www.slideshare.net/glennjones/presentations": { 36 | "text": "slideshare", 37 | "rels": ["me"] 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /spec/lib/microformats/absolute_uri_absolutize_spec.rb: -------------------------------------------------------------------------------- 1 | describe Microformats::AbsoluteUri, '#absolutize' do 2 | subject { described_class.new(relative, base: base).absolutize } 3 | 4 | context 'when relative is nil' do 5 | let(:relative) { nil } 6 | let(:base) { 'http://example.com' } 7 | 8 | it { is_expected.to eq(base) } 9 | end 10 | 11 | context 'when relative is an empty string' do 12 | let(:relative) { '' } 13 | let(:base) { 'http://example.com' } 14 | 15 | it { is_expected.to eq(base) } 16 | end 17 | 18 | context 'when relative is a valid absolute URI' do 19 | let(:base) { nil } 20 | let(:relative) { 'http://google.com' } 21 | 22 | it { is_expected.to eq('http://google.com') } 23 | end 24 | 25 | context 'when relative is a valid non-absolute URI' do 26 | let(:relative) { 'bar/qux' } 27 | 28 | context 'when base is present but not absolute' do 29 | let(:base) { 'foo' } 30 | 31 | it { is_expected.to eq('bar/qux') } 32 | end 33 | 34 | context 'when base is present and absolute' do 35 | let(:base) { 'http://google.com' } 36 | 37 | it { is_expected.to eq('http://google.com/bar/qux') } 38 | end 39 | 40 | context 'when base is not present' do 41 | let(:base) { nil } 42 | 43 | it { is_expected.to eq('bar/qux') } 44 | end 45 | 46 | context 'when base has a subdir' do 47 | let(:base) { 'http://google.com/asdf.html' } 48 | 49 | it { is_expected.to eq('http://google.com/bar/qux') } 50 | end 51 | end 52 | 53 | context 'when relative is an invalid URI' do 54 | let(:base) { nil } 55 | let(:relative) { 'git@github.com:indieweb/microformats-ruby.git' } 56 | 57 | it { is_expected.to eq(relative) } 58 | end 59 | end 60 | -------------------------------------------------------------------------------- /spec/lib/microformats/parser_result_spec.rb: -------------------------------------------------------------------------------- 1 | describe Microformats::ParserResult do 2 | let(:parser) { Microformats::Parser.new } 3 | 4 | describe 'conversion functions' do 5 | let(:html) { '

    Jessica Lynn Suttles

    ' } 6 | let(:item) { parser.parse(html).items[0] } 7 | 8 | it 'is accessible as a hash []' do 9 | expect(item['properties']['name'][0]).to eq('Jessica Lynn Suttles') 10 | end 11 | 12 | it 'can convert to hash' do 13 | expect(item.to_hash['properties']['name'][0]).to eq('Jessica Lynn Suttles') 14 | end 15 | 16 | it 'can convert to hash by to_h' do 17 | expect(item.to_h['properties']['name'][0]).to eq('Jessica Lynn Suttles') 18 | end 19 | 20 | it 'converts to json' do 21 | expect(item.to_json).to eq('{"type":["h-card"],"properties":{"name":["Jessica Lynn Suttles"]}}') 22 | end 23 | 24 | it 'converts to string' do 25 | expect(item.to_s).to eq(item.to_h.to_s) 26 | end 27 | end 28 | 29 | describe 'parser result functions' do 30 | let(:html) { '

    Jessica Lynn Suttles

    homepage
    ' } 31 | let(:item) { parser.parse(html).items[0] } 32 | 33 | it 'has respond_to? function' do 34 | expect(item).to respond_to(:respond_to?) 35 | end 36 | 37 | it 'returns PropertySets' do 38 | expect(item.properties).to be_kind_of(Microformats::PropertySet) 39 | end 40 | 41 | it 'supports old parser function calls by property name' do 42 | expect(item.name).to eq('Jessica Lynn Suttles') 43 | expect(item.url).to eq('https://example.com/') 44 | expect(item.like_of).to eq('https://example.com/') 45 | end 46 | end 47 | end 48 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcalendar/ampm.html: -------------------------------------------------------------------------------- 1 |
    2 | The 4th Microformat party will be on 3 |
      4 |
    • 5 | , from 6 | 07:00:00pm 7 |
    • 8 |
    • 9 | , from 10 | 07:00:00am 11 |
    • 12 |
    • 13 | , from 14 | 07:00pm 15 |
    • 16 |
    • 17 | , from 18 | 07pm 19 |
    • 20 |
    • 21 | , from 22 | 7pm 23 |
    • 24 |
    • 25 | , from 26 | 7:00pm 27 |
    • 28 |
    • 29 | , from 30 | 07:00p.m. 31 |
    • 32 |
    • 33 | , from 34 | 07:00PM 35 |
    • 36 |
    • 37 | , from 38 | 7:00am 39 |
    • 40 |
    41 |
    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-event/ampm.html: -------------------------------------------------------------------------------- 1 | 2 | The 4th Microformat party will be on 3 |
      4 |
    • 5 | , from 6 | 07:00:00pm 7 |
    • 8 |
    • 9 | , from 10 | 07:00:00am 11 |
    • 12 |
    • 13 | , from 14 | 07:00pm 15 |
    • 16 |
    • 17 | , from 18 | 07pm 19 |
    • 20 |
    • 21 | , from 22 | 7pm 23 |
    • 24 |
    • 25 | , from 26 | 7:00pm 27 |
    • 28 |
    • 29 | , from 30 | 07:00p.m. 31 |
    • 32 |
    • 33 | , from 34 | 07:00PM 35 |
    • 36 |
    • 37 | , from 38 | 7:00am 39 |
    • 40 |
    41 |
    -------------------------------------------------------------------------------- /microformats.gemspec: -------------------------------------------------------------------------------- 1 | lib = File.expand_path('lib', __dir__) 2 | $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) 3 | 4 | require 'microformats/version' 5 | 6 | Gem::Specification.new do |spec| 7 | spec.required_ruby_version = ['>= 2.7'] 8 | 9 | spec.name = 'microformats' 10 | spec.version = Microformats::VERSION 11 | spec.authors = ['Shane Becker', 'Jessica Lynn Suttles', 'Ben Roberts'] 12 | spec.email = ['veganstraightedge@gmail.com', 'jlsuttles@gmail.com', 'ben@thatmustbe.me'] 13 | 14 | spec.summary = 'Microformats2 and classic microformats parser' 15 | spec.description = 'A Ruby gem to parse HTML containing microformats2 and classic microformats that returns a collection of dynamically defined Ruby objects, a Ruby hash, or a JSON hash.' 16 | spec.homepage = 'https://github.com/microformats/microformats-ruby' 17 | spec.license = 'CC0-1.0' 18 | 19 | spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec|vendor)/}) } 20 | spec.bindir = 'bin' 21 | spec.executables = ['microformats'] 22 | spec.require_paths = ['lib'] 23 | 24 | spec.post_install_message = 'Prior to version 4.0.0, the microformats gem was named "microformats2."' 25 | 26 | spec.add_development_dependency 'bundler' 27 | spec.add_development_dependency 'guard-rspec' 28 | spec.add_development_dependency 'rake' 29 | spec.add_development_dependency 'rb-fsevent' 30 | spec.add_development_dependency 'rspec' 31 | spec.add_development_dependency 'rubocop' 32 | spec.add_development_dependency 'rubocop-rspec' 33 | spec.add_development_dependency 'simplecov' 34 | spec.add_development_dependency 'simplecov-console' 35 | spec.add_development_dependency 'webmock' 36 | 37 | spec.add_runtime_dependency 'json' 38 | spec.add_runtime_dependency 'nokogiri' 39 | end 40 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hnews/all.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    microformats.org at 7

    4 |
    5 |

    Last week the microformats.org community 6 | celebrated its 7th birthday at a gathering hosted by Mozilla in 7 | San Francisco and recognized accomplishments, challenges, and 8 | opportunities.

    9 | 10 |

    The microformats tagline “humans first, machines second” 11 | forms the basis of many of our 12 | principles, and 13 | in that regard, we’d like to recognize a few people and 14 | thank them for their years of volunteer service

    15 |
    16 |

    Updated 17 | by 18 | Tantek 19 |

    20 |
    21 | 22 |

    23 | 29 | (Geo: 37.774921;-122.445202) 30 | 31 | microformats.org 32 | 33 |

    34 |

    35 | Publishing policy 36 |

    37 |
    -------------------------------------------------------------------------------- /vendor/tests/app.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | // This file create a small node server so 3 | // you view the files over http://localhost:3009/ 4 | // enter in commandline - $ node app 5 | // Glenn Jones 6 | 7 | 8 | var Hapi = require('hapi'), 9 | Blipp = require('blipp'), 10 | Pack = require('./package'); 11 | 12 | 13 | var routes = [{ 14 | method: 'GET', 15 | path: '/{path*}', 16 | handler: { 17 | directory: { 18 | path: '/tests', 19 | listing: true, 20 | index: false 21 | } 22 | } 23 | },{ 24 | method: 'GET', 25 | path: '/css/{path*}', 26 | handler: { 27 | directory: { 28 | path: './css', 29 | listing: true, 30 | index: true 31 | } 32 | } 33 | },{ 34 | method: 'GET', 35 | path: '/javascript/{path*}', 36 | handler: { 37 | directory: { 38 | path: './javascript', 39 | listing: true, 40 | index: true 41 | } 42 | } 43 | }]; 44 | 45 | 46 | 47 | // Create a server with a host and port 48 | var server = new Hapi.Server(); 49 | 50 | server.connection({ 51 | host: (process.env.PORT)? '0.0.0.0' : 'localhost', 52 | port: parseInt(process.env.PORT, 10) || 3008 53 | }); 54 | 55 | 56 | // hapi server settings 57 | server.route(routes); 58 | 59 | 60 | var goodOptions = { 61 | opsInterval: 1000, 62 | reporters: [{ 63 | reporter: require('good-console'), 64 | events: { log: '*', response: '*' } 65 | }] 66 | }; 67 | 68 | 69 | 70 | // Register plug-in and start 71 | server.register([{ 72 | register: require('good'), 73 | options: goodOptions 74 | },{ 75 | register: require('blipp'), 76 | }], function (err) { 77 | if (err) { 78 | console.error(err); 79 | }else { 80 | server.start(function () { 81 | console.info('Server started at ' + server.info.uri); 82 | }); 83 | } 84 | }); 85 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-mixed/h-entry/mixedroots.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "items": [{ 4 | "type": ["h-entry"], 5 | "properties": { 6 | "author": [{ 7 | "value": "Aaron Parecki", 8 | "type": ["h-card"], 9 | "properties": { 10 | "photo": ["https://aaronparecki.com/images/aaronpk.png"], 11 | "logo": ["https://aaronparecki.com/images/aaronpk.png"], 12 | "url": ["https://aaronparecki.com/"], 13 | "uid": ["https://aaronparecki.com/"], 14 | "name": ["Aaron Parecki"] 15 | } 16 | }], 17 | "content": [{ 18 | "value": "Did you play\n @playmapattackat\n #realtimeconf? Here is some more info about how we built it!\n http://pdx.esri.com/blog/2013/10/17/introducting-mapattack/", 19 | "html": "Did you play\n @playmapattackat\n #realtimeconf? Here is some more info about how we built it!\n http://pdx.esri.com/blog/2013/10/17/introducting-mapattack/\n" 20 | }], 21 | "name": ["Did you play\n @playmapattackat\n #realtimeconf? Here is some more info about how we built it!\n http://pdx.esri.com/blog/2013/10/17/introducting-mapattack/"], 22 | "category": ["realtimeconf"] 23 | } 24 | }], 25 | "rels": { 26 | "author": ["https://aaronparecki.com/", "https://plus.google.com/117847912875913905493"] 27 | }, 28 | "rel-urls": { 29 | "https://aaronparecki.com/": { 30 | "text": "aaronparecki.com", 31 | "rels": ["author"] 32 | }, 33 | "https://plus.google.com/117847912875913905493": { 34 | "text": "Aaron Parecki", 35 | "rels": ["author"] 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/includes/hcarditemref.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": { 5 | "org": ["Mozilla"], 6 | "adr": [{ 7 | "value": "665 3rd St. \n Suite 207 \n San Francisco, \n CA \n 94107 \n U.S.A.", 8 | "type": ["h-adr"], 9 | "properties": { 10 | "street-address": ["665 3rd St."], 11 | "extended-address": ["Suite 207"], 12 | "locality": ["San Francisco"], 13 | "region": ["CA"], 14 | "postal-code": ["94107"], 15 | "country-name": ["U.S.A."] 16 | } 17 | }] 18 | } 19 | }, { 20 | "type": ["h-card"], 21 | "properties": { 22 | "org": ["Mozilla"], 23 | "adr": [{ 24 | "value": "665 3rd St. \n Suite 207 \n San Francisco, \n CA \n 94107 \n U.S.A.", 25 | "type": ["h-adr"], 26 | "properties": { 27 | "street-address": ["665 3rd St."], 28 | "extended-address": ["Suite 207"], 29 | "locality": ["San Francisco"], 30 | "region": ["CA"], 31 | "postal-code": ["94107"], 32 | "country-name": ["U.S.A."] 33 | } 34 | }] 35 | } 36 | }, { 37 | "type": ["h-adr"], 38 | "properties": { 39 | "street-address": ["665 3rd St."], 40 | "extended-address": ["Suite 207"], 41 | "locality": ["San Francisco"], 42 | "region": ["CA"], 43 | "postal-code": ["94107"], 44 | "country-name": ["U.S.A."] 45 | } 46 | }], 47 | "rels": {}, 48 | "rel-urls": {} 49 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcalendar/time.html: -------------------------------------------------------------------------------- 1 |
    2 | The 4th Microformat party will be on 3 |
      4 |
    • 5 | , from 6 | 7 |
    • 8 |
    • 9 | , from 10 | 11 |
    • 12 |
    • 13 | , from 14 | 15 |
    • 16 |
    • 17 | , from 18 | 19 |
    • 20 |
    • 21 | , from 22 | 23 |
    • 24 |
    • 25 | , from 26 | 27 |
    • 28 |
    • 29 | , from 30 | 31 |
    • 32 |
    • 33 | , from 34 | 35 |
    • 36 |
    • 37 | , from 38 | 39 |
    • 40 |
    • 41 | 42 |
    • 43 |
    44 |
    -------------------------------------------------------------------------------- /lib/microformats/results/property_set.rb: -------------------------------------------------------------------------------- 1 | module Microformats 2 | # stub to get around the tests for now 3 | class PropertySet 4 | def initialize(hash) 5 | @hash = hash 6 | end 7 | 8 | def to_h 9 | @hash 10 | end 11 | 12 | def to_hash 13 | @hash.to_hash 14 | end 15 | 16 | def to_json 17 | @hash.to_hash.to_json 18 | end 19 | 20 | def [](key) 21 | @hash[key] 22 | end 23 | 24 | def to_s 25 | @hash.to_s 26 | end 27 | 28 | def respond_to?(sym, include_private = false) 29 | key?(sym) || super(sym, include_private) 30 | end 31 | 32 | def method_missing(mname, *args, &block) 33 | if respond_to?(mname) 34 | result_hash = val?(mname) 35 | 36 | if result_hash.is_a?(Array) 37 | if args[0].nil? 38 | result_hash = result_hash[0] # will return nil for an empty array 39 | elsif args[0] == :all 40 | return result_hash.map do |x| 41 | ParserResult.new(x) 42 | end 43 | elsif args[0].to_i < result_hash.count 44 | result_hash = result_hash[args[0].to_i] 45 | else 46 | result_hash = result_hash[0] # will return nil for an empty array 47 | end 48 | end 49 | 50 | if result_hash.is_a?(Hash) 51 | ParserResult.new(result_hash) 52 | else 53 | result_hash 54 | end 55 | else 56 | super(mname, *args, &block) 57 | end 58 | end 59 | 60 | private 61 | 62 | def key?(name) 63 | name = name.to_s 64 | name_dash = name.tr('_', '-') if name.include?('_') 65 | 66 | !@hash[name].nil? || !@hash[name_dash].nil? 67 | end 68 | 69 | def val?(name) 70 | name = name.to_s 71 | name_dash = name.tr('_', '-') if name.include?('_') 72 | 73 | if !@hash[name].nil? 74 | @hash[name] 75 | elsif !@hash[name_dash].nil? 76 | @hash[name_dash] 77 | end 78 | end 79 | end 80 | end 81 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hentry/summarycontent.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-entry"], 4 | "properties": { 5 | "name": ["microformats.org at 7"], 6 | "content": [{ 7 | "value": "Last week the microformats.org community \n celebrated its 7th birthday at a gathering hosted by Mozilla in \n San Francisco and recognized accomplishments, challenges, and \n opportunities.\n\n The microformats tagline “humans first, machines second” \n forms the basis of many of our \n principles, and \n in that regard, we’d like to recognize a few people and \n thank them for their years of volunteer service", 8 | "html": "\n

    Last week the microformats.org community \n celebrated its 7th birthday at a gathering hosted by Mozilla in \n San Francisco and recognized accomplishments, challenges, and \n opportunities.

    \n\n

    The microformats tagline “humans first, machines second” \n forms the basis of many of our \n principles, and \n in that regard, we’d like to recognize a few people and \n thank them for their years of volunteer service

    \n" 9 | }], 10 | "summary": ["Last week the microformats.org community \n celebrated its 7th birthday at a gathering hosted by Mozilla in \n San Francisco and recognized accomplishments, challenges, and \n opportunities."], 11 | "updated": ["2012-06-25 17:08:26"], 12 | "author": [{ 13 | "value": "Tantek", 14 | "type": ["h-card"], 15 | "properties": { 16 | "name": ["Tantek"], 17 | "url": ["http://tantek.com/"] 18 | } 19 | }] 20 | } 21 | }], 22 | "rels": {}, 23 | "rel-urls": {} 24 | } 25 | --------------------------------------------------------------------------------