From: Slava Pestov Date: Mon, 26 Jan 2009 05:04:19 +0000 (-0600) Subject: Clean up some duplication in interpolate X-Git-Tag: 0.94~2198^2~80 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=7360cd5b302dc1ee2779ba8cda8a824e74dc59a2 Clean up some duplication in interpolate --- diff --git a/basis/interpolate/interpolate.factor b/basis/interpolate/interpolate.factor index 5e4805a8ac..778f94ab6f 100644 --- a/basis/interpolate/interpolate.factor +++ b/basis/interpolate/interpolate.factor @@ -1,9 +1,11 @@ -! Copyright (C) 2008 Slava Pestov. +! Copyright (C) 2008, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: io kernel macros make multiline namespaces parser present sequences strings splitting fry accessors ; IN: interpolate +> '[ _ get present write ] ] + [ name>> @ '[ _ @ present write ] ] [ '[ _ write ] ] if - ] map [ ] join ; + ] map [ ] join ; inline : interpolate-locals ( string -- quot ) - parse-interpolate [ - dup interpolate-var? - [ name>> search '[ _ present write ] ] - [ '[ _ write ] ] - if - ] map [ ] join ; + [ search [ ] ] (interpolate) ; + +PRIVATE> + +MACRO: interpolate ( string -- ) + [ [ get ] ] (interpolate) ; -: I[ "]I" parse-multiline-string - interpolate-locals parsed \ call parsed ; parsing +: I[ + "]I" parse-multiline-string + interpolate-locals over push-all ; parsing