CoffeeScriptで、markdown用のソースコード引用をちゃっちゃと生成する
雑記
苦労人の小説家や漫画家とかの、独特の重さ、シンデレラボーイorガールの小説家や漫画家とかの、独特の軽さ、というのは、多分「運」に対する見方というか「相場感」が影響しているのだと思う。それが、水木しげるみたいな域に達すると苦労人とは言え、「命が繋がるかどうかの運」というレベルになるので、重さや軽さを超越するんだと思うけど。まあ、普通の人は、デビューの早い人は、基本的に「運」が味方になってくれる感じの物語になりやすいし、そうでない人では「運」が災厄となる物語が多い。そのあたり、客観視してもう一段自由に「運」の相場を書き分けられたら、トルストイみたいなもんが書けるんじゃないかな。安易なように見えて面白い視点だと思う。本題と全然関係ないけどな!
いや、ちょっと書いたので
しょーもない小技シリーズ、とでも言えば良いのだろうか。ちまちましたソースコード群からmarkdown用のソースコード引用作るってとき、僕と同世代のみんなは、sh,sed,awkでやるよね。若いみんなはperl or ruby or pythonとかでやるんかな。世代を問わず、lispでやる人はいるかもな。きのこ派、じゃなくてemacs派の人びとだ。
どうでもいいね。とりあえず、coffeeでやる。なんでもかんでもcoffeeでやるんだい。
使い方
下記のfiles2markdown.coffeeを保存します。
> ls >ls.txt
> vi ls.txt
(ファイルの順番変えたり、見出し付けたり、邪魔なの消したり)
> coffee ./files2markdown.coffee -e ls.txt >newpost.md
こんな感じです。\$で始まる行は、\$を抜いてそのまま出力するようになっているので、例えばls.txtはこんな風に編集します
$
$#はじめに
$
$
$#if,switchなどの条件分岐からの合流
$
test-coffee-if,switch.html
test-javascript-if,switch.html
$
$#単純な順次実行
$
test-coffee-simple.html
test-javascript-simple.html
$
$#同時実行はこれくらいでいい?
$
test-coffee-each.html
test-javascript-each.html
$
$#伝統的なforによる繰り返し
$
test-coffee-for.html
test-javascript-for.html
$
$#配列やオブジェクトの巡回
$
test-coffee-forin.html
test-javascript-forin.html
$
$#シンプルなwhile
$
test-coffee-while.html
test-javascript-while.html
$
$#例外機構
$
test-coffee-exc.html
test-javascript-exc.html
$
$#あとがき
$
ちゅうわけで、なんか次の投稿記事が想像できますね!
では、処理するコード。
#!/usr/bin/env coffee
fs = require('fs')
sources = ""
for str in process.argv
if str.match(/\.txt$/)?
sources = str
files = (fs.readFileSync sources,'utf8').split('\n')
for fname in files
result = fname.match(/^\$(.*)$/)
if result?
console.log result[1]
else if fname.length > 0
result = fname.match(/\.([^\.]*)$/)
if result?
ext = result[1]
switch ext
when 'coffee' then lang = 'CoffeeScript'
#add other extentions
else lang = ext
console.log '```'+lang+':'+fname
console.log fs.readFileSync(fname,'utf8').trim()
console.log '```'
console.log
else
#skip
0
なぜcoffeeでやるのか。
Author And Source
この問題について(CoffeeScriptで、markdown用のソースコード引用をちゃっちゃと生成する), 我々は、より多くの情報をここで見つけました https://qiita.com/mrpepper/items/33bf9a5899ba0cbdf761著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .