Closed book000 closed 1 month ago
Markdownパーサー、Inlineの出力結果にフォーマット文字列を含むローデータを持ってないのか…?
要るの?
ヘッダーはともかくとして Inline は InlineEffect で全部対応してるはずだけど
良しとするってどういうこと?
Bold が効いてるか確認したいならできるはずだけど...
MarkdownHeadingProcessorの処理だけでは、タイトルフォーマット #
だけが削除されるはずで、**header**
は残らないと妥当な形じゃ無いという判断もあるかな?と思った
inlineの場合、text属性に **
などのフォーマット文字列が置換されているので、それがMarkdownパーサー処理後の結果には無いのかなと。
それなら Processor じゃなくて Markdown に Heading1, Heading2, Heading3 を追加するって形で実装した方がいいんじゃないかな
んー…??
それはtoReadableが置き換えてくれるようにして、MarkdownFormatProcessorに任せるという意味であってます?
そうなら、今回 #
の個数によって読み上げ速度を変えるから、それだけだと微妙なんじゃないかなあ…??
InlineEffectの中に、**bold**
のようなフォーマット文字列を含んだ文と、bold
のようなフォーマット文字列を削除した文の情報があるって話っぽいとDiscordの会話で解釈したので、ちょっと見直します
んー…?? それはtoReadableが置き換えてくれるようにして、MarkdownFormatProcessorに任せるという意味であってます? そうなら、今回
#
の個数によって読み上げ速度を変えるから、それだけだと微妙なんじゃないかなあ…??
あってる。 前に Heading ってことしかわからなくて Heading1, 2, 3 が区別できないことが問題って言ってなかったっけ?
Heading文字列を置き換える責務をMarkdownFormatProcessorが持つか、MarkdownHeadingProcessorが持つか?という話な気がしますね
結果的に、Headingの個数がいくつか?は以下で無理くり判断しています https://github.com/jaoafa/VCSpeaker.kt/blob/d9b4de6de71e5da21247e79abc6bb23a79b302cd/src/main/kotlin/com/jaoafa/vcspeaker/tts/processors/MarkdownHeadingProcessor.kt#L22
とはいえ、Lines.ktとかでHeading置き換えすると一行Headingも置き換えられてしまうから微妙かなあ…とも。
とはいえ、Lines.ktとかでHeading置き換えすると一行Headingも置き換えられてしまうから微妙かなあ…とも。
これはどういう?
逆だ。
以下は、1行なので置き換えたうえでスピード変更してもよい
# hoge
以下は、1行ではないので置き換えずにスピード変更しない
# hoge
# fuga
Inlines.ktみたいに、toReadable的に読み上げ用正規表現置き換えを入れると上記の両方が置き換えられてしまうよね、という。
帰ってきた List
ん~?わかるようなわからないような…、コード書いてほしいかも それらのロジックをMarkdown.ktに全部含ませてしまうのは責務が重くない?
えっと私が想像してるのは、LineEffect に Header1, Header2, Header3 を追加して、そのデータを MarkdownFormatProcessor で扱う感じ (Header によって読む速度を変えるとか) なんだけど
ちょっと今書くのは難しいから帰るまで待ってほしい
全然急ぎません。
読む速度を変えるのを Header1 みたいな形で分けてやるのはわかる。その時に、「ヘッダーのフォーマット文字 (#
) を処理するのは Lines と MarkdownFormatProcessor どっちでやろうと考えてるんだろう?というのがきになってる
声を変えるのは Processor の役割のはずなのでそっちでやって、# の削除は Line の方でやる markdown/ は純粋に Markdown を処理するだけってイメージ
あーーそこの解釈ズレてるんだ…
Markdown.ktの責務は「Markdownをパースする」ことが責務だと思ってて(AST的な)、それの実際の置き換えは Processor 群の責務だと思ってる。
えずれてるの? スポイラー関連は確かに Markdown でやってるけど今回のに関しては合ってない?
# の削除は Line の方でやる
ここの解釈が合わない。無条件で全部のHeadingフォーマット文字列を置き換えるならともかく、一行の場合にのみ置き換えるというのはこのプロジェクトに限った話で、Markdownそのもののパースロジックではないから。 私は # の削除は一行のみの場合のみという VCSpeaker.kt 独自の仕様があるから、MarkdownFormatProcessorに実装するものという解釈だった
いや無条件で全部削除するつもりだった LineEffect の情報とも重複するし要らないかなと (Inline だと既にそうしてるし)
ん〜、なるほど。まあそれならそれでも良いかな…
だとすれば、このPRの内容そのままゆうあ氏に預けた方がいいですかね?これにプラスして改修入る感じですよね?
逆レビューをおねがいします 変更点は
#
も削除するようにしたありがとう、とりあえず差分見た感じ流れそのものに異論なしです 正規表現だけちょっと引っかかったので指摘です