Markdown Sözdiziminde Dizin ve Dosya Yapısını Gösterme


215

Bazı Jekyll blog yazılarımda dizin ve dosya yapılarını tanımlamak istiyorum, Markdown böyle bir şey çıktı düzgün bir yol sağlar?

Örneğin , Jekyll web sitesindeki bu bağlantıda dizin ve dosya yapısının sayfada çok düzgün bir şekilde çıktılandığını görebilirsiniz:

.
├── _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

Yukarıdaki satır bloğu karakterlerinin Unicode olduğuna inanıyorum ( bu cevapta açıklandığı gibi ), ancak Markdown veya farklı tarayıcıların bunları nasıl ele alacağından emin değilim. Markdown'un belki de yukarıdaki Unicode karakterleri olarak ortaya çıkan bunu yapmanın bir yolunu içermesini umuyordum.



1
özellikle jekyll'den bahsettiğinizden, bu tüysüz örnek ve kaynağı faturaya
uyabilir

Yanıtlar:


144

Unicode karakterlerden endişe ediyorsanız, yapıları oluşturmak için ASCII kullanabilirsiniz, böylece örnek yapınız

.
+-- _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

Hangi çıktıyı treeseçerseniz biçimine benzer ANSI.


1
Bunun için teşekkürler. Unicode karakterlerini kullanma konusunda herhangi bir endişe olmalı mı? Eski tarayıcılarda bilinen sorunlar gibi, Markdown yanlış vb. Oluşturma
Matt Rowles

2
Markdown ile ilgili herhangi bir sorun olmamalı, Jekyll şablonlarınızda ve kullanıcıların web tarayıcılarında olacak.
RobertKenny

1
Bu seçimin bir başka avantajı, yalnızca kozmetik nedenlerle (çıktı gibi tree) farklı semboller kullanan diğer seçeneklere kıyasla daha küçük farklardır .
villasv

1
Bu anwser kullanırken ağaç sadece birkaç metin satırı olarak işlenir. Md eklentisi ile VSCode ve VisualStudio'da test edildi. Ayrıca GitHub'da bu çalışmıyor
Danny

238

