mirror of
https://github.com/kovetskiy/mark.git
synced 2025-04-23 21:32:41 +08:00
Fix links containing an underscore
This commit is contained in:
parent
29c4e3020e
commit
f727c860b4
@ -25,20 +25,21 @@ func (r *ConfluenceLinkRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegi
|
||||
|
||||
// renderLink renders links specifically for confluence
|
||||
func (r *ConfluenceLinkRenderer) renderLink(writer util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) {
|
||||
if string(node.(*ast.Link).Destination[0:3]) == "ac:" {
|
||||
n := node.(*ast.Link)
|
||||
if string(n.Destination[0:3]) == "ac:" {
|
||||
if entering {
|
||||
_, err := writer.Write([]byte("<ac:link><ri:page ri:content-title=\""))
|
||||
if err != nil {
|
||||
return ast.WalkStop, err
|
||||
}
|
||||
|
||||
if len(node.(*ast.Link).Destination) < 4 {
|
||||
_, err := writer.Write(node.FirstChild().Text(source))
|
||||
if len(n.Destination) < 4 {
|
||||
_, err := writer.Write(node.Text(source))
|
||||
if err != nil {
|
||||
return ast.WalkStop, err
|
||||
}
|
||||
} else {
|
||||
_, err := writer.Write(node.(*ast.Link).Destination[3:])
|
||||
_, err := writer.Write(n.Destination[3:])
|
||||
if err != nil {
|
||||
return ast.WalkStop, err
|
||||
}
|
||||
@ -49,7 +50,7 @@ func (r *ConfluenceLinkRenderer) renderLink(writer util.BufWriter, source []byte
|
||||
return ast.WalkStop, err
|
||||
}
|
||||
|
||||
_, err = writer.Write(node.FirstChild().Text(source))
|
||||
_, err = writer.Write(node.Text(source))
|
||||
if err != nil {
|
||||
return ast.WalkStop, err
|
||||
}
|
||||
|
3
pkg/mark/testdata/links-droph1.html
vendored
3
pkg/mark/testdata/links-droph1.html
vendored
@ -3,9 +3,12 @@ Use <ac:rich-text-body>aaa</ac:rich-text-body>
|
||||
Use <ac:link><ri:page ri:content-title="Page"/><ac:plain-text-link-body><![CDATA[page link]]></ac:plain-text-link-body></ac:link>
|
||||
Use <ac:link><ri:page ri:content-title="AnotherPage"/><ac:plain-text-link-body><![CDATA[AnotherPage]]></ac:plain-text-link-body></ac:link>
|
||||
Use <ac:link><ri:page ri:content-title="Another Page"/><ac:plain-text-link-body><![CDATA[Another Page]]></ac:plain-text-link-body></ac:link>
|
||||
Use <ac:link><ri:page ri:content-title="test_link"/><ac:plain-text-link-body><![CDATA[Another Page]]></ac:plain-text-link-body></ac:link>
|
||||
Use <ac:link><ri:page ri:content-title="Page With Space"/><ac:plain-text-link-body><![CDATA[page link with spaces]]></ac:plain-text-link-body></ac:link>
|
||||
<ac:image ac:alt="My Image"><ri:attachment ri:filename="test.png"/></ac:image>
|
||||
<ac:image ac:alt="My External Image"><ri:url ri:value="http://confluence.atlassian.com/images/logo/confluence_48_trans.png?key1=value1&key2=value2"/></ac:image>
|
||||
<ac:link><ri:page ri:content-title="test_link"/><ac:plain-text-link-body><![CDATA[My test_link]]></ac:plain-text-link-body></ac:link>
|
||||
<ac:link><ri:page ri:content-title="test_link_link"/><ac:plain-text-link-body><![CDATA[Another [Link]]]></ac:plain-text-link-body></ac:link>
|
||||
Use footnotes link <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>
|
||||
Use <a href="foo">Link [Text]</a>
|
||||
<div class="footnotes" role="doc-endnotes">
|
||||
|
3
pkg/mark/testdata/links-stripnewlines.html
vendored
3
pkg/mark/testdata/links-stripnewlines.html
vendored
@ -3,9 +3,12 @@ Use <ac:rich-text-body>aaa</ac:rich-text-body>
|
||||
Use <ac:link><ri:page ri:content-title="Page"/><ac:plain-text-link-body><![CDATA[page link]]></ac:plain-text-link-body></ac:link>
|
||||
Use <ac:link><ri:page ri:content-title="AnotherPage"/><ac:plain-text-link-body><![CDATA[AnotherPage]]></ac:plain-text-link-body></ac:link>
|
||||
Use <ac:link><ri:page ri:content-title="Another Page"/><ac:plain-text-link-body><![CDATA[Another Page]]></ac:plain-text-link-body></ac:link>
|
||||
Use <ac:link><ri:page ri:content-title="test_link"/><ac:plain-text-link-body><![CDATA[Another Page]]></ac:plain-text-link-body></ac:link>
|
||||
Use <ac:link><ri:page ri:content-title="Page With Space"/><ac:plain-text-link-body><![CDATA[page link with spaces]]></ac:plain-text-link-body></ac:link>
|
||||
<ac:image ac:alt="My Image"><ri:attachment ri:filename="test.png"/></ac:image>
|
||||
<ac:image ac:alt="My External Image"><ri:url ri:value="http://confluence.atlassian.com/images/logo/confluence_48_trans.png?key1=value1&key2=value2"/></ac:image>
|
||||
<ac:link><ri:page ri:content-title="test_link"/><ac:plain-text-link-body><![CDATA[My test_link]]></ac:plain-text-link-body></ac:link>
|
||||
<ac:link><ri:page ri:content-title="test_link_link"/><ac:plain-text-link-body><![CDATA[Another [Link]]]></ac:plain-text-link-body></ac:link>
|
||||
Use footnotes link <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>
|
||||
Use <a href="foo">Link [Text]</a>
|
||||
<div class="footnotes" role="doc-endnotes">
|
||||
|
3
pkg/mark/testdata/links.html
vendored
3
pkg/mark/testdata/links.html
vendored
@ -3,9 +3,12 @@ Use <ac:rich-text-body>aaa</ac:rich-text-body>
|
||||
Use <ac:link><ri:page ri:content-title="Page"/><ac:plain-text-link-body><![CDATA[page link]]></ac:plain-text-link-body></ac:link>
|
||||
Use <ac:link><ri:page ri:content-title="AnotherPage"/><ac:plain-text-link-body><![CDATA[AnotherPage]]></ac:plain-text-link-body></ac:link>
|
||||
Use <ac:link><ri:page ri:content-title="Another Page"/><ac:plain-text-link-body><![CDATA[Another Page]]></ac:plain-text-link-body></ac:link>
|
||||
Use <ac:link><ri:page ri:content-title="test_link"/><ac:plain-text-link-body><![CDATA[Another Page]]></ac:plain-text-link-body></ac:link>
|
||||
Use <ac:link><ri:page ri:content-title="Page With Space"/><ac:plain-text-link-body><![CDATA[page link with spaces]]></ac:plain-text-link-body></ac:link>
|
||||
<ac:image ac:alt="My Image"><ri:attachment ri:filename="test.png"/></ac:image>
|
||||
<ac:image ac:alt="My External Image"><ri:url ri:value="http://confluence.atlassian.com/images/logo/confluence_48_trans.png?key1=value1&key2=value2"/></ac:image>
|
||||
<ac:link><ri:page ri:content-title="test_link"/><ac:plain-text-link-body><![CDATA[My test_link]]></ac:plain-text-link-body></ac:link>
|
||||
<ac:link><ri:page ri:content-title="test_link_link"/><ac:plain-text-link-body><![CDATA[Another [Link]]]></ac:plain-text-link-body></ac:link>
|
||||
Use footnotes link <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>
|
||||
Use <a href="foo">Link [Text]</a>
|
||||
<div class="footnotes" role="doc-endnotes">
|
||||
|
6
pkg/mark/testdata/links.md
vendored
6
pkg/mark/testdata/links.md
vendored
@ -8,12 +8,18 @@ Use [AnotherPage](ac:)
|
||||
|
||||
Use [Another Page](ac:)
|
||||
|
||||
Use [Another Page](ac:test_link)
|
||||
|
||||
Use [page link with spaces](<ac:Page With Space>)
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
[My test_link](ac:test_link)
|
||||
|
||||
[Another [Link]](ac:test_link_link)
|
||||
|
||||
Use footnotes link [^1]
|
||||
[^1]: a footnote link
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user