sfm-js/README.md
marihachi 5fe291a7e7
TypeScript版パーサーのマージ (#124)
* implement parser with TypeScript (#116)

* clean parser

* parser, success, failure, str, parser.map

* seq

* atLeast, any, alt, match, notMatch

* mergeText

* improve seq

* lazy, createLanguage

* types

* regexp, refactor

* nest limit

* lint

* state

* syntaxes

* sep1, succeeded, option, fn

* simple

* strikeWave, plainTag, inlineCode, mathInline

* mention, refactor

* seqPartial

* 🚀

* parser trace

* fix mention, implement hashtag

* lineBegin, lineEnd, refactor

* imple codeBlock, fix lineEnd

* codeBlock, mathBlock

* fix codeBlock

* fix mathBlock

* fix codeBlock

* lint

* fix inlineCode

* 🚀

* centerTag

* fix nesting limit

* fix unicodeEmoji

* 🚀

* search

* refactor

* seqPartial -> seqOrText

* lint

* url, urlAlt

* 🚀

* 🚀

* text

* fix

* link

* linkLabel state

* lint

* nesting limit for link label

* fix url bracket pair

* nest

* refactor

* refactor

* remove

* add test

* wip quote

* add quote test

* quote

* refactor

* hashtag

* refactor

* type

* type

* refactor

* lint

* url

* italicAsta, italicUnder

* italicAsta, italicUnder, mention, rethink spec

* rethink spec

* test: change implementation-dependent parts

* hashtag

* add mention test

* mention

* mention

* mention

* mention

* url

* test

* hashtag

* Revert "Auxiliary commit to revert individual files from 373972beef10eb99ff3e3635a32a207854154a2a"

This reverts commit 622b66e20778ad5c283ea7629db853cbf2bb601f.

* package-lock

* Update tsconfig.json

* Update tsconfig.json

* ignore a tsd error when importing twemoji-parser regexp

* lint

* lint

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>

* v0.23.0-canary.1

* readme

* update chagelog

* update changelog

* update changelog

* refactor

* update core combinators

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2022-07-22 02:21:56 +09:00

1.4 KiB
Raw Blame History

mfm.js

An MFM parser implementation with TypeScript. Try it out!

Test codecov

NPM

Installation

npm i mfm-js

Usage

Please see docs for the detail.

TypeScript:

import * as mfm from 'mfm-js';

const inputText =
`<center>
Hello $[tada everynyan! 🎉]

I'm @ai, A bot of misskey!

https://github.com/syuilo/ai
</center>`;

// Generate a MFM tree from the full MFM text.
const mfmTree = mfm.parse(inputText);

// Generate a MFM tree from the simple MFM text.
const simpleMfmTree = mfm.parseSimple('I like the hot soup :soup:');

// Reverse to a MFM text from the MFM tree.
const text = mfm.toString(mfmTree);

Develop

1. Clone

git clone https://github.com/misskey-dev/mfm.js.git

2. Install packages

cd mfm.js
npm i

3. Build

npm run build

Use the interactive CLI parser

full parser:

npm run parse

simple parser:

npm run parse-simple

License

This software is released under the MIT License.