[TxMt] possible format strings bug

Matt Neuburg matt at tidbits.com
Fri Apr 4 14:45:19 UTC 2014


I think I've found a bug in TextMate's regular expression format string replacement feature. Try this.

Target document:

=== testing
== testing
= testing

Find expression (regex):

^(=+)

Replace expression:

${1/=(=)?(=)?/${2:?2:${1:?1:0}}/}

Do a replace all. What I expect:

2 testing
1 testing
0 testing

What I get:

2 testing
1 testing
1 testing

In the last line, neither group 2 nor group 1 should be matched, since the initial equal-sign is supposed to scarf up the entire match. Therefore I expect the logic to be:

* group 2 failed, so use its "else" alternative, which is the test for group 1

* group 1 failed, so use its "else" alternative, which is the value "0"

But try as I may, I cannot make "0" appear in the document. That is the proposed bug. It is as if group 1 is thought to be _always_ satisfied, which should not be the case.

Of course, feel free to prove me wrong by fixing my find/replace expressions, thus doing my homework for me. :) m.

--
matt neuburg, phd = http://www.apeth.net/matt/
pantes anthropoi tou eidenai oregontai phusei
Programming iOS 7! http://shop.oreilly.com/product/0636920031017.do
iOS 7 Fundamentals! http://shop.oreilly.com/product/0636920032465.do
RubyFrontier! http://www.apeth.com/RubyFrontierDocs/default.html




More information about the textmate mailing list