textile / python-textile

A Python port of Textile, A humane web text generator
Other
68 stars 23 forks source link

Alignment in restricted mode works not correctly. #53

Open bezbashnik opened 6 years ago

bezbashnik commented 6 years ago

In tests for checking aligment you use symbols '<' and '>'

result = t.image('!</imgs/myphoto.jpg!')

But in fact, these symbols was parsed in html special chars. Their looks like '\<' and '\>' . And therefore working only

Simple way in pattern of reg exp function


\\!                  # opening !
(\<|\=|\>)?         # optional alignment atts
...

replace by

...
\\!                  # opening !
(\&lt;|\=|\&gt;)?         # optional alignment atts
...

and further alignments = {'<': 'left', '=': 'center', '>': 'right'} replace by alignments = {'\&lt;': 'left', '=': 'center', '\&gt;': 'right'}

EDIT 2017-08-29 17:04 by @sebix: markup

ikirudennis commented 6 years ago

I'm not sure I'm understanding this issue. Everything seems to be working exactly as designed, and replacing the angle brackets with their html-encoded counterparts does not result in correct output. Can you describe the problem in another manner? Is there some textile markup you're using which exposes this issue?

bezbashnik commented 6 years ago

I apologize for the bad description of the problem - was the end of the day. If we turn to the examples and description of the documentation Textile, and then using your module, try to align any tag left-aligned, right-aligned, or justified. The module starts to work not correctly. The following examples are tested on version 2.3.16 of your module with restricted=True

input:

p<. Left aligned paragraph.

p>. Right aligned paragraph.

p=. Centered paragraph.

p<>. This is a very long, almost never ending, sentence with the sole purpose to demonstrate how a justified paragraph would look like if the sentence wraps around several lines.

output:

p<. Left aligned paragraph.

p>. Right aligned paragraph.

Centered paragraph.(worked only align:center)

p<>. This is a very long, almost never ending, sentence with the sole purpose to demonstrate how a justified paragraph would look like if the sentence wraps around several lines.

The problem I explained in a previous post. How valid this result? When restricted=False everything works perfectly. Digging in the code: first you translate all characters to have html in their html codes. But when perform the test of paragraph regular expression, you do it via the symbols >, <, =. While they are actually \<, \>, =. Hope I outlined the problem more clearly. I Express my gratitude for the module.

ikirudennis commented 6 years ago

Okay, now that you mentioned it's only in restricted mode, that changes things a little bit. And unfortunately, it looks like this is an upstream issue with php-textile. When I tried to run those txstyle examples through php-textile in restricted mode, it raises fatal errors. I'll bring this up as an issue with them, we'll discuss what the proper output should be and work from there.