;; -*- coding: utf-8-mcs-er -*- (defvar chise-wiki-view-url "../view.cgi") (defvar chise-wiki-edit-url "edit.cgi") (require 'cwiki-common) (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 "\\+")) (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 (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) (setq feature (intern feature))) (when (stringp format) (setq format (intern format))) (let ((char (www-uri-decode-char uri-char)) latest-feature feature-name logical-feature displayed-features) (when (characterp char) (princ (encode-coding-string (format "
") (princ (www-format-eval-list (or (char-feature-property (car cell) 'format) '((name) " : " (value))) char (car cell) lang uri-char)) (princ (format " " chise-wiki-edit-url (www-format-encode-string uri-char) (www-format-encode-string (www-uri-encode-feature-name (intern (format "%s*note" (car cell))))))) (princ "
\n") )) (princ (format "" chise-wiki-add-url (www-format-encode-string uri-char))) ))) (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, 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))) (princ (encode-coding-string (format "