microformats-parser
Version:
A JavaScript microformats v2 parser for the browser and node.js
121 lines (84 loc) • 3.54 kB
Markdown
A JavaScript microformats v2 parser, with v1 back-compatibility. [View the demo](https://microformats.github.io/microformats-parser/). Works with both the browser and node.js.
Follows the [microformats2 parsing specification](http://microformats.org/wiki/microformats2-parsing).
**Table of contents**
- [Quick start](
- [Installation](
- [Simple use](
- [API](
- [mf2()](
- [Support](
- [Microformats v1](
- [Microformats v2](
- [Experimental options](
- [`lang`](
- [`textContent`](
- [`metaformats`](
- [Contributing](
```bash
yarn add microformats-parser
npm i microformats-parser
```
```javascript
const { mf2 } = require("microformats-parser");
const parsed = mf2('<a class="h-card" href="/" rel="me">Jimmy</a>', {
baseUrl: "http://example.com/",
});
console.log(parsed);
```
Outputs:
```json
{
"items": [
{
"properties": {
"name": ["Jimmy"],
"url": ["http://example.com/"]
},
"type": ["h-card"]
}
],
"rel-urls": {
"http://example.com": {
"rels": ["me"],
"text": "Jimmy"
}
},
"rels": {
"me": ["http://example.com/"]
}
}
```
Use: `mf2(html: string, options: { baseUrl: string, experimental: object })`
- `html` (string, required) - the HTML string to be parsed
- `options` (object, required) - parsing options, with the following properties:
- `baseUrl` (string, required) - a base URL to resolve relative URLs
- `experimental` (object, optional) - experimental (non-standard) options
- `lang` (boolean, optional) - enable support for parsing `lang` attributes
- `textContent` (boolean, optional) - enable support for better collapsing whitespace in text content.
- `metaformats` (boolean, optional) - enable meta tag fallback.
Returns the parsed microformats from the HTML string
This package will parse microformats v1, however support will be limited to the v1 tests in the [microformats test suite](https://github.com/microformats/tests). Contributions are still welcome for improving v1 support.
We provide support for all microformats v2 parsing, as detailed in the [microformats2 parsing specification](http://microformats.org/wiki/microformats2-parsing). If there is an issue with v2 parsing, please create an issue.
There is also support for some experimental parsing options. These can be enabled with the `experimental` flags in the `options` API.
**Note: Experimental options are subject to change at short notice and may change their behaviour without a major version update**
Parse microformats for `lang` attributes. This will include `lang` on microformats and `e-*` properties where available.
These are sourced from the element themselves, a parent microformat, the HTML document or a meta tag.
When parsing microformats for text content, all the consecutive whitespace is collapsed into a single space. `<br/>` and `<p>` tags are treated as line breaks.
Enables fallback to [metaformats](https://microformats.org/wiki/metaformats) parsing which looks at `<meta>` tags to infer content.
See our [contributing guidelines](./CONTRIBUTING.md) for more information.