|
@@ -228,9 +228,21 @@
|
|
|
(type function +album<>+ +track<>+))
|
|
(type function +album<>+ +track<>+))
|
|
|
(let ((albs (the fixnum (funcall +album<>+ (track-album a) (track-album b)))))
|
|
(let ((albs (the fixnum (funcall +album<>+ (track-album a) (track-album b)))))
|
|
|
(if (zerop albs)
|
|
(if (zerop albs)
|
|
|
- (< (the fixnum (funcall +track<>+ a b)) 0)
|
|
|
|
|
|
|
+ (< (the fixnum (funcall +track<>+ a b)) 0)
|
|
|
albs)))
|
|
albs)))
|
|
|
|
|
|
|
|
|
|
+(defun slot< (a b)
|
|
|
|
|
+ (declare #.*standard-optimize-settings*
|
|
|
|
|
+ (type simple-string a b))
|
|
|
|
|
+ (let ((aa (alpha-char-p (elt a 0)))
|
|
|
|
|
+ (ba (alpha-char-p (elt b 0))))
|
|
|
|
|
+ (cond
|
|
|
|
|
+ ((and aa ba) (string< a b))
|
|
|
|
|
+ (aa 0)
|
|
|
|
|
+ (ba)
|
|
|
|
|
+ (t (string< a b)))))
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
(defun match-filter (data category filter)
|
|
(defun match-filter (data category filter)
|
|
|
(declare #.*standard-optimize-settings*)
|
|
(declare #.*standard-optimize-settings*)
|
|
|
|
|
|
|
@@ -285,7 +297,7 @@
|
|
|
(case category
|
|
(case category
|
|
|
(album (if latest #'album-added> #'album<))
|
|
(album (if latest #'album-added> #'album<))
|
|
|
(year #'<)
|
|
(year #'<)
|
|
|
- (t #'string<))
|
|
|
|
|
|
|
+ (t #'slot<))
|
|
|
:key (case category
|
|
:key (case category
|
|
|
(album nil)
|
|
(album nil)
|
|
|
(t #'car))))
|
|
(t #'car))))
|