(est-eval-value-as-glyph-image): New function.
authorMORIOKA Tomohiko <tomo.git@chise.org>
Tue, 28 Jun 2016 08:01:51 +0000 (17:01 +0900)
committerMORIOKA Tomohiko <tomo.git@chise.org>
Tue, 28 Jun 2016 08:01:51 +0000 (17:01 +0900)
(est-eval-value-as-object): Use `est-eval-value-as-glyph-image' for
genre `glyph-image'.
(est-eval-value-as-location): New function.
(est-eval-value-as-name): New function.
(est-eval-value-as-location-list): New function.
(est-eval-value-as-name-list): New function.
(est-eval-apply-value):
- Use `est-eval-value-as-location-list' for format `location-list'.
- Use `est-eval-value-as-name-list' for format `name-list'.

est-eval.el

index 3cd848a..835d5b4 100644 (file)
                              (list :alt name))))
       name)))
 
+(defun est-eval-value-as-glyph-image (value)
+  (let ((image-resource (car (concord-object-get value '->image-resource))))
+    (est-eval-value-as-image-resource image-resource)))
+
 ;; (defun est-journal-volume-object-get-volume-format (spec feature)
 ;;   (when (integerp spec)
 ;;     (setq spec (format "%02d" spec)))
                 ((eq genre 'image-resource)
                  (est-eval-value-as-image-resource value)
                  )
+                 ((eq genre 'glyph-image)
+                 (est-eval-value-as-glyph-image value)
+                 )
                  (t
                  (setq genre-o (concord-decode-object '=id genre 'genre))
                  (or (and genre-o
            (mapconcat #'char-to-string ret ""))
     (est-eval-value-as-object value))))
 
+(defun est-eval-value-as-location (value)
+  (let (ret)
+  (if (and (concord-object-p value)
+          (setq ret (concord-object-get value '=location)))
+      (list 'object (list :object value)
+           ret)
+    (est-eval-value-as-object value))))
+
+(defun est-eval-value-as-name (value)
+  (let (ret)
+  (if (and (concord-object-p value)
+          (setq ret (concord-object-get value 'name)))
+      (list 'object (list :object value)
+           ret)
+    (est-eval-value-as-object value))))
+
 (defun est-eval-value-as-HEX (value)
   (if (integerp value)
       (list 'HEX nil (format "%X" value))
        (error (format "%s" value)))
     (format "%s" value)))
 
+(defun est-eval-value-as-location-list (value &optional separator subtype)
+  (if (and (listp value)
+          (listp (cdr value)))
+      (condition-case nil
+         (let (props)
+           (if separator
+               (setq props (list :separator separator)))
+           (if subtype
+               (setq props (list* :subtype subtype props)))
+           (list* 'list props
+                  (mapcar #'est-eval-value-as-location value)))
+       (error (format "%s" value)))
+    (format "%s" value)))
+
+(defun est-eval-value-as-name-list (value &optional separator subtype)
+  (if (and (listp value)
+          (listp (cdr value)))
+      (condition-case nil
+         (let (props)
+           (if separator
+               (setq props (list :separator separator)))
+           (if subtype
+               (setq props (list* :subtype subtype props)))
+           (list* 'list props
+                  (mapcar #'est-eval-value-as-name value)))
+       (error (format "%s" value)))
+    (format "%s" value)))
+
 (defun est-eval-value-as-composition-list (value &optional separator subtype)
   (if (and (listp value)
           (listp (cdr value)))
          (est-eval-value-as-object-list value " "))
         ((eq format 'char-list)
          (est-eval-value-as-char-list value nil))
+        ((eq format 'location-list)
+         (est-eval-value-as-location-list value nil))
+        ((eq format 'name-list)
+         (est-eval-value-as-name-list value nil))
         ((eq format 'unordered-list)
          (est-eval-value-as-object-list value nil 'unordered-list))
         ((eq format 'unordered-composition-list)