An open API service indexing awesome lists of open source software.

https://github.com/magic/transmute

transform html and markdown into magic functional js structures
https://github.com/magic/transmute

Last synced: 10 months ago
JSON representation

transform html and markdown into magic functional js structures

Awesome Lists containing this project

README

          

## @magic/transmute

transmutes html and markdown to @magic view fragments

[![NPM version][npm-image]][npm-url]
[![Linux Build Status][travis-image]][travis-url]
[![Windows Build Status][appveyor-image]][appveyor-url]
[![Coverage Status][coveralls-image]][coveralls-url]
[![Known Vulnerabilities][snyk-image]][snyk-url]

### installation

#### cli:

```bash
npm i -g @magic/transmute

// executable as magic-transmute now
magic-transmute
```

#### javascript api

```bash
npm i --save @magic/transmute
```

### usage

#### cli:

`magic-transmute --help`

#### commands:

- markdown - convert markdown to magic functions
- html - convert html to magic functions
- file - convert file to magic functions

#### flags:

- --add-wrapper - add export default[] to the returned string. - alias: ["--addWrapper"]
- --no-pretty - do not run prettier. - alias: ["--noPretty"]
- --markdown - force markdown parser to run. - alias: ["--mark", "-m"]
- --output - output file path - alias: ["--out", "-o"]
- --input - input file path - alias: ["--in", "-i"]
- --help - this help text - alias: ["-help", "help", "--h", "-h"]
- --str - an input string of either html or markdown, depending on running command

##### transpile html string:

`magic-transmute html --str 'magic!'`

##### transpile markdown string:

`magic-transmute markdown --str '[magic!](https://magic.github.io)'`

##### html file:

`magic-transmute file --input input.html --output output.mjs`

##### markdown file

(.markdown and .md get recognized):

`magic-transmute file --input input.md --output output.mjs`

##### force markdown

(arbitrary file extensions)

`magic-transmute file --input input.txt --output output.mjs --markdown`

#### api examples

```javascript
import transmute from '@magic/transmute'

// html to magic
transmute.html('magic!')
// returns: `Link({ to: 'https://magic.github.io' }, 'magic!')`

// markdown to magic
transmute.markdown('[magic!](https://magic.github.io)')
// returns: `Link({ to: 'https://magic.github.io' }, 'magic!')`

const magic = transmute.markdown('[magic!](https://magic.github.io)')
console.log(magic)
// logs: `Link({ to: 'https://magic.github.io' }, 'magic!')`

// that's it.
```

#### changelog

##### 0.0.1

first release

##### 0.0.2

update dependencies

##### 0.0.3

fix cli

##### 0.0.4

update @magic dependencies to use npm packages instead of github

##### 0.0.5

- extract state from html and markdown files
- allow usage of state variables in markdown and html

##### 0.0.6

- pass options from LexLex to marked.Lexer
- only implant state in html if it has not been passed as argument
- correctly camelCase object keys for html tags
- correctly merge passed state with in-file state for markdown and html

##### 0.0.7 - broken

remove commonjs support, node >= 13.5.0 required

##### 0.0.8

export correct cli file

##### 0.0.9

do not lowercase @magic-module names, some other minor changes

##### 0.0.10

do not wrap @magic-modules in p tags

##### 0.0.11

- remove eval from state injection function.
- correctly handle both ${} and {{}} variables in markdown and html files.

##### 0.0.12

state keys in ${} and {{ }} get trimmed... doh.

##### 0.0.13

return originalState, which is the state derived from the markdown/html file.
this allows @magic to use this state for individual pages when building them.

##### 0.0.14

##### FULL @magic-module api available from markdown.

- nested state variables in template strings eg {{state.test.deep.var}} now work.
- replace parse5 with posthtml.
- custom markdown and custom html renderers added.
- @magic-modules in markdown and html can have keys that are arrays or objects now.

##### 0.0.15

if the value of a ${state.variable} in a template string is an array, this array gets join(' ')ed

##### 0.0.16

render/html: empty arrays and objects return an empty string.

##### 0.0.17

render/markdown.codespan: do not show linenumbers for codespans.

##### 0.0.18

- handle " escapes.
- string delimiters ', " AND ` in a string do not error, get escaped instead.

##### 0.0.19

- actually escape multiple html entities in a string, not just the first occurrence

##### 0.0.20

update dependencies

##### 0.0.21

update dependencies

##### 0.0.22

update prettier, @magic/cli

##### 0.0.23

Link and Img do not get wrapped in a paragraph (anymore)

##### 0.0.24

update marked and prettier

##### 0.0.25

update dependencies

##### 0.0.26

- bump required node version to 14.2.0
- update dependencies

##### 0.0.27

- update dependencies
- FIX: command line interface was broken.

##### 0.0.28

- update dependencies
- move magic-modules/no-spy to devDependencies

##### 0.0.29

update dependencies

##### 0.0.30

update dependencies

##### 0.0.31

update dependencies

##### 0.0.32

update dependencies

##### 0.0.33

- update dependencies
- fix markdown html handling changes

##### 0.0.34

- update dependencies

##### 0.0.35

update dependencies

##### 0.0.36

update dependencies

##### 0.0.37

- bump required node version to 14.15.4
- update dependencies

##### 0.0.38

update dependencies

##### 0.0.39

update dependencies (marked)

##### 0.0.40

update dependencies (posthtml-parser)

##### 0.0.41

remove call to undefined cleanUrl from markdown.image

##### 0.0.42

update dependencies

##### 0.0.43

- if the array returned by transmute has a length of 1, return that item instead
- update dependencies

##### 0.0.44

do return arrays in all cases. adapt tests to accomodate for that

##### 0.0.45

update dependencies

##### 0.0.46

update dependencies to avoid circular dependencies in @magic/types

##### 0.0.47

update dependencies

##### 0.0.48

update dependencies

##### 0.0.49

update dependencies

##### 0.0.50

update dependencies

##### 0.0.51

update dependencies

##### 0.0.52

update dependencies

##### 0.0.53

update dependencies

##### 0.0.54

update dependencies

##### 0.0.55

update dependencies

##### 0.0.56

update dependencies

##### 0.0.57

update dependencies

##### 0.0.58 - unreleased

...

[npm-image]: https://img.shields.io/npm/v/@magic/transmute.svg
[npm-url]: https://www.npmjs.com/package/@magic/transmute
[travis-image]: https://img.shields.io/travis/com/magic/transmute/master
[travis-url]: https://travis-ci.com/magic/transmute
[appveyor-image]: https://img.shields.io/appveyor/ci/magic/transmute/master.svg
[appveyor-url]: https://ci.appveyor.com/project/magic/transmute/branch/master
[coveralls-image]: https://coveralls.io/repos/github/magic/transmute/badge.svg
[coveralls-url]: https://coveralls.io/github/magic/transmute
[snyk-image]: https://snyk.io/test/github/magic/transmute/badge.svg
[snyk-url]: https://snyk.io/test/github/magic/transmute