Closed9

remark-directive のメモ

hankei6kmhankei6km

: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 }
      }
    }

labelchidlrentext ノードして格納される。

hankei6kmhankei6km

ラベルは省略できる。

: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 }
      }
    } 
hankei6kmhankei6km

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
        }
    }
}
hankei6kmhankei6km

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
            }
        }
    }
hankei6kmhankei6km

: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
    }
  }
},

hankei6kmhankei6km

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にクローズされました