summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2023-03-02 23:00:07 +0700
committerShulhan <ms@kilabit.info>2023-03-02 23:00:19 +0700
commit35c7edc6cb26bf63fc8cf1f61d5e33fc9ee620ef (patch)
tree17600d2f860187130f23a52c9e603519eaaaa444
parent5b83f6228897c3a7f24fa7b60cb30310bb5f2dcf (diff)
downloadasciidoctor-go-35c7edc6cb26bf63fc8cf1f61d5e33fc9ee620ef.tar.xz
all: ignore parsing block image in paragraph
Previously, if we have block image in paragraph, we parse it as inline image but with invalid src, for example image::my.png[multi line] would be parsed as <img src=":imy.png" alt="multi line">. This is incorrect according to asciidoctor output.
-rw-r--r--inline_parser.go7
-rw-r--r--testdata/block_image_test.txt127
2 files changed, 134 insertions, 0 deletions
diff --git a/inline_parser.go b/inline_parser.go
index 621c21e..0e280d7 100644
--- a/inline_parser.go
+++ b/inline_parser.go
@@ -689,6 +689,13 @@ func parseInlineImage(doc *Document, content []byte) (elImage *element, n int) {
lineImage []byte
)
+ // If the next character is ':' (as in block "image::") mark it as
+ // invalid inline image, since this is block image that has been
+ // parsed but invalid (probably missing '[]').
+ if content[0] == ':' {
+ return nil, 0
+ }
+
_, n = indexByteUnescape(content, ']')
if n < 0 {
return nil, 0
diff --git a/testdata/block_image_test.txt b/testdata/block_image_test.txt
new file mode 100644
index 0000000..0d6b817
--- /dev/null
+++ b/testdata/block_image_test.txt
@@ -0,0 +1,127 @@
+Test block image "image::".
+output_call:
+
+>>> block_image
+:image-sunset: sunset.jpg
+:test-url: https://kilabit.info
+
+image::sunset.jpg[]
+
+image::{image-sunset}[Block image with attribute ref, link={test-url}].
+
+image::sunset.jpg[
+This is become paragraph.
+
+image::sunset.jpg]
+
+image::sunset.jpg[Multi
+line text].
+
+image::sunset.jpg[1,abc,def]
+image::sunset.jpg[1,abc,def,ghi]
+
+image::notexist.jpg[]
+
+image::https://upload.wikimedia.org/wikipedia/commons/3/35/Tux.svg[Tux,250,350]
+
+image::sunset.png[Tiger1,100,100,float="right",align="center"]
+
+image::sunset.png[Tiger2,100,100,float="righx"]
+
+image::sunset.png[Tiger3,100,100,floax="right"]
+
+image::sunset.png[Tiger4,100,100,role="right"]
+
+image::sunset.png[Tiger5,100,100,role="righx"]
+
+image::sunset.png[Tiger6,100,100,role="right left"]
+
+[.right.text-center]
+image::sunset.png[Tiger7,100,100]
+
+[.righx.center]
+image::sunset.png[Tiger8,100,100]
+
+<<< block_image
+
+<div class="imageblock">
+<div class="content">
+<img src="sunset.jpg" alt="sunset">
+</div>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="sunset.jpg" alt="Block image with attribute ref">
+</div>
+</div>
+<div class="paragraph">
+<p>image::sunset.jpg[
+This is become paragraph.</p>
+</div>
+<div class="paragraph">
+<p>image::sunset.jpg]</p>
+</div>
+<div class="paragraph">
+<p>image::sunset.jpg[Multi
+line text].</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="sunset.jpg" alt="1">
+</div>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="sunset.jpg" alt="1">
+</div>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="notexist.jpg" alt="notexist">
+</div>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="https://upload.wikimedia.org/wikipedia/commons/3/35/Tux.svg" alt="Tux" width="250" height="350">
+</div>
+</div>
+<div class="imageblock right text-center">
+<div class="content">
+<img src="sunset.png" alt="Tiger1" width="100" height="100">
+</div>
+</div>
+<div class="imageblock righx">
+<div class="content">
+<img src="sunset.png" alt="Tiger2" width="100" height="100">
+</div>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="sunset.png" alt="Tiger3" width="100" height="100">
+</div>
+</div>
+<div class="imageblock right">
+<div class="content">
+<img src="sunset.png" alt="Tiger4" width="100" height="100">
+</div>
+</div>
+<div class="imageblock righx">
+<div class="content">
+<img src="sunset.png" alt="Tiger5" width="100" height="100">
+</div>
+</div>
+<div class="imageblock right left">
+<div class="content">
+<img src="sunset.png" alt="Tiger6" width="100" height="100">
+</div>
+</div>
+<div class="imageblock right text-center">
+<div class="content">
+<img src="sunset.png" alt="Tiger7" width="100" height="100">
+</div>
+</div>
+<div class="imageblock righx center">
+<div class="content">
+<img src="sunset.png" alt="Tiger8" width="100" height="100">
+</div>
+</div>