unicode - directorios - Representación de directorio y estructura de archivos en la sintaxis de reducción
estructura de directorios y carpetas (10)
Quiero describir las estructuras de directorios y archivos en algunas de mis publicaciones de blog de Jekyll, ¿proporciona Markdown una forma ordenada de generar tal cosa?
Por ejemplo, puede ver en este enlace en el sitio web de Jekyll que el directorio y la estructura de archivos se publican en la página muy claramente:
.
├── _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
Creo que los caracteres del bloque de líneas de arriba son Unicode (como se describe en esta respuesta aquí ), pero no estoy seguro de cómo Markdown o los diferentes navegadores los manejarán. Tenía la esperanza de que Markdown incluyera alguna forma de hacer esto que produzca los caracteres Unicode arriba tal vez.
Bajo OSX, usando reveal.js
, tengo un problema de renderizado si solo reveal.js
tree
y luego copio / pego el resultado: aparecen símbolos extraños.
He encontrado 2 soluciones posibles.
1) Use charset ascii y simplemente copie / pegue la salida en el archivo de reducción
tree -L 1 --charset=ascii
2) Use directamente HTML y Unicode en el archivo de reducción
<pre>
.
⊢ README.md
⊢ docs
⊢ e2e
⊢ karma.conf.js
⊢ node_modules
⊢ package.json
⊢ protractor.conf.js
⊢ src
⊢ tsconfig.json
⌙ tslint.json
</pre>
Espero eso ayude.
Como ya se lo recomendó, puede usar tree
. Pero para usarlo junto con el texto reestructurado se requerían algunos parámetros adicionales.
La salida de tree
estándar no se imprimirá si está usando pandoc
para producir pdf.
tree --dirsfirst --charset=ascii /path/to/directory
producirá un buen árbol ASCII
que se puede integrar en su documento de esta manera:
.. 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
Escribí esto para mi lista de archivos de Dropbox.
sed
se usa para eliminar las rutas completas de la ruta del archivo / carpeta enlazada después de ->
Desafortunadamente, las pestañas están perdidas. Usando zsh
puedo preservar pestañas.
! / 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
Las salidas como esta:
```
.
├── 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
Hice un módulo de nodo para automatizar esta tarea: mddir
Uso
nodo mddir "../relative/path/"
Para instalar: npm install mddir -g
Para generar un descuento para el directorio actual: mddir
Generar para cualquier ruta absoluta: mddir / absolute / path
Generar para una ruta relativa: mddir ~ / Documents / whatever.
El archivo md se genera en su directorio de trabajo.
Actualmente ignora node_modules y .git folders.
Solución de problemas
Si recibe el error ''node / r: No such such file or directory'', el problema es que su sistema operativo utiliza diferentes terminaciones de línea y mddir no puede analizarlos sin que usted establezca explícitamente el estilo de terminación de línea en Unix. Esto generalmente afecta a Windows, pero también a algunas versiones de Linux. El ajuste de los finales de línea al estilo Unix tiene que realizarse dentro de la carpeta bin global mddir npm.
Las terminaciones de línea se arreglan
Obtén la ruta de la carpeta npm bin con:
npm config get prefix
Cd en esa carpeta
brew install dos2unix
dos2unix lib / node_modules / mddir / src / mddir.js
Esto convierte las terminaciones de línea en Unix en lugar de Dos
Luego ejecute normalmente con: node mddir "../relative/path/".
Ejemplo de estructura de archivo de rebajas generada ''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
Puedes usar tree para generar algo muy similar a tu ejemplo. Una vez que tenga el resultado, puede envolverlo en una etiqueta <pre>
para preservar el formato de texto sin formato.
Seguí un ejemplo en otro repositorio y envolví la estructura del directorio dentro de un par de backticks triples ( ```
):
```
project
│ README.md
│ file001.txt
│
└───folder1
│ │ file011.txt
│ │ file012.txt
│ │
│ └───subfolder1
│ │ file111.txt
│ │ file112.txt
│ │ ...
│
└───folder2
│ file021.txt
│ file022.txt
```
Si desea generarlo dinámicamente, le recomiendo usar Frontend-md . Es simple de usar.
Si está utilizando el editor Atom, puede lograrlo con el paquete ascii-tree .
Puedes escribir el siguiente árbol:
root
+-- dir1
+--file1
+-- dir2
+-- file2
y conviértalo en lo siguiente seleccionándolo y presionando ctrl-alt-t
:
root
├── dir1
│ └── file1
└── dir2
└── file2
Si le preocupan los caracteres Unicode, puede usar ASCII para construir las estructuras, de modo que su estructura de ejemplo se convierta en
.
+-- _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
Lo cual es similar al tree
formato tree
usa si selecciona salida ANSI
.
Sugeriría usar wasabi entonces puedes usar el markdown-ish, sientete así
root/ # entry comments can be inline after a ''#''
# or on their own line, also after a ''#''
readme.md # a child of, ''root/'', it''s 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
fileThree@ # ''@'' can identify symlinks
y arrojar esa sintaxis exacta en la biblioteca js para this