Jun Omae wrote on 08.08.2024 at 01:49:
Hi,

On 2024/08/08 1:11, Clemens Feige wrote:
Hello

I suspect there is a regression with the popular WikiExtrasPlugin, see
[1]. After upgrading from TRAC 1.4 to 1.6 the handling delimiters
adjacent to a phrase seems affected.

Here is a quote of what WikiExtrasPlugin advertises, and what is
accomplished in code with method `add_style` in file `phrases.py`; see [2]:

Any delimiter ():<> adjacent to a phrase will not be presented. This makes it 
possible to naturally write FIXME:, for example, but view the phrase highlighted 
without the colon (:) which would not look natural.

However, in TRAC 1.6 for a phrase like FIXME: the colon is not removed,
but it should be. For dual colons i.e. :FIXME: both colons are removed,
which is correct.
TRAC 1.4, all colons in FIXME: and in :FIXME: are removed.

If you are using the WikiExtrasPlugin and the new TRAC 1.6, then please
tell me: What comes out if you write a phrase with trailing adjacent
delimiter i.e. "FIXME:"?

Anybody who can comment on this?
Depending on other people's feedback I would file a bug ticket.

Unfortunately I do not understand the code in method `add_style` in file
`phrases.py`; see [2]. What is `self.text` for example?

Thanks
Clemens


P.S.

[1]
https://trac-hacks.org/wiki/WikiExtrasPlugin

[2]
https://trac-hacks.org/browser/wikiextrasplugin/trunk/tracwikiextras/phrases.py?rev=16718#L90


That is caused by the generated regular expression from the plugin.
The longer symbols in (...|...|...) of the regular expression should
come first.

Please try the following patch:

[[[
Index: tracwikiextras/util.py
===================================================================
--- tracwikiextras/util.py      (revision 18650)
+++ tracwikiextras/util.py      (working copy)
@@ -35,7 +35,7 @@
      unicode = str

  def prepare_regexp(d):
-    syms = sorted(d.keys(), key=lambda a: len(a))
+    syms = sorted(d.keys(), key=lambda a: len(a), reverse=True)
      return "|".join([r'%s%s%s'
                       % (r'\b' if re.match(r'\w', s[0]) else '',
                          re.escape(s),
]]]


Hello

The patch works well. Great! Thanks, Jun.
Using `reverse=True` inside `prepare_regexp` seems to cure the issue.

SVN-blame tells us: The affected line 38 in tracwikiextras/util.py has
been recently edited in 2022 with the objective to make this plug-in
compatible with Python 3.

How shall we continue? If desired I can still create a ticket for the
maintainer of the plug-in and append Jun's patch. Or the maintainer or
somebody else with write permissions commits the change ...

Thanks
Clemens


--
You received this message because you are subscribed to the Google Groups "Trac 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to trac-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/trac-users/8abd463d-ab85-4fc8-85a1-de3e5badfa2a%40osypkamed.com.

Reply via email to