From 7360cd5b302dc1ee2779ba8cda8a824e74dc59a2 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 25 Jan 2009 23:04:19 -0600 Subject: [PATCH] Clean up some duplication in interpolate --- basis/interpolate/interpolate.factor | 29 +++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) 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 -- 2.34.1