Created
December 5, 2012 07:26
-
-
Save nishio/4213402 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rst2textileのend_stateの仕様について質問→自己解決 | |
元々のコード | |
def visit_literal_block(self, node): | |
self.new_state(0) | |
def depart_literal_block(self, node): | |
self.end_state(wrap=False, first="<pre>\n", end=['</pre>']) | |
出力されるもの | |
<pre> | |
source line 1 | |
source line 2 | |
source line 3 | |
</pre> | |
これを以下のようにしたいと思った | |
<pre> | |
source line 1 | |
source line 2 | |
source line 3 | |
</pre> | |
ソースコードを1行変更 | |
def visit_literal_block(self, node): | |
self.new_state(4) # here! | |
def depart_literal_block(self, node): | |
self.end_state(wrap=False, first="<pre>\n", end=['</pre>']) | |
得られた出力 | |
<pre> | |
source line 1 | |
source line 2 | |
source line 3 | |
</pre> | |
疑問点: これはend_stateの意図した挙動か? | |
続き | |
このあたりの実装は"\n" not in fisrtを仮定しているようにみえる | |
https://bitbucket.org/shimizukawa/rst2textile/src/5590827a66a64dc158dbe05a672c34eb8f943da3/docutils_textile/writer.py?at=default#cl-91 | |
しかしここで\n付きで読んでいるあたりにミスマッチなものを感じる | |
https://bitbucket.org/shimizukawa/rst2textile/src/5590827a66a64dc158dbe05a672c34eb8f943da3/docutils_textile/writer.py?at=default#cl-570 | |
first == Noneならコンテンツの1行目もインデントされる。 | |
僕のユースケースは本当は<pre>の必要がなくて、ただインデントしたかっただけなので、これでいいや。 | |
最終的な僕の実装 | |
def visit_literal_block(self, node): | |
self.new_state(4) | |
def depart_literal_block(self, node): | |
self.end_state(wrap=False, first=None, end=['']) | |
得られた(僕が得たかった)もの | |
source line 1 | |
source line 2 | |
source line 3 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
バグっぽい。そのうち直すかも。