Başka bir depoda bir örnek izledim ve dizin yapısını bir çift üçlü geri ( ```) içine sardım :

```
project
│   README.md
│   file001.txt    
│
└───folder1
│   │   file011.txt
│   │   file012.txt
│   │
│   └───subfolder1
│       │   file111.txt
│       │   file112.txt
│       │   ...
│   
└───folder2
    │   file021.txt
    │   file022.txt
```

5
Yığın Taşması, daha yeni üçlü backtick sözdizimini desteklemez; onları tek backticks olarak yorumlar. Tek backticks kodu yalnızca tek bir satır içinde satır içi metin olarak işaretler; bu yüzden örneğinizin her çizgi arasında beyaz çizgiler var. Çok satırlı kodu işaretlemenin uyumlu bir yolu için metni dört boşlukla girinti yapın.
Rory O'Kane

3
SO üçlü backtick'i desteklemese de, diğer MD uygulamalarının çoğu (Github / BitBucket gibi) yapar ve her girişin ne olduğu hakkında satır içi yorumları olan bir ağaç çalışmasının tek yolu buydu. Yani .. buradan +1!
Scott Byers

1
Bu cevabı beğeniyorum. Üçlü backticks markdown Wordpress'te de benim için çalışıyor.
Binita Bharati

Üçlü backtick desteği şimdi SO üzerinde çalışıyor gibi görünüyor.
StriplingWarrior

41

Örneğinize çok benzeyen bir şey oluşturmak için ağaç kullanabilirsiniz . Çıktıyı aldıktan sonra <pre>, düz metin biçimlendirmesini korumak için bir etikete sarabilirsiniz .


Güzel, bu yararlı görünüyor teşekkürler! Peki ya teorik dosya yapıları? Şu anda tek çözüm buysa, sanırım ihtiyacım olan karakterleri kopyalayıp yapıştırmam gerekebilir. Tekrar şerefe.
Matt Rowles

Bu çözümü seviyorum. Markdown
Anh Tuan'da


22

Bu görevi otomatikleştirmek için bir düğüm modülü yaptım: mddir

kullanım

düğüm mddir "../relative/path/"

Yüklemek için: npm install mddir -g

Geçerli dizin için işaretleme oluşturmak için: mddir

Herhangi bir mutlak yol için oluşturmak için: mddir / absolute / path

Göreli bir yol oluşturmak için: mddir ~ / Documents / whatever.

Md dosyası çalışma dizininizde oluşturulur.

Şu anda node_modules ve .git klasörlerini yok sayar.

Sorun giderme

'Düğüm \ r: Böyle bir dosya veya dizin yok' hatasını alırsanız, sorun işletim sisteminizin farklı satır sonları kullanması ve satır sonlandırma stilini açıkça Unix olarak ayarlamadan mddir bunları ayrıştıramamasıdır. Bu genellikle Windows'u değil, bazı Linux sürümlerini de etkiler. Mddir npm global bin klasörü içinde satır sonlarının Unix stiline ayarlanması gerekir.

Satır sonları düzeltildi

Npm bin klasör yolunu şununla alın:

npm config get prefix

Cd bu klasöre

demlemek dos2unix yükleyin

dos2unix lib / node_modules / mddir / src / mddir.js

Bu, satır sonlarını Dos yerine Unix'e dönüştürür

Sonra şu şekilde çalıştırın: node mddir "../relative/path/".

Oluşturulan örnekleme markdown dosya yapısı '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

1
Ne yazık ki, bunu denedim ve Windows 10 makinemde çalışmıyor ve projenin terk edildiği anlaşılıyor.
Rich Hopkins

1
Merhaba, kütüphaneyi denediğiniz için teşekkürler. Başka projelerle meşgulüm ve çoğaltılamıyorum ancak olası bir düzeltme buldum. Npm bin klasör yolunu şu şekilde al: 'npm config get prefix'. Bu klasöre Cd yazın, sonra 'brew install dos2unix' komutunu çalıştırın, 'dos2unix lib / node_modules / mddir / src / mddir.js' komutunu çalıştırın. Bu, satır sonlarını Dos yerine Unix'e dönüştürür. Daha sonra şu şekilde çalıştırın: node mddir "../relative/path/".
John Byrne

Windows 10 makinemde çalıştım, düzgün küçük bir yardımcı program - teşekkürler!
John Kattenhorn

19

Daha önce önerildiği gibi kullanabilirsiniz tree. Ancak yeniden yapılandırılmış metinle birlikte kullanmak için bazı ek parametreler gerekliydi.

treeEğer pandocpdf üretmek için kullanıyorsanız standart çıktı yazdırılmaz .

tree --dirsfirst --charset=ascii /path/to/directoryASCIIdokümanınıza şu şekilde entegre edilebilen güzel bir ağaç üretecektir :

.. 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

8

Bunu Dropbox dosya listem için yazdım.

sed sonra gelen sembolik dosya / klasör yolunun tam yollarını kaldırmak için kullanılır ->

Ne yazık ki, sekmeler kayboluyor. Kullanma zshSekmeleri koruyabiliyorum.

! / 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

Bunun gibi çıktılar:

```
 .
├── 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 editörü kullanıyorsanız, bunu ascii-tree paketi ile yapabilirsiniz.

Aşağıdaki ağacı yazabilirsiniz:

root
+-- dir1
    +--file1
+-- dir2
    +-- file2

ve seçip tuşuna basarak aşağıdakine dönüştürün ctrl-alt-t:

root
├── dir1
│   └── file1
└── dir2
    └── file2

5

OSX altında, reveal.jssadece kullanıcı treeve sonra çıktıyı kopyalayıp yapıştırırsam oluşturma sorunu var : garip semboller görünür.

2 olası çözüm buldum.

1) charset ascii kullanın ve çıktıyı markdown dosyasına kopyalayın / yapıştırın

tree -L 1 --charset=ascii

2) Markdown dosyasında doğrudan HTML ve unicode kullanın

<pre>
.
&#8866; README.md
&#8866; docs
&#8866; e2e
&#8866; karma.conf.js
&#8866; node_modules
&#8866; package.json
&#8866; protractor.conf.js
&#8866; src
&#8866; tsconfig.json
&#8985; tslint.json
</pre>

Umarım yardımcı olur.


4

Wasabi kullanmanızı öneririm o zaman ya markdown-ish hissediyorum kullanabilirsiniz

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

ve için js kütüphanede bu kesin sözdizimi atmak bu

wasabi örneği



1

Bunun için bir NPM modülü vardır:

npm dree

Bir dizin ağacının dize veya nesne olarak temsil edilmesini sağlar. Komut satırı ile kullanılması, gösterimi bir txt dosyasına kaydetmenize izin verecektir.

Misal:

$ npm dree parse myDirectory --dest ./generated --name tree
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.