All Projects → willnorris → microformats

willnorris / microformats

Licence: MIT license
Go library for parsing microformats

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to microformats

takefive.css
The most advanced pure CSS lightbox – not one single line of JavaScript has been wasted
Stars: ✭ 123 (+123.64%)
Mutual labels:  microformats
node-webmention-testpinger
A tool to ping your site with a variety of real world WebMentions
Stars: ✭ 28 (-49.09%)
Mutual labels:  microformats
wordpress-uf2
add "Microformats 2" classes to your WordPress theme
Stars: ✭ 22 (-60%)
Mutual labels:  microformats
XRay
X-Ray returns structured data from any URL
Stars: ✭ 80 (+45.45%)
Mutual labels:  microformats

microformats

GoDoc Test Status Test Coverage

microformats is a go library and tool for parsing microformats, supporting both classic v1 and v2 syntax. It is based on Andy Leap's original library.

Usage

To see this package in action, the simplest way is to install the command line app and use it to fetch and parse a webpage with microformats on it:

% go install willnorris.com/go/microformats/cmd/gomf@latest
% gomf https://indieweb.org

To use it in your own code, import the package:

import "willnorris.com/go/microformats"

If you have the HTML contents of a page in an io.Reader, call Parse like in this example:

content := `<article class="h-entry"><h1 class="p-name">Hello</h1></article>`
r := strings.NewReader(content)

data := microformats.Parse(r, nil)

// do something with data, or just print it out as JSON:
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", "  ")
enc.Encode(data)

Alternately, if you have already parsed the page and have an html.Node, then call ParseNode. For example, you might want to select a subset of the DOM, and parse only that for microformats. An example of doing this with the goquery package can be seen in cmd/gomf/main.go.

To see that in action using the gomf app installed above, you can parse the microformats from indieweb.org that appear within the #content element:

% gomf https://indieweb.org "#content"

{
  "items": [
    {
      "id": "content",
      "type": [
        "h-entry"
      ],
      "properties": ...
      "children": ...
    }
  ],
  "rels": {},
  "rel-urls": {}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].