├── .editorconfig ├── .github ├── dependabot.yml └── workflows │ └── ci.yml ├── .gitignore ├── .rspec ├── .rubocop ├── .rubocop.yml ├── .ruby-version ├── .simplecov ├── CONTRIBUTING.md ├── Gemfile ├── Guardfile ├── LICENSE ├── README.md ├── Rakefile ├── bin └── microformats ├── lib ├── microformats.rb └── microformats │ ├── absolute_uri.rb │ ├── format_parser.rb │ ├── parser.rb │ ├── parser_core.rb │ ├── property_parser.rb │ ├── results │ ├── collection.rb │ ├── parser_result.rb │ └── property_set.rb │ ├── time_property_parser.rb │ └── version.rb ├── logo.svg ├── microformats.gemspec ├── spec ├── lib │ ├── microformats │ │ ├── absolute_uri_absolutize_spec.rb │ │ ├── collection_spec.rb │ │ ├── parser_result_spec.rb │ │ ├── parser_spec.rb │ │ └── property_set_spec.rb │ ├── microformats_parse_spec.rb │ └── microformats_read_html_spec.rb ├── spec_helper.rb └── support │ ├── cases │ └── microformats.org │ │ └── microformats-2 │ │ ├── microformats-2-0.html │ │ ├── microformats-2-0.js │ │ ├── microformats-2-1.html │ │ ├── microformats-2-1.js │ │ ├── microformats-2-2.html │ │ ├── microformats-2-2.js │ │ ├── microformats-2-3.html │ │ ├── microformats-2-3.js │ │ ├── microformats-2-4.html │ │ ├── microformats-2-4.js │ │ ├── microformats-2-5.html │ │ ├── microformats-2-5.js │ │ ├── microformats-2-6.html │ │ ├── microformats-2-6.js │ │ ├── microformats-2-7.html │ │ ├── microformats-2-7.js │ │ ├── microformats-2-8.html │ │ ├── microformats-2-8.js │ │ ├── microformats-2-9.html │ │ └── microformats-2-9.js │ └── lib │ ├── edge_cases │ ├── blank_href.html │ ├── blank_href.js │ ├── blank_rel.html │ ├── blank_rel.js │ ├── blank_src.html │ ├── blank_src.js │ ├── blank_value.html │ ├── blank_value.js │ ├── link_parse.html │ ├── link_parse.js │ ├── relative.html │ ├── relative.js │ ├── vcp-dates.html │ └── vcp-dates.js │ └── microformats │ ├── blank_href.html │ ├── blank_href.js │ ├── implied_property │ ├── name-fail.html │ ├── name-pass.html │ ├── photo-fail.html │ ├── photo-pass.html │ ├── url-fail.html │ ├── url-pass.html │ ├── url-relative.html │ └── url-unnormalized.html │ ├── nested-format-with-property-of-same-name.html │ ├── nested-format-with-property-of-same-name.js │ ├── nested-format-with-property.html │ ├── nested-format-with-property.js │ ├── nested-format-without-property.html │ ├── nested-property.html │ ├── nested-property.js │ ├── rels-that-drop-the-base.html │ ├── rels-with-unnormalized-urls.html │ ├── rels.html │ ├── rels.js │ ├── simple.html │ └── simple.js └── vendor └── tests ├── .gitignore ├── LICENSE.md ├── README.md ├── app.js ├── composer.json ├── css └── testsuite.css ├── interface.js ├── package.json └── tests ├── microformats-mixed ├── h-card │ ├── change-log.html │ ├── mixedproperties.html │ ├── mixedproperties.json │ ├── tworoots.html │ └── tworoots.json ├── h-entry │ ├── mixedroots.html │ └── mixedroots.json └── h-resume │ ├── change-log.html │ ├── mixedroots.html │ └── mixedroots.json ├── microformats-v1 ├── adr │ ├── change-log.html │ ├── simpleproperties.html │ └── simpleproperties.json ├── geo │ ├── abbrpattern.html │ ├── abbrpattern.json │ ├── change-log.1.html │ ├── change-log.html │ ├── hidden.html │ ├── hidden.json │ ├── simpleproperties.html │ ├── simpleproperties.json │ ├── valuetitleclass.html │ └── valuetitleclass.json ├── hcalendar │ ├── ampm.html │ ├── ampm.json │ ├── attendees.html │ ├── attendees.json │ ├── change-log.html │ ├── combining.html │ ├── combining.json │ ├── concatenate.html │ ├── concatenate.json │ ├── time.html │ └── time.json ├── hcard │ ├── change-log.html │ ├── email.html │ ├── email.json │ ├── format.html │ ├── format.json │ ├── hyperlinkedphoto.html │ ├── hyperlinkedphoto.json │ ├── justahyperlink.html │ ├── justahyperlink.json │ ├── justaname.html │ ├── justaname.json │ ├── multiple.html │ ├── multiple.json │ ├── name.html │ ├── name.json │ ├── single.html │ └── single.json ├── hentry │ ├── change-log.html │ ├── summarycontent.html │ └── summarycontent.json ├── hfeed │ ├── simple.html │ └── simple.json ├── hnews │ ├── all.html │ ├── all.json │ ├── change-log.html │ ├── minimum.html │ └── minimum.json ├── hproduct │ ├── aggregate.html │ ├── aggregate.json │ ├── change-log.html │ ├── simpleproperties.html │ └── simpleproperties.json ├── hresume │ ├── affiliation.html │ ├── affiliation.json │ ├── change-log.html │ ├── contact.html │ ├── contact.json │ ├── education.html │ ├── education.json │ ├── skill.html │ ├── skill.json │ ├── work.html │ └── work.json ├── hreview-aggregate │ ├── change-log.html │ ├── hcard.html │ ├── hcard.json │ ├── justahyperlink.html │ ├── justahyperlink.json │ ├── vevent.html │ └── vevent.json ├── hreview │ ├── change-log.html │ ├── item.html │ ├── item.json │ ├── vcard.html │ └── vcard.json └── includes │ ├── change-log.html │ ├── hcarditemref.html │ ├── hcarditemref.json │ ├── heventitemref.html │ ├── heventitemref.json │ ├── hyperlink.html │ ├── hyperlink.json │ ├── object.html │ ├── object.json │ ├── table.html │ └── table.json └── microformats-v2 ├── h-adr ├── change-log.html ├── geo.html ├── geo.json ├── geourl.html ├── geourl.json ├── justaname.html ├── justaname.json ├── lettercase.html ├── lettercase.json ├── simpleproperties.html └── simpleproperties.json ├── h-card ├── baseurl.html ├── baseurl.json ├── change-log.html ├── childimplied.html ├── childimplied.json ├── extendeddescription.html ├── extendeddescription.json ├── hcard.html ├── hcard.json ├── hyperlinkedphoto.html ├── hyperlinkedphoto.json ├── impliedname.html ├── impliedname.json ├── impliedphoto.html ├── impliedphoto.json ├── impliedurl.html ├── impliedurl.json ├── impliedurlempty.html ├── impliedurlempty.json ├── justahyperlink.html ├── justahyperlink.json ├── justaname.html ├── justaname.json ├── nested.html ├── nested.json ├── p-property.html ├── p-property.json ├── relativeurls.html ├── relativeurls.json ├── relativeurlsempty.html └── relativeurlsempty.json ├── h-entry ├── change-log.html ├── encoding.html ├── encoding.json ├── impliedname.html ├── impliedname.json ├── impliedvalue-nested.html ├── impliedvalue-nested.json ├── justahyperlink.html ├── justahyperlink.json ├── justaname.html ├── justaname.json ├── scriptstyletags.html ├── scriptstyletags.json ├── summarycontent.html ├── summarycontent.json ├── u-property.html ├── u-property.json ├── urlincontent.html └── urlincontent.json ├── h-event ├── ampm.html ├── ampm.json ├── attendees.html ├── attendees.json ├── change-log.html ├── combining.html ├── combining.json ├── concatenate.html ├── concatenate.json ├── dates.html ├── dates.json ├── dt-property.html ├── dt-property.json ├── justahyperlink.html ├── justahyperlink.json ├── justaname.html ├── justaname.json ├── time.html └── time.json ├── h-feed ├── implied-title.html ├── implied-title.json ├── simple.html └── simple.json ├── h-geo ├── abbrpattern.html ├── abbrpattern.json ├── altitude.html ├── altitude.json ├── change-log.html ├── hidden.html ├── hidden.json ├── justaname.html ├── justaname.json ├── simpleproperties.html ├── simpleproperties.json ├── valuetitleclass.html └── valuetitleclass.json ├── h-product ├── aggregate.html ├── aggregate.json ├── change-log.html ├── justahyperlink.html ├── justahyperlink.json ├── justaname.html ├── justaname.json ├── simpleproperties.html └── simpleproperties.json ├── h-recipe ├── all.html ├── all.json ├── change-log.html ├── minimum.html └── minimum.json ├── h-resume ├── affiliation.html ├── affiliation.json ├── change-log.html ├── contact.html ├── contact.json ├── education.html ├── education.json ├── justaname.html ├── justaname.json ├── skill.html ├── skill.json ├── work.html └── work.json ├── h-review-aggregate ├── change-log.html ├── hevent.html ├── hevent.json ├── justahyperlink.html ├── justahyperlink.json ├── simpleproperties.html └── simpleproperties.json ├── h-review ├── change-log.html ├── hyperlink.html ├── hyperlink.json ├── implieditem.html ├── implieditem.json ├── item.html ├── item.json ├── justaname.html ├── justaname.json ├── photo.html ├── photo.json ├── vcard.html └── vcard.json └── rel ├── change-log.html ├── duplicate-rels.html ├── duplicate-rels.json ├── license.html ├── license.json ├── nofollow.html ├── nofollow.json ├── rel-urls.html ├── rel-urls.json ├── varying-text-duplicate-rels.html ├── varying-text-duplicate-rels.json ├── xfn-all.html ├── xfn-all.json ├── xfn-elsewhere.html └── xfn-elsewhere.json /.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 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "bundler" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | assignees: 8 | - "dissolve" 9 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.rspec: -------------------------------------------------------------------------------- 1 | --format documentation 2 | --order random 3 | --require spec_helper 4 | -------------------------------------------------------------------------------- /.rubocop: -------------------------------------------------------------------------------- 1 | --display-style-guide 2 | --extra-details 3 | --parallel 4 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | 3.2.0 2 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # Specify your gem's dependencies in microformats.gemspec 4 | gemspec 5 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /lib/microformats/version.rb: -------------------------------------------------------------------------------- 1 | module Microformats 2 | VERSION = '4.5.0'.freeze 3 | end 4 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/cases/microformats.org/microformats-2/microformats-2-0.html: -------------------------------------------------------------------------------- 1 | 2 | Frances Berriman 3 | -------------------------------------------------------------------------------- /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/cases/microformats.org/microformats-2/microformats-2-1.html: -------------------------------------------------------------------------------- 1 | 2 | Ben Ward 3 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Rohit Khare 5 | 6 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 |
-------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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/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 | } -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-5.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | Mitchell Baker 6 | (Mozilla Foundation) 7 |
-------------------------------------------------------------------------------- /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/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-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.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | Mitchell Baker 6 | (Mozilla Foundation) 9 |
10 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-8.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | Mitchell Baker 6 | (Mozilla Foundation) 9 |
10 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /spec/support/cases/microformats.org/microformats-2/microformats-2-9.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | Mitchell Baker 6 | (Mozilla Foundation) 9 |
10 | -------------------------------------------------------------------------------- /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/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/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/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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /spec/support/lib/edge_cases/blank_value.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | This should not be the value of the content attribute 4 | 5 |
6 | -------------------------------------------------------------------------------- /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/edge_cases/link_parse.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/implied_property/url-fail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/implied_property/url-pass.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/implied_property/url-relative.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/implied_property/url-unnormalized.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/nested-format-with-property-of-same-name.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 13 | 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 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/nested-format-with-property.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/nested-property.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 |
7 | jlsuttles 8 |
9 |
10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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-with-unnormalized-urls.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Rels Test 5 | 6 | 7 | 8 | 9 |
  • Jessica Dillon
  • 10 | 11 | -------------------------------------------------------------------------------- /spec/support/lib/microformats/rels.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Rels Test 5 | 6 | 7 | 8 | 9 |
  • Jeremy Keith
  • 10 |
  • Tantek Çelik
  • 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 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/.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 | -------------------------------------------------------------------------------- /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/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 | } -------------------------------------------------------------------------------- /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/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-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-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-mixed/h-card/tworoots.html: -------------------------------------------------------------------------------- 1 |

    Frances Berriman

    -------------------------------------------------------------------------------- /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-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-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-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-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-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/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-v1/geo/abbrpattern.html: -------------------------------------------------------------------------------- 1 | 2 |

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

    -------------------------------------------------------------------------------- /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/geo/hidden.html: -------------------------------------------------------------------------------- 1 |

    2 | The Bricklayer's Arms 3 | 4 | 5 | 6 | 7 | 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-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-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.html: -------------------------------------------------------------------------------- 1 | 2 |

    3 | 4 | 5 | N 51° 51.345, 6 | 7 | 8 | W -0° 14.812 9 | 10 | 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-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-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-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-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/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-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-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 |
    -------------------------------------------------------------------------------- /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/hcard/email.html: -------------------------------------------------------------------------------- 1 |
    2 | John Doe 3 | 14 |
    -------------------------------------------------------------------------------- /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-v1/hcard/format.html: -------------------------------------------------------------------------------- 1 |

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

    -------------------------------------------------------------------------------- /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/hcard/hyperlinkedphoto.html: -------------------------------------------------------------------------------- 1 | 2 | Rohit Khare 3 | -------------------------------------------------------------------------------- /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-v1/hcard/justahyperlink.html: -------------------------------------------------------------------------------- 1 | Ben Ward -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/justahyperlink.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": {} 5 | }], 6 | "rels": {}, 7 | "rel-urls": {} 8 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/justaname.html: -------------------------------------------------------------------------------- 1 |

    Frances Berriman

    -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v1/hcard/justaname.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "type": ["h-card"], 4 | "properties": {} 5 | }], 6 | "rels": {}, 7 | "rel-urls": {} 8 | } -------------------------------------------------------------------------------- /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/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-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-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-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-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 | -------------------------------------------------------------------------------- /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/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/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 |
    -------------------------------------------------------------------------------- /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-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/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-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 |
    -------------------------------------------------------------------------------- /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-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 |
    -------------------------------------------------------------------------------- /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-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-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/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/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-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-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-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/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-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-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-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-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/hreview/item.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    4 | 5 | Crepes on Cole 6 |

    7 |

    5 out of 5 stars

    8 |
    -------------------------------------------------------------------------------- /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-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-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-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/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/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-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 |
    -------------------------------------------------------------------------------- /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/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-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-v1/includes/table.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
    Opera
    Chris Mills
    Erik Möller
    -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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-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-adr/geourl.html: -------------------------------------------------------------------------------- 1 |

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

    -------------------------------------------------------------------------------- /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/justaname.html: -------------------------------------------------------------------------------- 1 |

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

    -------------------------------------------------------------------------------- /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-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-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/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-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-card/baseurl.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /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-card/childimplied.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |

    Håkon Wium Lie

    5 | 6 |
    7 |
    -------------------------------------------------------------------------------- /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-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 |
    -------------------------------------------------------------------------------- /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-card/hcard.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/hyperlinkedphoto.html: -------------------------------------------------------------------------------- 1 | 2 | Rohit Khare 3 | -------------------------------------------------------------------------------- /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/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-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 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/impliedurl.html: -------------------------------------------------------------------------------- 1 | Jane Doe 2 | Jane Doe 3 | 4 |
    Jane Doe

    5 | -------------------------------------------------------------------------------- /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-v2/h-card/impliedurlempty.html: -------------------------------------------------------------------------------- 1 | Jane Doe 2 | Jane Doe 3 | 4 |
    Jane Doe

    5 | -------------------------------------------------------------------------------- /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-v2/h-card/justahyperlink.html: -------------------------------------------------------------------------------- 1 | Ben Ward -------------------------------------------------------------------------------- /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-card/justaname.html: -------------------------------------------------------------------------------- 1 |

    Frances Berriman

    -------------------------------------------------------------------------------- /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-card/nested.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /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-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 |
    -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/relativeurls.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-card/relativeurlsempty.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 | Max Mustermann 4 |
    -------------------------------------------------------------------------------- /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-entry/encoding.html: -------------------------------------------------------------------------------- 1 |
    2 |
    x<y AT&T <b>NotBold</b> Bold
    3 |
    -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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-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-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-v2/h-entry/justahyperlink.html: -------------------------------------------------------------------------------- 1 | microformats.org at 7 -------------------------------------------------------------------------------- /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-entry/justaname.html: -------------------------------------------------------------------------------- 1 |

    microformats.org at 7

    -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/scriptstyletags.html: -------------------------------------------------------------------------------- 1 |
    2 | A post 3 |
    text bold
    4 |
    5 | -------------------------------------------------------------------------------- /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/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-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-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 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/h-entry/urlincontent.html: -------------------------------------------------------------------------------- 1 |
    2 |

    Expanding URLs within HTML content

    3 | 13 |
    -------------------------------------------------------------------------------- /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-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 |
    -------------------------------------------------------------------------------- /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-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-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-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 |
    -------------------------------------------------------------------------------- /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/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-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-event/dates.html: -------------------------------------------------------------------------------- 1 |
    2 |

    The 4th Microformat party will be on:

    3 |
      4 |
    • 5 |
    • 6 |
    • 7 |
    • 8 |
    • 9 |
    • 10 |
    • 11 |
    • 12 |
    13 |
    -------------------------------------------------------------------------------- /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-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-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/justahyperlink.html: -------------------------------------------------------------------------------- 1 | IndieWebCamp 2012 -------------------------------------------------------------------------------- /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-event/justaname.html: -------------------------------------------------------------------------------- 1 |

    IndieWebCamp 2012

    -------------------------------------------------------------------------------- /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-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 | } -------------------------------------------------------------------------------- /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-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-geo/abbrpattern.html: -------------------------------------------------------------------------------- 1 | 2 |

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

    -------------------------------------------------------------------------------- /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/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 |

    -------------------------------------------------------------------------------- /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-geo/hidden.html: -------------------------------------------------------------------------------- 1 |

    2 | The Bricklayer's Arms 3 | 4 | 5 | 6 | 7 | 8 | 9 | 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-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-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 | } -------------------------------------------------------------------------------- /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-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/h-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/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/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-product/justahyperlink.html: -------------------------------------------------------------------------------- 1 | Raspberry Pi -------------------------------------------------------------------------------- /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-product/justaname.html: -------------------------------------------------------------------------------- 1 |

    Raspberry Pi

    -------------------------------------------------------------------------------- /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-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-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-v2/h-recipe/minimum.html: -------------------------------------------------------------------------------- 1 |
    2 |

    Toast

    3 |
      4 |
    • Slice of bread
    • 5 |
    • Butter
    • 6 |
    7 |
    -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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-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 | -------------------------------------------------------------------------------- /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 |
    -------------------------------------------------------------------------------- /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-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 |
    -------------------------------------------------------------------------------- /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-v2/h-resume/justaname.html: -------------------------------------------------------------------------------- 1 |

    Tim Berners-Lee, invented the World Wide Web.

    -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 |
      8 |
    • information systems
    • 9 |
    • advocacy
    • 10 |
    • leadership
    • 11 |
        12 |
    -------------------------------------------------------------------------------- /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-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-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-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-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-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-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-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-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/h-review/hyperlink.html: -------------------------------------------------------------------------------- 1 | Crepes on Cole -------------------------------------------------------------------------------- /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/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-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 | } -------------------------------------------------------------------------------- /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 |
    -------------------------------------------------------------------------------- /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-v2/h-review/justaname.html: -------------------------------------------------------------------------------- 1 |

    Crepes on Cole

    -------------------------------------------------------------------------------- /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-review/photo.html: -------------------------------------------------------------------------------- 1 | Crepes on Cole -------------------------------------------------------------------------------- /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-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-v2/rel/duplicate-rels.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | Asides 5 | 6 | 8 | 9 | Asides 10 | 11 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/license.html: -------------------------------------------------------------------------------- 1 | cc by 2.5 -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/nofollow.html: -------------------------------------------------------------------------------- 1 | Copyrights -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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/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/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/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-v2/rel/xfn-all.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/tests/tests/microformats-v2/rel/xfn-elsewhere.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------