9

Redcarpet を使用して、マークダウンに次のようなものを含めると、改行やインデントが考慮されません。行末に2つのスペースを試しました。コード間の余分な行。何も機能していないようです。

```xml
<?xml version="1.0" encoding="UTF-8"?>
<hash>
   <money>3</money>
</hash>

```

そうですか:

<?xml version="1.0" encoding="UTF-8"?> <hash> <money>3</money> </hash>

Redcarpet の設定は次のとおりです。

Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true, :fenced_code_blocks => true, :no_intra_emphasis => true, :lax_html_blocks => true)

ここや GitHub のように、行を適切に分割してインデントを維持するにはどうすればよいですか?

更新- ソースは次のようになります。

<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
                &lt;hash&gt;
                &lt;money&gt;3&lt;/money&gt;
                &lt;/hash&gt;  
                </code></pre>
4

4 に答える 4

5

Markdown の結果をfind_and_preserveHaml ヘルパーでラップしてみてください

# Assuming a setup like this:
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)
code_snippet = "    <xml>\n      <tag/>\n    </xml>"

# This should prevent undesirable spaces within code blocks:
find_and_preserve(markdown.render(code_snippet)).html_safe

レンダリング呼び出しをfind_and_preserveHaml ヘルパーでラップすると、マークダウン出力のタグ内のすべての改行<pre>が同等の HTML エンティティでエスケープされ、Haml 自動インデントはそれらを無視します。

于 2012-05-08T18:59:13.083 に答える
4

解析の結果には、ブロック内に改行があり<pre>ます。

require 'redcarpet'
md = Redcarpet::Markdown.new(Redcarpet::Render::HTML, fenced_code_blocks:true)

puts md.render("```xml\n<foo>\n</foo>\n```")
#=> <pre><code class="xml">&lt;foo&gt;
#=> &lt;/foo&gt;
#=> </code></pre>
  1. 出力 HTML に同様のラッパーが表示されていることを確認します
  2. <pre>ブロックで事前フォーマットを使用するように CSS を設定します。

    pre { white-space:pre }
    
于 2012-05-03T20:28:05.500 に答える
0

このスクリプトを試して、それがアプリ内のものかレッドカーペットのものかを分離してください。

発生している問題を再現できません (redcarpet-2.1.1 gem を使用)。これをファイルに入れて実行します ( ruby redcarpet_test.rb):

require 'rubygems'
require 'redcarpet'

md = %Q{...
```xml
<?xml version="1.0" encoding="UTF-8"?>
<hash>
   <money>3</money>
</hash>
```
...}

r = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true, :fenced_code_blocks => true, :no_intra_emphasis => true, :lax_html_blocks => true)

puts r.render md

その結果は次のように適切になります。

<p>...
<code>xml
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;hash&gt;
   &lt;money&gt;3&lt;/money&gt;
&lt;/hash&gt;
</code>
...</p>
于 2012-05-03T19:58:45.407 に答える