Open sanemat opened 9 years ago
rewriteがわかりやすいが、これはastの該当箇所を、replaceしたりinsert_beforeしたりするapi。
Let's play with Ruby code - whitespace
そして、これはastの場所を指定して、textのcontentを入れるapiだった。つまり、たとえばサンプル通りに、=をインデント揃えたり、thenを入れたり消したりするのには使える。
出力はrubyコードになってしまうので、だからunparserはあまり使われていない。 つまりestraverse + escodegen がrewrite。
ちなみにゴニョゴニョっと書き換えた時にindentなどは自分で変えないと変わらない(要出典)。自分がやりたいのは並び替えて整形なので、理解が進むまでは整形はunparserに任せたい。
ちなみにunparserの出力は
source 'http://example.com'
を
source("http://example.com")
に変えてしまうので、dslっぽくなくなったり、シングルクオートがダブルクォートになったりしてしまう。
estraverse部分だけ(ast->astだけ)ほしい時は、steps for walking AST generated from file · Issue #170 · whitequark/parser processerでやるとよさそう。
いまここ
rewriteがわかりやすいが、これはastの該当箇所を、replaceしたりinsert_beforeしたりするapi。
Let's play with Ruby code - whitespace
そして、これはastの場所を指定して、textのcontentを入れるapiだった。つまり、たとえばサンプル通りに、=をインデント揃えたり、thenを入れたり消したりするのには使える。
出力はrubyコードになってしまうので、だからunparserはあまり使われていない。 つまりestraverse + escodegen がrewrite。
ちなみにゴニョゴニョっと書き換えた時にindentなどは自分で変えないと変わらない(要出典)。自分がやりたいのは並び替えて整形なので、理解が進むまでは整形はunparserに任せたい。
ちなみにunparserの出力は
を
に変えてしまうので、dslっぽくなくなったり、シングルクオートがダブルクォートになったりしてしまう。
estraverse部分だけ(ast->astだけ)ほしい時は、steps for walking AST generated from file · Issue #170 · whitequark/parser processerでやるとよさそう。
いまここ