emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/taxy 0dce844 16/39: Docs: Add example of incremental fi


From: ELPA Syncer
Subject: [elpa] externals/taxy 0dce844 16/39: Docs: Add example of incremental filling
Date: Fri, 27 Aug 2021 10:57:32 -0400 (EDT)

branch: externals/taxy
commit 0dce844733f0e615952a11564a75d2f93ecc13fc
Author: Adam Porter <adam@alphapapa.net>
Commit: Adam Porter <adam@alphapapa.net>

    Docs: Add example of incremental filling
---
 README.org | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 68 insertions(+), 2 deletions(-)

diff --git a/README.org b/README.org
index 59679a9..434e44b 100644
--- a/README.org
+++ b/README.org
@@ -15,9 +15,9 @@ Helpful features include:
 +  Dynamic taxonomies :: Objects may be classified into hierarchies 
automatically defined at runtime based on their attributes.
 +  Reusable taxonomies :: Taxonomy definitions may be stored in variables and 
reused in other taxonomies' descendant groups.
 
-* Example
+* Examples
 
-This is a silly taxonomy of numbers below 100:
+Let's make a silly taxonomy of numbers below 100:
 
 #+BEGIN_SRC elisp
   ("Numbery" "A silly taxonomy of numbers."
@@ -105,6 +105,72 @@ You might think about how to produce that by writing some 
imperative code, but =
 
 The ~taxy-fill~ function applies the numbers in a "cascade" down the hierarchy 
of "taxys", and the ~taxy-plain~ function returns a meaningful subset of the 
taxys' slots, suitable for display.
 
+You can also add more objects after the hierarchy has been filled:
+
+#+BEGIN_SRC elisp
+  (defvar lettery
+    (make-taxy :name "Lettery"
+               :description "A comprehensive taxonomy of letters."
+               :taxys (list (make-taxy :name "Vowels"
+                                       :description "You know what those are."
+                                       :predicate (lambda (l)
+                                                    (member-ignore-case l 
'("a" "e" "i" "o" "u"))))
+                            (make-taxy :name "Consonants"
+                                       :description "Well, if they aren't a 
vowel..."))))
+
+  (taxy-plain
+   (taxy-fill (reverse
+               (cl-loop for l from ?a to ?n
+                        collect (upcase (char-to-string l))))
+              lettery))
+#+END_SRC
+
+#+BEGIN_SRC elisp
+  ("Lettery" "A comprehensive taxonomy of letters."
+   (("Vowels" "You know what those are."
+     ("A" "E" "I"))
+    ("Consonants" "Well, if they aren't a vowel..."
+     ("B" "C" "D" "F" "G" "H" "J" "K" "L" "M" "N"))))
+#+END_SRC
+
+Oops, we forgot the letters after N!  Let's add them, too:
+
+#+BEGIN_SRC elisp
+  (taxy-plain
+   (taxy-fill (reverse
+               (cl-loop for l from ?n to ?z
+                        collect (upcase (char-to-string l))))
+              lettery))
+#+END_SRC
+
+#+BEGIN_SRC elisp
+  ("Lettery" "A comprehensive taxonomy of letters."
+   (("Vowels" "You know what those are."
+     ("O" "U" "A" "E" "I"))
+    ("Consonants" "Well, if they aren't a vowel..."
+     ("N" "P" "Q" "R" "S" "T" "V" "W" "X" "Y" "Z" "B" "C" "D" "F" "G" "H" "J" 
"K" "L" "M" "N"))))
+#+END_SRC
+
+Oh, they're out of order, now.  That won't do.  Let's fix that:
+
+#+BEGIN_SRC elisp
+  (cl-loop for taxy in-ref (taxy-taxys lettery)
+           do (setf (taxy-objects taxy) (cl-sort (taxy-objects taxy) #'<
+                                                 :key #'string-to-char)))
+
+  (taxy-plain lettery)
+#+END_SRC
+
+That's better:
+
+#+BEGIN_SRC elisp
+  ("Lettery" "A comprehensive taxonomy of letters."
+   (("Vowels" "You know what those are."
+     ("A" "E" "I" "O" "U"))
+    ("Consonants" "Well, if they aren't a vowel..."
+     ("B" "C" "D" "F" "G" "H" "J" "K" "L" "M" "N" "N" "P" "Q" "R" "S" "T" "V" 
"W" "X" "Y" "Z"))))
+#+END_SRC
+
 * Contents                                                         :noexport:
 :PROPERTIES:
 :TOC:      :include siblings



reply via email to

[Prev in Thread] Current Thread [Next in Thread]