diff options
| author | Shulhan <ms@kilabit.info> | 2023-03-02 23:00:07 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2023-03-02 23:00:19 +0700 |
| commit | 35c7edc6cb26bf63fc8cf1f61d5e33fc9ee620ef (patch) | |
| tree | 17600d2f860187130f23a52c9e603519eaaaa444 | |
| parent | 5b83f6228897c3a7f24fa7b60cb30310bb5f2dcf (diff) | |
| download | asciidoctor-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.go | 7 | ||||
| -rw-r--r-- | testdata/block_image_test.txt | 127 |
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> |
