#文字を打ち込んでWhitespaceのコードに変換する
Whitespaceをいじくって遊んでいた時、コードを書くのがあまりにも面倒なので少しでもどうにかならないものか...と思って作ったメモ。
##Whitespaceとは何ぞや。
Wikipedia
リファレンス(英語)
Whitespaceとは、その名が示す通り「空白」のプログラミング言語です。
使って良い文字は「半角スペース」「タブ」「改行」の3文字のみ。文字と言っても普段は文字数に数えないようなものばかりですね。
製作意図が、「そんな空白に対する差別を是正する」ためだったとかなんとか。
ちなみに上記3文字(?)以外は全てコメントとして無視されます。
他の文字が無視されるということは、Whitespaceとその他の言語を同じソースコード内で共存させることが可能な訳ですね。
HTMLあたりとは特に混ぜやすそう。
この方面で、コードにWhitespaceで書いた暗号を挿入するツールがあったら面白いかな…作ろうかな…
##使い方
- スペース => S
- タブ => T
- 改行 => N
で書いたコードを正規表現で変換するってだけ。
上記以外の文字(改行含む)は無視されます。
変換したいファイル名を引数に入れて実行→ファイル名.wsとして出力
$ruby WsConv.rb file.txt
>Complete! => file.ws
class WsConv
def initialize(filename)
@data = IO.read(filename)
@data.gsub(/[^SNT]+/, '').tr("SNT", " \t\n")
outputFile = filename.sub(/\..\Z/, '') + '.ws'
IO.write(outputFile,@data)
puts "Complete! => #{outputFile}"
end
wsc = WsConv.new(ARGV[0])
##例
これが変換前
SSSTSSTSSSN
TNSS
SSSTTSSTSTN
TNSS
SSSTTSTTSSN
TNSS
SSSTTSTTSSN
TNSS
SSSTTSTTTTN
TNSS
SSSTSSSSSN
TNSS
SSSTSTSTTTN
TNSS
SSSTTSTTTTN
TNSS
SSSTTTSSTSN
TNSS
SSSTTSTTSSN
TNSS
SSSTTSSTSSN
TNSS
SSSSSSTSTSN
TNSS
NNN
これが変換後
(アカン、わかんねぇなこれじゃ...)