On Wed, Oct 29, 2008 at 1:27 PM, Kyle R. Burton <[EMAIL PROTECTED]> wrote:
>
>> Thanks for the macro. =)
>> The str function is really a good replacement for interpolation.
>
> Yes, thank you for the macro.  I anticipate using this approach (I'm
> accustomed to it from Ruby, Perl and JScheme), but wanted to support a
> way of stopping the parser (by backslashing the opening brace:
> "$\\{x}" ).  I think adding the zero-width assertion in the re-matcher
> and the replaceAll to knock the backslash out gets me there:

You're very welcome! The backslash-fix makes good sense.

Graham

>
> (defn tokenize [s]
>  (let [positions (let [mm (re-matcher #"\\$(?!\\\\)\\{.*?\\}" s)]
>                   (loop [acc []]
>                     (if (.find mm)
>                       (recur (conj acc [(.start mm) (.end mm)]))
>                       acc)))
>       intermed (conj (apply vector 0 (apply concat positions))
>                      (.length s))
>       textposns (partition 2 intermed)]
>   (my-interleave (map (fn [[a b]] [:text (. (.substring s a b)
>                                             (replaceAll "\\$\\\\\\{" 
> "\\${"))])
>                       textposns)
>                  (map (fn [[a b]] [:pat (.substring s (+ a 2) (- b 1))])
>                       positions))))
>
> Regards,
>
> Kyle Burton
>
>
>> On Oct 28, 8:29 pm, "Graham Fawcett" <[EMAIL PROTECTED]> wrote:
>>> On Tue, Oct 28, 2008 at 7:27 PM, Graham Fawcett
>>>
>>> <[EMAIL PROTECTED]> wrote:
>>> > But for fun, here's an (i ...) macro, that will give you ${}
>>> > interpolation in strings (if it works at all, I test it very
>>> > thorougly!).
>>>
>>> Haha, nor did I spell- or grammar-check very thoroughly!
>>>
>>> I meant: I didn't test the code very thoroughly, so I hope it works at all.
>>>
>>> Graham
>> >
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to