aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: be191fb02c5f2003bd928b1ae51717783577103e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# remark-attr

This plugin add support of custom attributes to Markdown syntax.

For **security reasons**, this plugin use [html-element-attributes](https://github.com/wooorm/html-element-attributes).  
The use of JavaScript attributes (onload for example) is not allowed by default.

## Default Syntax

Images : 
```markdown
![alt](img){attrs} / ![alt](img){ height=50 }
```

Links   :
```markdown
[Hot babe with computer](https://rms.sexy){rel="external"}
```

Header (Atx) :
```markdown
### This is a title
{style="color:red;"}
```
Header :
```markdown
This is a title
---------------
{style="color: pink;"}
```


Emphasis :
```markdown
Npm stand for *node*{style="color:red"} packet manager.
```

Strong  :
```markdown
This is a **Unicorn**{awesome} !
```

Delete  :
```markdown
Your problem is ~~at line 18~~{style="color: grey"}. My mistake, it's at line 14.
```

Code    :
```markdown
You can use the `fprintf`{language=c} function to format the output to a file.
```

## rehype

At the moment it aims is to be used with [rehype][rehype] only, using remark-rehype.

```md
[Hot babe with computer](https://rms.sexy){rel="external"}
```

gives:

```html
<a href="https://rms.sexy" rel="external">Hot babe with computer</a>
```

## Installation

[npm][npm]:

```bash
npm install remark-attr
```

## Dependencies:

```javascript
const unified = require('unified')
const remarkParse = require('remark-parse')
const stringify = require('rehype-stringify')
const remark2rehype = require('remark-rehype')
const remarkAttr = require('remark-attr')

```

## Usage:

```javascript
const testFile = `

Here a test :

![ache avatar](https://ache.one/res/ache.svg){ height=100 }

`

unified()
  .use(remarkParse)
  .use(remarkAttr)
  .use(remark2rehype)
  .use(stringify)
  .process( testFile, (err, file) => {
    console.log(String(file))
  } )
```

Output :

```shell
$ node index.js
<p>Here a test :</p>
<p><img src="https://ache.one/res/ache.svg" alt="ache avatar" height="100"></p>
```

## API

### `remarkAttr([options])`

Parse attributes of markdown elements.

#### `remarkAttr.SUPPORTED_ELEMENTS`

The list of currently supported elements.

`['link', 'atxHeading', 'strong', 'emphasis', 'deletion', 'code', 'setextHeading']`

##### Options

###### `options.allowDangerousDOMEventHandlers`

Whether to allow the use of `on-*` attributes. They are depreciated and disabled by default for security reason. Its a boolean (default: `false`).
If allowed, DOM event handlers will be added to the global scope.

###### `options.elements`

The list of elements witch the attributes should be parsed. It's a list of string, a sub-list of `SUPPORTED_ELEMENTS`.

###### `options.extend`

An object that extends the list of attributes supported for some elements.

Example : 

```
extend: {atxHeading: ['original', 'quality', 'format', 'toc']}
```

With this configuration, if the scope permit it, 4 mores attributes will be supported for atxHeading elements.

###### `options.scope`

A string with the value `"global"` or `"specific"` or `"extented"` or `"none"` or `"every"`.

 - `"none"` will disable the plugin.
 - `"global"` will activate only the global attributes.
 - `"specific"` will activate global and specific attributes.
 - `"extended"` will add personalized tags for some elements.
 - `"permissive"` or `"every"` will allow every attributes (except dangerous one) on every elements supported.

## License

Distributed under a MIT-like license.

[npm]: https://www.npmjs.com/package/remark-attr

[rehype]: https://github.com/wooorm/rehype