mirror of
https://github.com/kovetskiy/mark.git
synced 2025-04-24 05:42:40 +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
|
// renderLink renders links specifically for confluence
|
||||||
func (r *ConfluenceLinkRenderer) renderLink(writer util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) {
|
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 {
|
if entering {
|
||||||
_, err := writer.Write([]byte("<ac:link><ri:page ri:content-title=\""))
|
_, err := writer.Write([]byte("<ac:link><ri:page ri:content-title=\""))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ast.WalkStop, err
|
return ast.WalkStop, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(node.(*ast.Link).Destination) < 4 {
|
if len(n.Destination) < 4 {
|
||||||
_, err := writer.Write(node.FirstChild().Text(source))
|
_, err := writer.Write(node.Text(source))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ast.WalkStop, err
|
return ast.WalkStop, err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_, err := writer.Write(node.(*ast.Link).Destination[3:])
|
_, err := writer.Write(n.Destination[3:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ast.WalkStop, err
|
return ast.WalkStop, err
|
||||||
}
|
}
|
||||||
@ -49,7 +50,7 @@ func (r *ConfluenceLinkRenderer) renderLink(writer util.BufWriter, source []byte
|
|||||||
return ast.WalkStop, err
|
return ast.WalkStop, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = writer.Write(node.FirstChild().Text(source))
|
_, err = writer.Write(node.Text(source))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ast.WalkStop, err
|
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="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="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="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>
|
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 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: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 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>
|
Use <a href="foo">Link [Text]</a>
|
||||||
<div class="footnotes" role="doc-endnotes">
|
<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="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="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="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>
|
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 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: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 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>
|
Use <a href="foo">Link [Text]</a>
|
||||||
<div class="footnotes" role="doc-endnotes">
|
<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="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="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="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>
|
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 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: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 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>
|
Use <a href="foo">Link [Text]</a>
|
||||||
<div class="footnotes" role="doc-endnotes">
|
<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:)
|
||||||
|
|
||||||
|
Use [Another Page](ac:test_link)
|
||||||
|
|
||||||
Use [page link with spaces](<ac:Page With Space>)
|
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]
|
Use footnotes link [^1]
|
||||||
[^1]: a footnote link
|
[^1]: a footnote link
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user