Hi,

I have an issue with the latest release of AsciiDoc (8.6.9) when using the 
XHTML backend in conjunction with the data-uri attribute to encode images 
as base64.  Basically, processing just hangs.  Was just wondering if anyone 
else has experienced the same issue, or if it is an issue with my 
setup/environment.


*Environment*

My environment is as follows:

   OS: Windows 7 Enterprise SP1 64-bit
   AsciiDoc: 8.6.9
   Python: 2.7.6 64-bit


I found the issue is caused by a change (since 8.6.8) in the xhtml11 conf 
file:


*xhtml11 conf file (8.6.8):*

[image-blockmacro]
<div class="imageblock{style? {style}}{role? {role}}{unbreakable-option? 
unbreakable}"{id? id="{id}"}{align? style="text-align:{align};"}{float? 
style="float:{float};"}>
<div class="content">
<a class="image" href="{link}">
{data-uri%}<img src="{imagesdir=}{imagesdir?/}{target}" 
alt="{alt={target}}"{width? width="{width}"}{height? height="{height}"} />
{data-uri#}<img alt="{alt={target}}"{width? width="{width}"}{height? 
height="{height}"} 
src="data:image/{eval:os.path.splitext(r'{target}')[1][1:]};base64,
{data-uri#}{sys:"{python}" -u -c "import base64,sys; 
base64.encode(sys.stdin,sys.stdout)" < 
"{eval:os.path.join(r"{indir={outdir}}",r"{imagesdir=}",r"{target}")}"}" />


*xhtml11 conf file (8.6.9):*

[image-blockmacro]
<div class="imageblock{style? {style}}{role? {role}}{unbreakable-option? 
unbreakable}"{id? id="{id}"}{align? style="text-align:{align};"}{float? 
style="float:{float};"}>
<div class="content">
<a class="image" href="{link}">
{data-uri%}<img src="{imagesdir=}{imagesdir?/}{target}" 
alt="{alt={target}}"{width? width="{width}"}{height? height="{height}"} />
{data-uri#}<img alt="{alt={target}}"{width? width="{width}"}{height? 
height="{height}"}
{data-uri#}{sys:"{python}" -u -c "import mimetypes,base64,sys; print 
'src=\"data:'+mimetypes.guess_type(r'{target}')[0]+';base64,'; 
base64.encode(sys.stdin,sys.stdout)" < 
"{eval:os.path.join(r"{indir={outdir}}",r"{imagesdir=}",r"{target}")}"}" />


The difference is 8.6.8 version uses the conf file to output the "src=..." 
part, but the 8.6.9 uses the system call to have Python print it.  The 
issue appears to be the escaped quote contained in the print statement in 
the latter.


*Steps to reproduce*

To reproduce, I create a basic document like this:

= Image test

== Foo

.Bar
image::tst.png[Foo bar]


Then render with the following command:

C:\>python C:/bin/asciidoc-8.6.9/asciidoc.py --verbose --attribute data-uri 
--backend=xhtml11 --out-file="C:\tst\image_test.xhtml" 
"C:\tst\image_test.txt"


Process hangs, with output as:

asciidoc: reading: C:\bin\asciidoc-8.6.9\asciidoc.conf
asciidoc: reading: C:\tst\image_test.txt
asciidoc: reading: C:\bin\asciidoc-8.6.9\xhtml11.conf
asciidoc: include1: C:\bin\asciidoc-8.6.9\stylesheets\asciidoc.css
asciidoc: image_test.txt: line 1: ifeval: "source-highlight"=="pygments": 
False
asciidoc: include1: C:\bin\asciidoc-8.6.9\javascripts\asciidoc.js
asciidoc: reading: C:\bin\asciidoc-8.6.9\filters\code\code-filter.conf
asciidoc: reading: 
C:\bin\asciidoc-8.6.9\filters\graphviz\graphviz-filter.conf
asciidoc: reading: C:\bin\asciidoc-8.6.9\filters\latex\latex-filter.conf
asciidoc: reading: C:\bin\asciidoc-8.6.9\filters\music\music-filter.conf
asciidoc: reading: 
C:\bin\asciidoc-8.6.9\filters\source\source-highlight-filter.conf
asciidoc: image_test.txt: line 1: ifeval: 
"source-highlight"=="source-highlight": True
asciidoc: image_test.txt: line 1: ifeval: "source-highlight"=="highlight": 
False
asciidoc: image_test.txt: line 1: ifeval: "source-highlight"=="pygments": 
False
asciidoc: reading: C:\bin\asciidoc-8.6.9\lang-en.conf
asciidoc: writing: C:\tst\image_test.xhtml
asciidoc: image_test.txt: line 7: evaluating: 
{eval:os.path.join(r"C:\tst",r"",r"tst.png")}
asciidoc: image_test.txt: line 7: evaluating: 
{sys:"C:\bin\python-2.7.6-64\python.exe" -u -c "import 
mimetypes,base64,sys; print '
src=\"data:'+mimetypes.guess_type(r'tst.png')[0]+';base64,'; 
base64.encode(sys.stdin,sys.stdout)" < "C:\tst\tst.png"}
asciidoc: image_test.txt: line 7: shelling: 
C:\bin\python-2.7.6-64\python.exe -u -c "import mimetypes,base64,sys; print 
'src=\"dat
a:'+mimetypes.guess_type(r'tst.png')[0]+';base64,'; 
base64.encode(sys.stdin,sys.stdout)" < C:\tst\tst.png > c:\users\will\appd
ata\local\temp\tmpzlzbjt
src="data:image/png;base64,


*Second way to reproduce*

I also found the same issue outside of AsciiDoc, so I guess it is actually 
a Python problem.  I use a basic text file with a few lines in it.

At the command line I run the following command successfully:

C:\tst>python -u -c "import sys; print 'foobar:'; print 
sys.stdin.readlines()" < "test.txt"
foobar:
['foo\r\n', 'bar\r\n', 'baz']

However, including an escaped quote hangs:

C:\tst>python -u -c "import sys; print 'foobar:\"'; print 
sys.stdin.readlines()" < "test.txt"
foobar:"

It only happens when trying to read from stdin though, as the following 
command works:

C:\tst>python -u -c "import sys; print 'foobar:\"'; print sys.stdin.mode" < 
"test.txt"
foobar:"
r


Cheers,
Will

-- 
You received this message because you are subscribed to the Google Groups 
"asciidoc" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/asciidoc.
For more options, visit https://groups.google.com/d/optout.

Reply via email to