! 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 ;
DEFER: interpolate-sequence
: get-interpolated ( interpolated -- quot )
- var>> '[ [ _ swap at ] keep ] ;
+ var>> '[ [ _ of ] keep ] ;
: ?present ( object -- string )
dup [ present ] when ;
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 % ;
[ [ var>> , ] each-interpolated ] { } make ;
: nenum ( ... n -- assoc )
- narray <enum> ; inline
+ narray <enumerated> ; inline
: collect ( accum variables -- accum ? )
{