0.4.6 • Published 5 years ago

select-section v0.4.6

Weekly downloads
2,310
License
MIT
Repository
github
Last release
5 years ago

select-section

Cut out sections from TxtAST or mdast.

Section?

A section is slitted by Header Node.

This rule defined section as following:

The Markdown contents

# Header1

text.

# Header2

text.

to be

------------|---- # Header 1
            | 
Section1    |     text.
            |
------------|---- # Header 2
            |
Section2    |     text.
            |
------------|---------------

Same Level header

A section is slitted by Header Node.

This rule defined section as following:

The Markdown contents

# Header1

text.

## Header2

text.

to be

--------------------------|---- # Header 1
                          | 
  Section1                |     text.
                          |
            --------------|---- ## Header 2
            -            -|
            -  Section2  -|     text.
            -            -|
--------------------------|---------------

Tree view:

└── _Section1_
    ├── # Header 1
    ├── text.
    └── _Section2_
        ├── ## Header 2
        └── text.

Install

Install with npm:

npm install select-section

Usage

Create "Section" node that compatible with TxtAST.

const createSections = require("select-section");
const parse = require("markdown-to-ast").parse;
const AST = parse(`# Header
text1
text1

# Header

text2
text2`);
const results = createSections(AST);
/*
[
    {
        "type": "Section",
        "range": [
            0,
            20
        ],
        "loc": {
            "start": {
                "line": 1,
                "column": 0
            },
            "end": {
                "line": 3,
                "column": 5
            }
        },
        "raw": "# Headertext1\ntext1",
        "children": [
            {
                "type": "Header",
                "depth": 1,
                "children": [
                    {
                        "type": "Str",
                        "value": "Header",
                        "loc": {
                            "start": {
                                "line": 1,
                                "column": 2
                            },
                            "end": {
                                "line": 1,
                                "column": 8
                            }
                        },
                        "range": [
                            2,
                            8
                        ],
                        "raw": "Header"
                    }
                ],
                "loc": {
                    "start": {
                        "line": 1,
                        "column": 0
                    },
                    "end": {
                        "line": 1,
                        "column": 8
                    }
                },
                "range": [
                    0,
                    8
                ],
                "raw": "# Header"
            },
            {
                "type": "Paragraph",
                "children": [
                    {
                        "type": "Str",
                        "value": "text1\ntext1",
                        "loc": {
                            "start": {
                                "line": 2,
                                "column": 0
                            },
                            "end": {
                                "line": 3,
                                "column": 5
                            }
                        },
                        "range": [
                            9,
                            20
                        ],
                        "raw": "text1\ntext1"
                    }
                ],
                "loc": {
                    "start": {
                        "line": 2,
                        "column": 0
                    },
                    "end": {
                        "line": 3,
                        "column": 5
                    }
                },
                "range": [
                    9,
                    20
                ],
                "raw": "text1\ntext1"
            }
        ]
    },
    {
        "type": "Section",
        "range": [
            22,
            43
        ],
        "loc": {
            "start": {
                "line": 5,
                "column": 0
            },
            "end": {
                "line": 8,
                "column": 5
            }
        },
        "raw": "# Headertext2\ntext2",
        "children": [
            {
                "type": "Header",
                "depth": 1,
                "children": [
                    {
                        "type": "Str",
                        "value": "Header",
                        "loc": {
                            "start": {
                                "line": 5,
                                "column": 2
                            },
                            "end": {
                                "line": 5,
                                "column": 8
                            }
                        },
                        "range": [
                            24,
                            30
                        ],
                        "raw": "Header"
                    }
                ],
                "loc": {
                    "start": {
                        "line": 5,
                        "column": 0
                    },
                    "end": {
                        "line": 5,
                        "column": 8
                    }
                },
                "range": [
                    22,
                    30
                ],
                "raw": "# Header"
            },
            {
                "type": "Paragraph",
                "children": [
                    {
                        "type": "Str",
                        "value": "text2\ntext2",
                        "loc": {
                            "start": {
                                "line": 7,
                                "column": 0
                            },
                            "end": {
                                "line": 8,
                                "column": 5
                            }
                        },
                        "range": [
                            32,
                            43
                        ],
                        "raw": "text2\ntext2"
                    }
                ],
                "loc": {
                    "start": {
                        "line": 7,
                        "column": 0
                    },
                    "end": {
                        "line": 8,
                        "column": 5
                    }
                },
                "range": [
                    32,
                    43
                ],
                "raw": "text2\ntext2"
            }
        ]
    }
]
*/

Example

Changelog

See Releases page.

Running tests

Install devDependencies and Run npm test:

npm i -d && npm test

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

MIT © azu