Представление структуры каталогов и файлов в синтаксисе Markdown
Я хочу описать структуру каталогов и файлов в некоторых моих блогах в блоге Jekyll, не делает ли Markdown опрятный способ вывода такой вещи?
Например, вы можете увидеть по этой ссылке на веб-сайте Jekyll, на котором выводится каталог и файловая структура на странице очень аккуратно:
.
├── _config.yml
├── _drafts
| ├── begin-with-the-crazy-ideas.textile
| └── on-simplicity-in-technology.markdown
├── _includes
| ├── footer.html
| └── header.html
├── _layouts
| ├── default.html
| └── post.html
├── _posts
| ├── 2007-10-29-why-every-programmer-should-play-nethack.textile
| └── 2009-04-26-barcamp-boston-4-roundup.textile
├── _data
| └── members.yml
├── _site
└── index.html
Я считаю, что символы строкового блока выше, чем Unicode (как описано в здесь, здесь), но не знаете, как Markdown или разные браузеры будет обрабатывать их. Я надеялся, что Markdown включил некоторый способ сделать это, который выводится как символы Unicode выше, возможно.
Ответы
Ответ 1
Если вас беспокоят символы Unicode, вы можете использовать ASCII для построения структур, поэтому ваша структура примера станет
.
+-- _config.yml
+-- _drafts
| +-- begin-with-the-crazy-ideas.textile
| +-- on-simplicity-in-technology.markdown
+-- _includes
| +-- footer.html
| +-- header.html
+-- _layouts
| +-- default.html
| +-- post.html
+-- _posts
| +-- 2007-10-29-why-every-programmer-should-play-nethack.textile
| +-- 2009-04-26-barcamp-boston-4-roundup.textile
+-- _data
| +-- members.yml
+-- _site
+-- index.html
То, что похоже на формат tree
, используется, если вы выберете ANSI
вывод.
Ответ 2
Я последовал примеру в другом репозитории и обернул структуру каталогов в пару тройных обратных ссылок (```
):
```
project
│ README.md
│ file001.txt
│
└───folder1
│ │ file011.txt
│ │ file012.txt
│ │
│ └───subfolder1
│ │ file111.txt
│ │ file112.txt
│ │ ...
│
└───folder2
│ file021.txt
│ file022.txt
```
Ответ 3
Вы можете использовать tree для создания чего-то очень похожего на ваш пример. После того, как у вас есть выход, вы можете обернуть его в тег <pre>
, чтобы сохранить форматирование обычного текста.
Ответ 4
Я сделал модуль node для автоматизации этой задачи: mddir
Использование
node mddir "../relative/path/"
Для установки: npm install mddir -g
Чтобы создать уценку для текущего каталога: mddir
Сгенерировать для любого абсолютного пути: mddir/absolute/path
Сгенерировать для относительного пути: mddir ~/Documents/whatever.
Файл md создается в вашем рабочем каталоге.
В настоящее время игнорирует папки node_modules и .git.
Устранение неполадок
Если вы получили сообщение об ошибке "node\r: Нет такого файла или каталога", проблема заключается в том, что ваша операционная система использует разные концы строк, и mddir не может их разобрать без явной установки стиля окончания строки в Unix, Это обычно затрагивает Windows, но также некоторые версии Linux. Настройка конца строки в стиле Unix должна выполняться в глобальной папке bin mddir npm.
Исправления строк
Получить путь к папке npm bin с помощью:
npm config get prefix
Cd в эту папку
brew установить dos2unix
dos2unix lib/ node_modules/mddir/src/mddir.js
Это преобразует окончание строк в Unix вместо Dos
Затем выполните как обычно: node mddir "../relative/path/".
Пример сгенерированной файловой структуры markdown 'directoryList.md'
|-- .bowerrc
|-- .jshintrc
|-- .jshintrc2
|-- Gruntfile.js
|-- README.md
|-- bower.json
|-- karma.conf.js
|-- package.json
|-- app
|-- app.js
|-- db.js
|-- directoryList.md
|-- index.html
|-- mddir.js
|-- routing.js
|-- server.js
|-- _api
|-- api.groups.js
|-- api.posts.js
|-- api.users.js
|-- api.widgets.js
|-- _components
|-- directives
|-- directives.module.js
|-- vendor
|-- directive.draganddrop.js
|-- helpers
|-- helpers.module.js
|-- proprietary
|-- factory.actionDispatcher.js
|-- services
|-- services.cardTemplates.js
|-- services.cards.js
|-- services.groups.js
|-- services.posts.js
|-- services.users.js
|-- services.widgets.js
|-- _mocks
|-- mocks.groups.js
|-- mocks.posts.js
|-- mocks.users.js
|-- mocks.widgets.js
Ответ 5
Как уже рекомендовано, вы можете использовать tree
. Но для его использования вместе с реструктурированным текстом потребовались дополнительные параметры.
Стандартный вывод tree
не будет напечатан, если вы используете pandoc
для создания pdf.
tree --dirsfirst --charset=ascii /path/to/directory
создаст красивое дерево ASCII
, которое можно интегрировать в ваш документ следующим образом:
.. code::
.
|-- ContentStore
| |-- de-DE
| | |-- art.mshc
| | |-- artnoloc.mshc
| | |-- clientserver.mshc
| | |-- noarm.mshc
| | |-- resources.mshc
| | `-- windowsclient.mshc
| `-- en-US
| |-- art.mshc
| |-- artnoloc.mshc
| |-- clientserver.mshc
| |-- noarm.mshc
| |-- resources.mshc
| `-- windowsclient.mshc
`-- IndexStore
|-- de-DE
| |-- art.mshi
| |-- artnoloc.mshi
| |-- clientserver.mshi
| |-- noarm.mshi
| |-- resources.mshi
| `-- windowsclient.mshi
`-- en-US
|-- art.mshi
|-- artnoloc.mshi
|-- clientserver.mshi
|-- noarm.mshi
|-- resources.mshi
`-- windowsclient.mshi
Ответ 6
Я написал это для моего списка файлов Dropbox.
sed
используется для удаления полных путей симлинкового пути файла/папки, следующих после ->
К сожалению, вкладки теряются. Использование zsh
Я могу сохранить вкладки.
!/usr/bin/env bash
#!/usr/bin/env zsh
F1='index-2.md' #With hyperlinks
F2='index.md'
if [ -e $F1 ];then
rm $F1
fi
if [ -e $F2 ];then
rm $F2
fi
DATA=`tree --dirsfirst -t -Rl --noreport | \
sed 's/->.*$//g'` # Remove symlink adress and ->
echo -e '```\n' ${DATA} '\n```' > $F1 # Markdown needs triple back ticks for <pre>
# With the power of piping, creating HTML tree than pipe it
# to html2markdown program, creates cool markdown file with hyperlinks.
DATA=`tree --dirsfirst -t -Rl --noreport -H http://guneysu.pancakeapps.com`
echo $DATA | \
sed 's/\r\r/\n/g' | \
html2markdown | \
sed '/^\s*$/d' | \
sed 's/\# Directory Tree//g' | \
> $F2
Выходы, подобные этому:
```
.
├── 2013
│ └── index.markdown
├── 2014
│ └── index.markdown
├── 2015
│ └── index.markdown
├── _posts
│ └── 2014-12-27-2014-yili-degerlendirmesi.markdown
├── _stash
└── update.sh
```
[BASE_URL/](BASE_URL/)
├── [2013](BASE_URL/2013/)
│ └── [index.markdown](BASE_URL/2013/index.markdown)
├── [2014](BASE_URL/2014/)
│ └── [index.markdown](BASE_URL/2014/index.markdown)
├── [2015](BASE_URL/2015/)
│ └── [index.markdown](BASE_URL/2015/index.markdown)
├── [_posts](BASE_URL/_posts/)
│ └── [2014-12-27-2014-yili-degerlendirmesi.markdown](_posts/2014-12-27-2014-yili-degerlendirmesi.markdown)
├── [_stash](BASE_URL/_stash/)
├── [index-2.md](BASE_URL/index-2.md)
└── [update.sh](BASE_URL/update.sh)
* * *
tree v1.6.0 © 1996 - 2011 by Steve Baker and Thomas Moore
HTML output hacked and copyleft © 1998 by Francesc Rocher
Charsets / OS/2 support © 2001 by Kyosuke Tokoro
Ответ 7
Если вы используете редактор Atom, вы можете сделать это с помощью пакета ascii-tree.
Вы можете написать следующее дерево:
root
+-- dir1
+--file1
+-- dir2
+-- file2
и преобразовать его в следующее, выбрав его и нажав ctrl-alt-t
:
root
├── dir1
│ └── file1
└── dir2
└── file2
Ответ 8
В OSX при использованиикартируйт .js reveal.js
меня reveal.js
проблема с рендерингом, если я просто reveal.js
tree
пользователя и затем reveal.js
вывод: появляются странные символы.
Я нашел 2 возможных решения.
1) Используйте кодировку ascii и просто скопируйте/вставьте вывод в файл уценки
tree -L 1 --charset=ascii
2) Используйте непосредственно HTML и Unicode в файле уценки
<pre>
.
⊢ README.md
⊢ docs
⊢ e2e
⊢ karma.conf.js
⊢ node_modules
⊢ package.json
⊢ protractor.conf.js
⊢ src
⊢ tsconfig.json
⌙ tslint.json
</pre>
Надеюсь, поможет.
Ответ 9
Я бы предложил использовать wasabi, тогда вы можете использовать markdown-ish, как это,
root/ # entry comments can be inline after a '#'
# or on their own line, also after a '#'
readme.md # a child of, 'root/', it indented
# under its parent.
usage.md # indented syntax is nice for small projects
# and short comments.
src/ # directories MUST be identified with a '/'
fileOne.txt # files don't need any notation
fileTwo* # '*' can identify executables
[email protected] # '@' can identify symlinks
и введите этот точный синтаксис в библиотеке js для this
![wasabi example]()
Ответ 10
Если вы хотите генерировать его динамически, я рекомендую использовать Frontend-md. Это просто в использовании.
Ответ 11
У меня есть обновленная версия, которая работает так же, но кроссплатформенная с некоторыми улучшениями. Я отправил его как предварительный запрос автору, ожидающему рассмотрения. Не стесняйтесь проверить это. Это позволяет избежать проблем, с которыми вы сталкиваетесь выше.
[ https://github.com/flypapertech/mddir][1]
Ответ 12
Если вы используете VS Code, это отличное расширение для генерации файловых деревьев. https://marketplace.visualstudio.com/items?itemName=Shinotatwu-DS.file-tree-generator
Добавлено прямо в уценку...
📦quakehunter
┣ 📂client
┣ 📂node_modules
┣ 📂server
┃ ┗ 📜index.js
┣ 📜.gitignore
┣ 📜package-lock.json
┗ 📜package.json