Closed9
remark-directive のメモ
remark-directive を使ったのでメモ。
syntax: https://github.com/micromark/micromark-extension-directive#syntax
今回使うのは textDirective。
:name[label]{attributes}
:num[foo]{name="bar"}
を parse すると以下のようになる。
{
type: 'textDirective',
name: 'num',
attributes: { name: 'bar' },
children: [ { type: 'text', value: 'foo', position: [Object] } ],
position: {
start: { line: 1, column: 1, offset: 0 },
end: { line: 1, column: 22, offset: 21 }
}
}
label
は chidlren
にtext
ノードして格納される。
ラベルは省略できる。
:num{name="foo"}
{
type: 'textDirective',
name: 'num',
attributes: { name: 'bar' },
children: [],
position: {
start: { line: 1, column: 1, offset: 0 },
end: { line: 1, column: 17, offset: 16 }
}
}
containerDirective も使うことにした。
:::num
## title
:::
result
{
"type": "containerDirective",
"name": "num",
"attributes": {},
"children": [
{
"type": "heading",
"depth": 2,
"children": [
{
"type": "text",
"value": "title",
"position": {
"start": {
"line": 2,
"column": 4,
"offset": 10
},
"end": {
"line": 2,
"column": 9,
"offset": 15
}
}
}
],
"position": {
"start": {
"line": 2,
"column": 1,
"offset": 7
},
"end": {
"line": 2,
"column": 9,
"offset": 15
}
}
}
],
"position": {
"start": {
"line": 1,
"column": 1,
"offset": 0
},
"end": {
"line": 3,
"column": 4,
"offset": 19
}
}
}
containerDirective の中の textDirective も扱える。
:::num
## :num{name=chapter reset}
:::
result
{
"type": "containerDirective",
"name": "num",
"attributes": {},
"children": [
{
"type": "heading",
"depth": 2,
"children": [
{
"type": "textDirective",
"name": "num",
"attributes": {
"name": "chapter",
"reset": ""
},
"children": [],
"position": {
"start": {
"line": 2,
"column": 4,
"offset": 10
},
"end": {
"line": 2,
"column": 30,
"offset": 36
}
}
}
],
"position": {
"start": {
"line": 2,
"column": 1,
"offset": 7
},
"end": {
"line": 2,
"column": 30,
"offset": 36
}
}
}
],
"position": {
"start": {
"line": 1,
"column": 1,
"offset": 0
},
"end": {
"line": 3,
"column": 4,
"offset": 40
}
}
}
alt
などでは使えない。
:num{#foo}
で id
属性を指定する記法では .
を使えない。
:num{#a.test}
の場合、以下のように .test
がクラス指定として扱われる。
-
id
-a
-
class
- test
{
"type": "textDirective",
"name": "num",
"attributes": {
"id": "a",
"class": "test"
},
"children": [],
"position": {
"start": {
"line": 3,
"column": 1,
"offset": 17
},
"end": {
"line": 3,
"column": 14,
"offset": 30
}
}
},
textDirective の label の中での textDirective( paragraph
なのでとくに制約はない)。
:num[foo:num[bar]{car}baz]
resut
{
"type": "root",
"children": [
{
"type": "paragraph",
"children": [
{
"type": "textDirective",
"name": "num",
"attributes": {},
"children": [
{
"type": "text",
"value": "foo",
"position": {
"start": {
"line": 1,
"column": 6,
"offset": 5
},
"end": {
"line": 1,
"column": 9,
"offset": 8
}
}
},
{
"type": "textDirective",
"name": "num",
"attributes": {
"car": ""
},
"children": [
{
"type": "text",
"value": "bar",
"position": {
"start": {
"line": 1,
"column": 14,
"offset": 13
},
"end": {
"line": 1,
"column": 17,
"offset": 16
}
}
}
],
"position": {
"start": {
"line": 1,
"column": 9,
"offset": 8
},
"end": {
"line": 1,
"column": 23,
"offset": 22
}
}
},
{
"type": "text",
"value": "baz",
"position": {
"start": {
"line": 1,
"column": 23,
"offset": 22
},
"end": {
"line": 1,
"column": 26,
"offset": 25
}
}
}
],
"position": {
"start": {
"line": 1,
"column": 1,
"offset": 0
},
"end": {
"line": 1,
"column": 27,
"offset": 26
}
}
}
],
"position": {
"start": {
"line": 1,
"column": 1,
"offset": 0
},
"end": {
"line": 1,
"column": 27,
"offset": 26
}
}
}
],
"position": {
"start": {
"line": 1,
"column": 1,
"offset": 0
},
"end": {
"line": 2,
"column": 1,
"offset": 27
}
}
}
このスクラップは2022/01/11にクローズされました