Status checkin
Fri Nov 13 08:32:55 UTC 2009 pix@kepibu.org
* Status checkin
diff -rN -u old-Oh, Ducks!/regexp-template.lisp new-Oh, Ducks!/regexp-template.lisp
--- old-Oh, Ducks!/regexp-template.lisp 2013-11-18 23:43:37.000000000 +0000
+++ new-Oh, Ducks!/regexp-template.lisp 2013-11-18 23:43:37.000000000 +0000
@@ -6,8 +6,9 @@
(defmethod make-template ((kind (eql 'regexp+)) (spec cons))
(destructuring-bind (re-kwd regexp &optional vars &rest keys)
spec
+ (declare (ignore re-kwd))
(make-instance 'unify::regular-expression-template
- :spec (list* re-kwd
+ :spec (list* 'unify::regexp
(concatenate 'string regexp "(.*)$")
(append vars '(?&rest))
keys))))
diff -rN -u old-Oh, Ducks!/tests.lisp new-Oh, Ducks!/tests.lisp
--- old-Oh, Ducks!/tests.lisp 2013-11-18 23:43:37.000000000 +0000
+++ new-Oh, Ducks!/tests.lisp 2013-11-18 23:43:37.000000000 +0000
@@ -33,3 +33,8 @@
(match (#T(lhtml ("div" ("> i" . ?i)))
"<div>I do <i>not</i> like cheese.</div><div><span>I like <i>cheese</i>.</span></div>")
i))
+
+#+LATER
+(match (#t(lhtml ("div::content" . #t(regexp+ "^f(o+)" (?o))))
+ "<div>barbaz</div><div>fooooooobar</div>")
+ (values o &rest))
diff -rN -u old-Oh, Ducks!/unification-templates.lisp new-Oh, Ducks!/unification-templates.lisp
--- old-Oh, Ducks!/unification-templates.lisp 2013-11-18 23:43:37.000000000 +0000
+++ new-Oh, Ducks!/unification-templates.lisp 2013-11-18 23:43:37.000000000 +0000
@@ -63,6 +63,7 @@
+;; FIXME: rename to selector
(defclass css-specifier (unify::string-template)
((matcher :reader matcher :initarg :matcher)))
@@ -70,9 +71,18 @@
(:method ((ob css-specifier)) t)
(:method ((ob t)) nil))
+;; FIXME: rename to simple-selector
(defclass css-selector (unify::template)
((arg :reader selector-arg :initarg :arg)))
+#|| TODO
+ (defclass combinator (selector) ())
+ (defclass child-combinator (combinator) ())
+ (defclass descendant-combinator (combinator) ())
+ (defclass adjacent-combinator (combinator) ())
+ (defclass sibling-combinator (combinator) ())
+||#
+
(defmethod print-object ((selector css-selector) stream)
(format stream "#<selector ~s>" (selector-arg selector)))
@@ -97,6 +107,8 @@
(#T(regexp+ "^[#](\\w+)" (?id)) (cons (make-instance 'css-id-selector :arg id) (parse-css-specifier &rest)))
(#T(regexp+ "^[\\.](\\w+)" (?class)) (cons (make-instance 'css-class-selector :arg class) (parse-css-specifier &rest)))))
+;; FIXME: rename to select-subject?
+;; FIXME: make css-select methods use functions defined in traversal/implementation.lisp
(defgeneric css-select (specifier document))
;; FIXME?: move to within (css-select css-specifier cons)
@@ -154,20 +166,3 @@
:when (all-match element)
:collect element))
(t (css-collect-elements selector elements))))))
-
-
-
-;; type-defines-selectors
-;; Under this implementation strategy, CSS selectors themselves would be
-;; implemented for elements.
-#|
-(defgeneric css-combinator:child (a b))
-(defgeneric css-combinator:descendant (a b))
-(defgeneric css-combinator:adjacent (a b))
-(defgeneric css-combinator:sibling (a b))
-
-(defgeneric css-selector:element-type (element element-type))
-(defgeneric css-selector:class (element class))
-(defgeneric css-selector:id (element id))
-|#
-