: find-after ( seq quot -- elem after )
over >r find r> rot 1+ tail ; inline
-: tag-named? ( tag name -- ? )
+: tag-named*? ( tag name -- ? )
assure-name swap tag-named? ;
! Questions
C: <q/a> q/a
: li>q/a ( li -- q/a )
- [ "br" tag-named? not ] subset
- [ "strong" tag-named? ] find-after
+ [ "br" tag-named*? not ] subset
+ [ "strong" tag-named*? ] find-after
>r tag-children r> <q/a> ;
: q/a>li ( q/a -- li )
dup tag? [ names-match? ] [ 2drop f ] if ;\r
\r
: tag-named* ( tag name/string -- matching-tag )\r
- assure-name swap [ dupd tag-named? ] xml-find nip ;\r
+ assure-name [ swap tag-named? ] curry xml-find ;\r
\r
: tags-named* ( tag name/string -- tags-seq )\r
- assure-name swap [ dupd tag-named? ] xml-subset nip ;\r
+ assure-name [ swap tag-named? ] curry xml-subset ;\r
\r
: tag-named ( tag name/string -- matching-tag )\r
! like get-name-tag but only looks at direct children,\r
>r 1vector r> insert-children ;\r
\r
: tag-with-attr? ( elem attr-value attr-name -- ? )\r
- rot dup tag? [ at = ] [ drop f ] if ;\r
+ rot dup tag? [ at = ] [ 3drop f ] if ;\r
\r
: tag-with-attr ( tag attr-value attr-name -- matching-tag )\r
assure-name [ tag-with-attr? ] 2curry find nip ;\r
assure-name [ tag-with-attr? ] 2curry subset ;\r
\r
: tag-with-attr* ( tag attr-value attr-name -- matching-tag )\r
- assure-name [ tag-with-attr? ] 2curry xml-find nip ;\r
+ assure-name [ tag-with-attr? ] 2curry xml-find ;\r
\r
: tags-with-attr* ( tag attr-value attr-name -- tags-seq )\r
assure-name [ tag-with-attr? ] 2curry xml-subset ;\r