(est-eval-value-as-character): New function.
authorMORIOKA Tomohiko <tomo.git@chise.org>
Wed, 15 Jun 2016 00:36:21 +0000 (09:36 +0900)
committerMORIOKA Tomohiko <tomo.git@chise.org>
Wed, 15 Jun 2016 00:36:21 +0000 (09:36 +0900)
(est-eval-value-as-char-list): New function.
(est-eval-apply-value): Add new format `char-list'.

est-eval.el

index 3f47739..3cd848a 100644 (file)
                )))
     (est-eval-value-default value)))
 
+(defun est-eval-value-as-character (value)
+  (let (ret)
+  (if (and (concord-object-p value)
+          (setq ret (concord-object-get value 'character)))
+      (list 'object (list :object value)
+           (mapconcat #'char-to-string 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-char-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-character 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)))
         ((or (eq format 'space-separated)
              (eq format 'space-separated-char-list))
          (est-eval-value-as-object-list value " "))
+        ((eq format 'char-list)
+         (est-eval-value-as-char-list value nil))
         ((eq format 'unordered-list)
          (est-eval-value-as-object-list value nil 'unordered-list))
         ((eq format 'unordered-composition-list)