(require 'cwiki-view)
+(defun www-parse-string-default (string)
+ (setq string (decode-uri-string string 'utf-8-mcs-er))
+ (condition-case nil
+ (let ((ret
+ (mapcar #'read (split-string string " "))))
+ (if (cdr ret)
+ ret
+ (car ret)))
+ (error nil)))
+
(defun www-parse-string-as-space-separated-char-list (string)
(let (dest char)
- (dolist (unit (split-string string " "))
+ (dolist (unit (split-string string "\\+"))
(if (setq char (www-uri-decode-char unit))
(setq dest (cons char dest))))
(nreverse dest)))
+(defun www-parse-string-as-space-separated-ids (string)
+ (cdar
+ (ids-parse-string
+ (let (char)
+ (mapconcat
+ (lambda (unit)
+ (if (setq char (www-uri-decode-char unit))
+ (char-to-string char)
+ unit))
+ (split-string string "\\+")
+ "")))))
+
+(defun www-parse-string-as-ku-ten (string)
+ (if (string-match "^\\([0-9][0-9]?\\)-\\([0-9][0-9]?\\)" string)
+ (let ((ku (string-to-int (match-string 1 string)))
+ (ten (string-to-int (match-string 2 string))))
+ (if (and (<= 1 ku)(<= ku 94)
+ (<= 1 ten)(<= ten 94))
+ (+ (lsh (+ ku 32) 8)
+ ten 32)))))
+
(defun www-feature-parse-string (feature-name string &optional format)
(unless format
(setq format (www-feature-value-format feature-name)))
(cond ((eq format 'space-separated-char-list)
(www-parse-string-as-space-separated-char-list string))
+ ((eq format 'space-separated-ids)
+ (www-parse-string-as-space-separated-ids string))
+ ((eq format 'ku-ten)
+ (www-parse-string-as-ku-ten string))
((eq format 'decimal)
(string-to-number string))
((or (eq format 'HEX)(eq format 'hex))
(string-to-number string 16))
+ ((eq format 'string)
+ (decode-uri-string string 'utf-8-mcs-er)
+ )
((eq format 'S-exp)
(if (= (length string) 0)
nil
- (read string)))
- (t string)))
+ (read (decode-uri-string string 'utf-8-mcs-er)))
+ )
+ (t
+ (www-parse-string-default string)
+ )))
(defun www-set-display-char-desc (uri-char feature value format &optional lang)
(when (stringp feature)
(format "<head>
<title>CHISE-wiki character: %s</title>
</head>\n"
- uri-char)
+ (decode-uri-string uri-char 'utf-8-mcs-er))
'utf-8-mcs-er))
(princ "<body>\n")
(www-html-display-paragraph
(defun www-set-display-feature-desc (feature-name property-name value
&optional lang uri-char)
(www-html-display-paragraph
- (format "set: feature: %S, property-name: %S, value: %S, lang: %S\n"
- feature-name property-name value lang))
+ (format
+ "set: feature: %S, property-name: %S, value: %S, lang: %S, char: %S\n"
+ feature-name property-name value lang uri-char))
(put-char-feature-property feature-name property-name value)
(let ((name@lang (intern (format "name@%s" lang)))
(uri-feature-name (www-uri-encode-feature-name feature-name)))
><input type=\"submit\" value=\"edit\" /></a></p>
"
name@lang
- (or (www-format-encode-string
- (char-feature-property feature-name name@lang)) "")
+ (www-format-encode-string
+ (or (char-feature-property feature-name name@lang) ""))
chise-wiki-edit-url
uri-feature-name
name@lang)))
(cond ((eq (car ret) 'char)
(setq prop (nth 2 target))
(www-set-display-char-desc
- (decode-uri-string (cdr ret) 'utf-8-mcs-er)
- (cdr (assq 'feature-name target))
- (decode-uri-string (cdr prop) 'utf-8-mcs-er)
+ (cdr ret) ; (decode-uri-string (cdr ret) 'utf-8-mcs-er)
+ (intern (decode-uri-string
+ (cdr (assq 'feature-name target))
+ 'utf-8-mcs-er))
+ (cdr prop) ; (decode-uri-string (cdr prop) 'utf-8-mcs-er)
(car prop)
lang)
)
(car prop)
(decode-uri-string (cdr prop) 'utf-8-mcs-er)
lang
- (decode-uri-string (cdr (assq 'char target))))
+ (cdr (assq 'char target))
+ ;; (decode-uri-string (cdr (assq 'char target)))
+ )
))
(www-html-display-paragraph
(format "%S" target))