Create a directory Structure Diagram from a markdown lists.
yarn add @k4a_l/dirtreeist
npm install @k4a_l/dirtreeist
https://www.k4a.me/tools/dirtreeist
- /components
- App.tsx
- App.css
- config.json
- /utils
- converter.ts
- parser.ts
├─/components
│ ├─App.tsx
│ └─App.css
├─config.json
└─/utils
└─converter.ts
└─parser.ts
- /root
- /components
- App.tsx
- App.css
- config.json
- /utils
- converter.ts
- parser.ts
/root
├─/components
│ ├─App.tsx
│ └─App.css
├─config.json
└─/utils
├─converter.ts
└─parser.ts
Consecutive lists are connected.
- a
- b
- c
- d
- 1
- 2
- 3
- 4
├─ a
│ ├─ b
│ └─ c
├─ d
└─ 1
└─ 2
└─ 3
└─ 4
If another element is sandwiched in between, a "only" split lists is output.
- a
- b
- c
- d
sometext
- 1
- 2
- 3
- 4
├─ a
│ ├─ b
│ └─ c
└─ d
└─ 1
└─ 2
└─ 3
└─ 4
const markdown = `
- /components
- App.tsx
- App.css
- config.json
- /utils
- converter.ts
- parser.ts
`
import dirtreeist, { Options } from '@k4a_l/dirtreeist'
const options: Options = {}
const outputs = dirtreeist(markdown, options) // DirTree[] => output[]
console.log(outputs)
or
import { parse, convert, Options } from '@k4a_l/dirtreeist'
const dirTrees = parse(markdown) // markdown => DirTree[]
const options: Options = {}
const outputs = dirTrees.map((dirTree) => convert(dirTree, options)) // DirTree[] => output[]
console.log(outputs)
type DirNode = {
name: string
children: DirNode[]
}
type DirTree = DirNode[]
type Options = {
treeType?: 'normal' | 'bold' | 'ascii'
emptyBeforeUpperHierarche?: boolean
spaceBeforeName?: boolean
spaceSize?: number
}
default:normal
│
├─
│
└─
┃
┣━
┃
┗━
|
+
|
+-
default:false
(true)
├─/components
│ ├─App.tsx
│ └─App.css
│
├─config.json
└─/utils
└─converter.ts
└─parser.ts
default: false
├─ /components
│ ├─ App.tsx
│ └─ App.css
├─ config.json
└─ /utils
└─ converter.ts
└─ parser.ts
default:2
├──/components
│ ├──App.tsx
│ └──App.css
├──config.json
└──/utils
└──converter.ts
└──parser.ts