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

#@mapfileによる分割ファイルの結合 #1247

Closed
Yuki-book opened this issue Jan 3, 2019 · 9 comments
Closed

#@mapfileによる分割ファイルの結合 #1247

Yuki-book opened this issue Jan 3, 2019 · 9 comments

Comments

@Yuki-book
Copy link

分割ファイルの結合問題

Re:VIEW knowledgeで、節単位にファイルを分割する例がありますが、2つの問題があります。

#@mapfileは、ソースコードなどの取り込みを目的としたもので、Re:VIEW原稿の取り込みを意図していないのではないでしょうか?上記サイトの説明に注意書きが必要と思います。

また、回避する方法はあるでしょうか?

問題が発生するサンプルコード

章ファイル(chap.re)の定義を次のようにします。

= 章見出し
#@mapfile(section1.re)
#@end
テスト終了

参照する節ファイル(section1.re)を次のようにします。

== TABLE

//table[id][テスト]{
年度	売上げ
---------------------
2017	1,000
2018	1,500
//}

問題1 : タブが消える

review-preproc --replace chap.re とするとchar.reにsection1.reを挿入しますが、タブコードがスペースコードに置換されるため、表定義のセル区切りが働かなくなります。その結果、意図した表にはなりません。

問題2 : 2回目のプリプロセッサでエラー発生

char.reにsection1.reを挿入した状態で、もう一度(最新の内容を取り込むため)review-preproc --replace chap.re とするとエラーが発生します。

ERROR: chap.re:12: unbaranced #@EnD 

chap.reは、次のようになっています。

= 章見出し

#@mapfile(section1.re)
== テーブル

//table[id][テスト]{
年度      売上げ
---------------------
2017    1,000
2018    1,500
//}
#@end

#@mapfileで挿入する内容にブロック命令は想定していないのではないでしょうか?

@kmuto
Copy link
Owner

kmuto commented Jan 6, 2019

お返事遅くなりました。

問題1 : タブが消える

なるほど…これは厄介ですね。もともとmap系命令はコード挿入しか想定していない設計で作られたもののようなので、タブが消されてしまいます。でそうなると表が困るのは確かですね。

うーん。泥縄かもだけど拡張子を見て判定するか、オプションを新設するか、新命令にするか……
とりあえず拡張子を見る方法で実装してみようかと思います。

問題2 : 2回目のプリプロセッサでエラー発生

おっと、確かに再現しますね。#@はプリプロセスでのみ判定が正しいはずで、review-compileが変な解釈をしているのはバグと考えます。修正にトライしてみます。

@kmuto
Copy link
Owner

kmuto commented Jan 6, 2019

#1248 でパッチを作ってみました。
可能でしたらお試しいただければと思います。

@kmuto kmuto mentioned this issue Jan 6, 2019
13 tasks
@Yuki-book
Copy link
Author

素早い対応、ありがとうございます。素早い対応に、ちょっとびっくりてす。

そんな時、初歩的な質問で申し訳ありません。

特定のバージョン(Re:VIEW 3.1 #1230)をインストールするにはどうすればよいのでしょうか?
Gitとか使い慣れていなく思い切って質問をあげたところ、
即、対応して頂いたりですが、特定のバージョンのインストール方法がわかりません。(^o^)

正月気分も明けず、ほろ酔い気分です。(申し訳けありません)
現在、思考回路は停止しています。

明日以降、確認してみます。

@kmuto
Copy link
Owner

kmuto commented Jan 6, 2019

はい、まだリリース前なので、git cloneして実行してみる、ということになりますね。

macOSかLinuxで「ひとまず試してみる」という例を示すと…

$ cd 作業フォルダ (上記のchap.reなどがある場所へ移動)
$ git clone https://github.com/kmuto/review.git   (reviewフォルダができ、その時点の最先端が展開される)
$ review/bin/review-preproc --replace chap.re   (reviewフォルダのbin/review-preprocのほうを使ってみる)

@Yuki-book
Copy link
Author

情報をありがとうございます。
fix-preproc ブランチをgit cloneして確認しました。

$ git clone -b fix-preproc https://github.com/kmuto/review.git

問題なく正しく動作することを確認しました。
ありがとうございました。

@Yuki-book
Copy link
Author

2回目のプリプロセッサでエラー発生 (.re以外)

#@mapfile(XXX.re)はOKでしたが、
#@mapfile(XXX.c)はNGです。

対応前と同じエラーが発生します。

@kmuto
Copy link
Owner

kmuto commented Jan 7, 2019

はい、今回の措置は.reだけとしています。ただ*.cだとしても「入れ子になっている=mapfileしたものの中にさらにmapfileがある」とか「*.cの中になぜかブロック記法がある」とかでなければ、こちらでは問題は生じていないのですが…。
全体でどのような構成になっているでしょうか。入れ子だとすると、それに対処するのは新規に作り直さないと難しそうです。

@Yuki-book
Copy link
Author

失礼しました。

タブが消える問題の確認のために、XXX.reをXXX.cにリネームしてテストしてました。
「*.cの中になぜかブロック記法がある」状態でした。

従って、問題なく正しく動作しています。

@kmuto
Copy link
Owner

kmuto commented Jan 7, 2019

確認ありがとうございました、ではadhoc感はありますがこれで次バージョン(2月)に入れておきます。

@kmuto kmuto closed this as completed in 13df7bd Jan 7, 2019
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