]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/xml/syntax/syntax.factor
factor: trim using lists
[factor.git] / basis / xml / syntax / syntax.factor
index 8738bef20b69011235a5d592430fe2384e593ddd..aeebe98bbe66cc65d38bf71a6d352e2dfa107ed6 100644 (file)
@@ -1,22 +1,21 @@
 ! Copyright (C) 2005, 2009 Daniel Ehrenberg
 ! See http://factorcode.org/license.txt for BSD license.
-USING: words assocs kernel accessors parser vocabs.parser
-effects.parser sequences summary lexer splitting combinators
-locals memoize sequences.deep xml.data xml.state xml namespaces
-present arrays generalizations sequences.generalizations strings
-make math macros multiline combinators.short-circuit sorting fry
-unicode.categories effects ;
+USING: accessors arrays assocs combinators effects
+effects.parser kernel lexer make math memoize multiline
+namespaces parser present sequences sequences.deep
+sequences.generalizations strings summary unicode
+words xml xml.data xml.state ;
 IN: xml.syntax
 
 <PRIVATE
 
-TUPLE: no-tag name word ;
+ERROR: no-tag name word ;
+
 M: no-tag summary
     drop "The tag-dispatching word has no method for the given tag name" ;
 
 : compile-tags ( word xtable -- quot )
-    >alist swap '[ _ no-tag boa throw ] suffix
-    '[ dup main>> _ case ] ;
+    >alist swap '[ _ no-tag ] suffix '[ dup main>> _ case ] ;
 
 : define-tags ( word effect -- )
     [ dup dup "xtable" word-prop compile-tags ] dip define-declared ;
@@ -72,7 +71,7 @@ SYNTAX: XML-NS:
 DEFER: interpolate-sequence
 
 : get-interpolated ( interpolated -- quot )
-    var>> '[ [ _ swap at ] keep ] ;
+    var>> '[ [ _ of ] keep ] ;
 
 : ?present ( object -- string )
     dup [ present ] when ;
@@ -103,6 +102,10 @@ M: xml-data push-item , ;
 M: object push-item present , ;
 M: sequence push-item
     dup xml-data? [ , ] [ [ push-item ] each ] if ;
+M: xml push-item
+    [ before>> push-item ]
+    [ body>> push-item ]
+    [ after>> push-item ] tri ;
 M: number push-item present , ;
 M: xml-chunk push-item % ;
 
@@ -148,7 +151,7 @@ MACRO: interpolate-xml ( xml -- quot )
     [ [ var>> , ] each-interpolated ] { } make ;
 
 : nenum ( ... n -- assoc )
-    narray <enum> ; inline
+    narray <enumerated> ; inline
 
 : collect ( accum variables -- accum ? )
     {