+ (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-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-image-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* 'image-list props
+ (mapcar #'est-eval-value-as-image-object 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)))
+ (condition-case nil
+ (let (props)
+ (if separator
+ (setq props (list :separator separator)))
+ (if subtype
+ (setq props (list* :subtype subtype props)))
+ (list* 'list props
+ (mapcar
+ (lambda (cell)
+ (list 'list nil
+ "+ "
+ (list 'object (list :object (car cell))
+ (format "U+%04X" (car cell)))
+ " : "
+ (est-eval-value-as-object (cdr cell))))
+ (sort value
+ (lambda (a b)
+ (< (car a)(car b)))))))
+ (error (format "%s" value)))
+ (format "%s" value)))
+
+(defun est-eval-value-as-decomposition-list (value)
+ (if (and (listp value)
+ (listp (cdr value)))
+ (condition-case nil
+ (let (props)
+ (list* 'list props
+ (mapconcat #'char-to-string value "")
+ (list
+ " ("
+ (list* 'list '(:separator " + ")
+ (mapcar
+ (lambda (chr)
+ (list 'object (list :object chr)
+ (format "U+%04X" chr)))
+ value))
+ ")")))
+ (error (format "%s" value)))