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

refactor: move @doc_status into compiler #1701

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

Conversation

takahashim
Copy link
Collaborator

#1698 と同じような課題ですが、@doc_statuscheck_nested_minicolumnなどがbuilderのあちこちに分散しているのを避けるべく、compiler側に移動してみました。

builder should not have (global) status
@@ -28,6 +28,8 @@ def initialize(builder)
## to decide escaping/non-escaping for text
@command_name_stack = []

@doc_status = nil
Copy link
Owner

@kmuto kmuto May 30, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@compiler に移動するのはOKですが、過去のreview-ext.rbの修正が少なく済むよう、attr_accessor :doc_status で公開してほしいです(既存のextは先頭で以下を対処するだけで済むので)

def builder_init_file
  super
  if @compiler.doc_status
     @doc_status = @compiler.doc_status
   end
end

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

なるほどです、とりあえず上記の参照は追加しておきます。
とはいえ将来的な互換性を考えるのであれば、下のような in_caption?等のメソッドに置き換えていただきたいところです… 🙏

@@ -1140,7 +1114,7 @@ def footnote(id, content)
def inline_fn(id)
if @book.config['footnotetext']
macro("footnotemark[#{@chapter.footnote(id).number}]", '')
elsif @doc_status[:caption] || @doc_status[:table] || @doc_status[:column] || @doc_status[:dt]
elsif in_caption? || in_column? || in_dt?
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:table はキャプションというよりth, tdが主眼なので(これもfootnotemarkにする必要がある)、in_table? を追加する必要がありそうです。

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここの@doc_status[:table]は誰も代入してない(?)ので消したのですが、むしろth,tdで使うように修正すべきですか?

Copy link
Owner

@kmuto kmuto May 30, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Compiler#read_command で任意nameで入っているはずなのですが、なんかおかしいですね。
こちらのテストではmasterとこのブランチとでth,td内のfootnoteの扱いが変わっています。←は今このブランチではtableが消えてるから当然でした。

tcolorboxを使ったなどの理由でfootnotemarkにしないといけないケースは多いです(手元だと:listなど)。in_だとちょっと煩雑かもしれない気がしています。

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

under?([:caption, :column, :dt]) みたいなのは気持ち悪いですかね。メソッド名もなんかもっとマシなのはないか…

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

あー、そっちの方で代入していたんですね…じゃあどの値を使っているのか不明なのか。

@@ -86,6 +86,9 @@ def bind(compiler, chapter, location)

def builder_init_file
@sec_counter = SecCounter.new(5, @chapter)
if @compiler.doc_status
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

あ、もうしわけない。
builder側については私の手元のextをこのように直すほうで対処しますので、compilerのattrだけでOKです。ただし、(compilerのほうのコメントへ)

@@ -37,7 +37,7 @@ def initialize(builder)
@compile_errors = nil
end

attr_reader :builder, :previous_list_type
attr_reader :builder, :previous_list_type, :doc_status
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

書きたいこともありそうなので、attr_accessorにしていただけると…

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここで書きたいのはおそらく compiler.doc_status[:foo] = bar みたいなやつで、compiler.doc_status = {foo: bar}みたいなのではないですよね。
前者であれば@doc_statusに対しては参照しかしてない(参照した結果のオブジェクトに対して変更を加える)ので現状で可能です。後者だと気をつけないといろいろ壊れるので、許さない方が安全かな…と。なお何かの理由でリセットしたいときはcompiler.doc_status.clearで可能です。

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

そうですね。なるほど、ではこれはこのままでOKです

@kmuto
Copy link
Owner

kmuto commented May 30, 2021

Sorry for bothering, I've already rewritten raw atmark Compiler to quoted string @Compiler in review message of this thread.
But during you post a message here, it means you subscribe this thread.
I'll remove your posts manually.

Repository owner deleted a comment from Compiler May 30, 2021
Repository owner deleted a comment from Compiler May 30, 2021
@kmuto kmuto mentioned this pull request Oct 13, 2022
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

Successfully merging this pull request may close these issues.

2 participants