Microformats Ruby
A Ruby gem for parsing HTML documents containing microformats.
Key Features
Getting Started
Before installing and using microformats-ruby, you'll want to have Ruby 2.4.10 (or newer) installed. It's recommended that you use a Ruby version management tool like rbenv, chruby, or rvm.
microformats-ruby is developed using Ruby 2.7.1 and is additionally tested against versions 2.4, 2.5, 2.6, 2.7, 3.0, and 3.1 using github Actions.
Installation
If you're using Bundler to manage gem dependencies, add microformats-ruby to your project's Gemfile:
source 'https://rubygems.org'
gem 'microformats', '~> 4.0', '>= 4.2.1'
…and then run:
bundle install
You may also install microformats-ruby directly using:
gem install microformats
Usage
An example working with a basic h-card:
source = '<div class="h-card"><p class="p-name">Jessica Lynn Suttles</p></div>'
collection = Microformats.parse(source)
collection.to_hash
collection.to_json
collection.card.name
Below is a more complex markup structure using an h-entry with a nested h-card:
source = '<article class="h-entry">
<h1 class="p-name">Microformats 2</h1>
<div class="h-card p-author">
<p class="p-name"><span class="p-first-name">Jessica</span> Lynn Suttles</p>
</div>
</article>'
collection = Microformats.parse(source)
collection.entry.name.to_s
collection.entry.author.name.to_s
collection.entry.author.name
collection.entry.properties.author.properties.name.to_s
collection.entry.author.first_name
collection.rel_urls
Using the same markup patterns as above, here's an h-entry with multiple authors, each marked up as h-cards:
source = '<article class="h-entry">
<h1 class="p-name">Microformats 2</h1>
<div class="h-card p-author">
<p class="p-name"><span class="p-first-name">Jessica</span> Lynn Suttles</p>
</div>
<div class="h-card p-author">
<p class="p-name"><span class="p-first-name">Brandon</span> Edens</p>
</div>
</article>'
collection = Microformats.parse(source)
collection.entry.author.name
collection.entry.author(1).name
collection.entry.author(:all).count
collection.entry.author(:all)[1].name
Command Line Interface
microformats-ruby also includes a command like program that will parse HTML and return a JSON representation of the included microformats.
microformats http://tantek.com
The program accepts URLs, file paths, or strings of HTML as an argument. Additionally, the script accepts piped input from other programs:
curl http://tantek.com | microformats
Implementation Status
Improving microformats-ruby
Have questions about using microformats-ruby? Found a bug? Have ideas for new or improved features? Want to pitch in and write some code?
Check out CONTRIBUTING.md for more on how you can help!
Acknowledgments
The microformats-ruby logo is derived from the microformats logo mark by Rémi Prévost.
microformats-ruby is written and maintained by:
License
microformats-ruby is dedicated to the public domain using the Creative Commons CC0 1.0 Universal license.
The authors waive all of their rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, and distribute the work, even for commercial purposes, all without asking permission.
See LICENSE for more details.