XML attrs

db4
Daniel Ehrenberg 2007-12-17 15:29:21 -05:00
parent 87b4633318
commit d6e445df1f
1 changed files with 8 additions and 6 deletions

View File

@ -1,6 +1,6 @@
! Copyright (C) 2005, 2006 Daniel Ehrenberg ! Copyright (C) 2005, 2006 Daniel Ehrenberg
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: kernel sequences sequences.private assocs arrays ; USING: kernel sequences sequences.private assocs arrays vectors ;
IN: xml.data IN: xml.data
TUPLE: name space tag url ; TUPLE: name space tag url ;
@ -60,7 +60,8 @@ M: attrs set-at
2dup attr@ nip [ 2dup attr@ nip [
2nip set-second 2nip set-second
] [ ] [
>r assure-name swap 2array r> push [ >r assure-name swap 2array r> ?push ] keep
set-delegate
] if* ; ] if* ;
M: attrs assoc-size length ; M: attrs assoc-size length ;
@ -68,14 +69,15 @@ M: attrs new-assoc drop V{ } new <attrs> ;
M: attrs >alist delegate >alist ; M: attrs >alist delegate >alist ;
: >attrs ( assoc -- attrs ) : >attrs ( assoc -- attrs )
V{ } assoc-clone-like dup [
[ >r assure-name r> ] assoc-map V{ } assoc-clone-like
<attrs> ; [ >r assure-name r> ] assoc-map
] when <attrs> ;
M: attrs assoc-like M: attrs assoc-like
drop dup attrs? [ >attrs ] unless ; drop dup attrs? [ >attrs ] unless ;
M: attrs clear-assoc M: attrs clear-assoc
delete-all ; f swap set-delegate ;
M: attrs delete-at M: attrs delete-at
tuck attr@ drop [ swap delete-nth ] [ drop ] if* ; tuck attr@ drop [ swap delete-nth ] [ drop ] if* ;