Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

review-preproc --strip で (NoMethodError)が発生 #1257

Closed
Yuki-book opened this issue Jan 19, 2019 · 2 comments
Closed

review-preproc --strip で (NoMethodError)が発生 #1257

Yuki-book opened this issue Jan 19, 2019 · 2 comments

Comments

@Yuki-book
Copy link

プリプロセッサ --stripオプション

公式サイトなどに説明がありませんが、プリプロセッサの--stripオプションはどんな機能でしょうか?

$ review-preproc --help
Usage: review-preproc [-c|-d|-s|--replace] [<file>...]
    -c, --check                      Check if preprocess is needed.
    -d, --diff                       Show diff from current file.
        --replace                    Replace file by preprocessed one.
    -s, --strip                      Strip preprocessor tags.
        --tabwidth=WIDTH             Replace tabs with space characters. (0: don't replace)
        --help                       Print this message and quit.

#@mapfileなどのプリプロセッサ用タグを除去する機能かと想像しています。

実行すると(NoMethodError)が発生

[tmap.re]

= プリプロセッサ

//emlist[サンプルコード][c]{
#@mapfile(source/hello.c)
#include <stdio.h>
int main( )
{
        printf("Hello, World!");
        return(0);
}
#@end
//}

tmap.reに対して、--stripしてみました。

$ review-preproc --strip tmap.re
Traceback (most recent call last):
        8: from /usr/local/bin/review-preproc:23:in `<main>'
        7: from /usr/local/bin/review-preproc:23:in `load'
        6: from /var/lib/gems/2.5.0/gems/review-3.0.0/bin/review-preproc:115:in `<top (required)>'
        5: from /var/lib/gems/2.5.0/gems/review-3.0.0/bin/review-preproc:31:in `sigmain'
        4: from /var/lib/gems/2.5.0/gems/review-3.0.0/bin/review-preproc:71:in `main'
        3: from /var/lib/gems/2.5.0/gems/review-3.0.0/bin/review-preproc:71:in `each'
        2: from /var/lib/gems/2.5.0/gems/review-3.0.0/bin/review-preproc:92:in `block in main'
        1: from /var/lib/gems/2.5.0/gems/review-3.0.0/bin/review-preproc:92:in `open'
/var/lib/gems/2.5.0/gems/review-3.0.0/bin/review-preproc:93:in `block (2 levels) in main': undefined method `each' for #<ReVIEW::Preprocessor::Strip:0x00007fffd56761c8> (NoMethodError)

(NoMethodError)で異常終了してしまいました。

環境は、WSL Ubuntu 18.04.1、Re:VIEW3.0.0です。

@kmuto
Copy link
Owner

kmuto commented Jan 19, 2019

私も使ったことがない機能でした(青木さん初期実装からずっと残ってた)。
コードを見るかぎり、#@〜 というものがあったら #@# にする(〜は消える)、という機能なようです。
#@#は残るのであまり綺麗な感じもないですね。

実用性も利用者もなさそうですし、単純に機能削除しちゃいましょうか。

@Yuki-book
Copy link
Author

Windows10 の Re:VIEW2.5は正常動作

私のもうひとつの環境で試してみました。

>ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x64-mingw32]

--strip を実行してみます。

>review-preproc  --strip  tmap.re
= プリプロセッサ


//emlist[サンプルコード][c]{
#include <stdio.h>
int main( )
{
        printf("Hello, World!");
        return(0);
}
//}

想像したように、#@mapfileなどのプリプロセッサ用タグを除去しました。

Rubyの初心者なので、コードをあまり解析できていません。
なぜ、WSL Ubuntu 18.04.1、Re:VIEW3.0.0でエラーになったのか原因が不明です。

実用性?

プリプロセッサタグを外したいことがあるかどうかわかりません。
--strip と --replace のオプションを指定すると --stripが働かないので、リダイレクトで出力することになります。

動作しない環境があるなら、よけいな機能は削除という判断もありますね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants