[darcs-users] darcs replace token complaint
Eric Kow
kowey at darcs.net
Sat Aug 15 09:33:49 UTC 2009
On Fri, Aug 14, 2009 at 11:35:08 +1000, Trent W. Buck wrote:
> Neither of the two (sigh) default tokenizers allow / within a token.
Ah, so for reference, here they are:
default_toks :: String
default_toks = "A-Za-z_0-9"
filename_toks :: String
filename_toks = "A-Za-z_0-9\\-\\."
So the answer to Gwern would be that he needs to include '/' in his
token spec if he wants this work.
> I really do think that the "darcs replace" in its current form is too
> dangerous to use, because absolutely nothing has the exact lexical
> structure assumed by it.
The word "dangerous" made me sit up for a moment. Then I realised you
were using a broader definition of dangerous than I am. My stricter
sense of 'danger' here means 'uh-oh we have to change the Darcs core'
which does not appear to be the case here.
Are you at least convinced that darcs replace is safe in the sense that
it is simple/predictable? Here is the code that implements the heart of
it. There appears to be very little fancy machinery in there, just
using a (Char -> Bool) function (see RegChars) to determine if something
is a token character or a delimiter.
forceTokReplace :: String -> String -> String
-> FileContents -> Maybe FileContents
forceTokReplace t os ns c = Just $ unlinesPS $ map forceReplace $ linesPS c
where o = BC.pack os
n = BC.pack ns
tokchar = regChars t
toks_and_intratoks ps | B.null ps = []
toks_and_intratoks ps =
let (before,s') = BC.break tokchar ps
(tok, after) = BC.break (not . tokchar) s'
in before : tok : toks_and_intratoks after
forceReplace ps = B.concat $ map o_t_n $ toks_and_intratoks ps
o_t_n s | s == o = n
| otherwise = s
Is that convincing enough? Because if we only have to change the
default token spec in the replace command, that's easy.
Basically, I'm "happy" if once we have a replace patch it does exactly
what it says it will do 100% predictably.
No cause for Erician alarm, right?
--
Eric Kow <http://www.nltg.brighton.ac.uk/home/Eric.Kow>
PGP Key ID: 08AC04F9
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 194 bytes
Desc: not available
URL: <http://lists.osuosl.org/pipermail/darcs-users/attachments/20090815/8bed8e70/attachment.pgp>
More information about the darcs-users
mailing list