;; -*- coding: utf-8-mcs-er -*- (defvar chise-wiki-view-url "../view.cgi") (defvar chise-wiki-edit-url "edit.cgi") (require 'cwiki-common) (defun www-edit-display-char-feature-default (char feature-name &optional value lang) (unless value (setq value (char-feature char feature-name))) (www-html-display-paragraph (format "[[%s|%s?feature=%s]] : %s [[[edit|edit.cgi?char=%s&feature=%s]]]" (www-format-feature-name feature-name lang) chise-wiki-view-url (www-uri-encode-feature-name feature-name) (www-format-value value feature-name nil 'without-tags) (char-to-string char) (www-uri-encode-feature-name feature-name) ))) (defun www-edit-display-char-feature-as-ucs (char feature-name &optional value) (unless value (setq value (char-feature char feature-name))) (www-html-display-paragraph (format "= [[U+%s|http://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=%s]] (%d)" (www-format-value-as-HEX value) (www-format-value-as-HEX value) value))) (defun www-edit-display-input-box (name value &optional format) (when (stringp format) (setq format (intern format))) (let (prefix) (if (or (eq format 'HEX) (eq format 'hex)) (if (integerp value) (setq prefix "0x"))) (princ (www-format-encode-string (format "%s \u2190 %s" name (or prefix "")))) (princ (format " " (www-format-encode-string (format "%s" name) 'without-tags) (www-format-apply-value format nil value nil nil 'without-tags) )))) (defun www-edit-display-char-desc (uri-char uri-feature-name &optional lang format) (when (stringp format) (setq format (intern format))) (let ((char (www-uri-decode-char uri-char)) (feature-name (www-uri-decode-feature-name uri-feature-name)) base-name metadata-name char-spec str) (when (characterp char) (princ (format " CHISE-wiki character: %s \n" (encode-coding-string (decode-uri-string uri-char 'utf-8-mcs-er) 'utf-8-mcs-er))) (princ "\n") (princ (format "

%s

\n" (www-format-encode-string (char-to-string char)))) (princ "
\n") (princ (encode-coding-string (format "

(char : )

" (decode-uri-string uri-char 'utf-8-mcs-er)) 'utf-8-mcs-er)) (setq char-spec (char-attribute-alist char)) (if (string-match "\\*" (setq str (symbol-name feature-name))) (setq base-name (intern (substring str 0 (match-beginning 0))) metadata-name (intern (substring str (match-end 0)))) (setq base-name feature-name)) (unless (assq base-name char-spec) (setq char-spec (cons (cons base-name nil) char-spec))) (dolist (cell (sort char-spec (lambda (a b) (char-attribute-name< (car a)(car b))))) (cond ((eq (car cell) feature-name) ;; (www-edit-display-input-box feature-name (cdr cell) format) (princ (format "

" feature-name)) (princ (encode-coding-string " \u2190 " 'utf-8-mcs-er)) (princ (format "%s

" (if (or (eq format 'HEX)(eq format 'hex)) "0x" "") format (www-format-value (cdr cell) feature-name format 'without-tags))) ) (t (princ "

") (princ (www-format-eval-list (or (char-feature-property (car cell) 'format) '((name) " : " (value))) char (car cell) lang uri-char)) (princ "

\n") (when (and (eq base-name (car cell)) metadata-name) (princ "")) )) ) (princ "
\n") ))) (defun www-edit-display-feature-desc (uri-feature-name uri-property-name &optional lang uri-char) (let ((feature-name (www-uri-decode-feature-name uri-feature-name)) (property-name (www-uri-decode-feature-name uri-property-name)) name@lang) (princ (encode-coding-string (format " CHISE-wiki feature: %s \n" feature-name) 'utf-8-mcs-er)) (princ "\n") (princ "
\n") (princ (encode-coding-string (format "

feature :

\n" feature-name) 'utf-8-mcs-er)) (princ (encode-coding-string (format "

(に限\u5B9Aしない) " (decode-uri-string uri-char 'utf-8-mcs-er)) 'utf-8-mcs-er)) (princ "

") (if (eq property-name 'name) (www-edit-display-input-box property-name (or (www-format-feature-name* feature-name) "")) (www-html-display-paragraph (format "name : %s [[[edit|edit.cgi?feature=%s&property=name]]]" (or (www-format-feature-name* feature-name) "") ;; (char-feature-property feature-name 'name) uri-feature-name ; (www-uri-encode-feature-name feature-name) ))) (when lang (setq name@lang (intern (format "name@%s" lang))) (if (eq property-name name@lang) (www-edit-display-input-box name@lang (or (char-feature-property feature-name name@lang) "")) (www-html-display-paragraph (format "%s : %s [[[edit|edit.cgi?feature=%s&property=%s]]]" name@lang (or (char-feature-property feature-name name@lang) "") uri-feature-name name@lang)))) (www-html-display-paragraph (format "type : %s" (or (www-feature-type feature-name) ;; (char-feature-property feature-name 'type) 'generic))) (www-html-display-paragraph (format "description : %s" (or (char-feature-property feature-name 'description) ""))) (when lang (www-html-display-paragraph (format "description@%s : %s" lang (or (char-feature-property feature-name (intern (format "description@%s" lang))) "")))) (princ "

\n") )) (defun www-batch-edit () (setq terminal-coding-system 'binary) (condition-case err (let* ((target (pop command-line-args-left)) (user (pop command-line-args-left)) (accept-language (pop command-line-args-left)) (lang (intern (car (split-string (car (split-string (car (split-string accept-language ",")) ";")) "-")))) ret) (princ "Content-Type: text/html; charset=UTF-8 ") (setq target (mapcar (lambda (cell) (if (string-match "=" cell) (cons (intern (decode-uri-string (substring cell 0 (match-beginning 0)) 'utf-8-mcs-er)) (substring cell (match-end 0))) (list (decode-uri-string cell 'utf-8-mcs-er)))) (split-string target "&"))) (setq ret (car target)) (cond ((eq (car ret) 'char) (www-edit-display-char-desc (cdr ret) ; (decode-uri-string (cdr ret) 'utf-8-mcs-er) (decode-uri-string (cdr (assq 'feature target)) 'utf-8-mcs-er) lang (decode-uri-string (cdr (assq 'format target)) 'utf-8-mcs-er)) ) ((eq (car ret) 'feature) (www-edit-display-feature-desc (decode-uri-string (cdr ret) 'utf-8-mcs-er) (decode-uri-string (cdr (assq 'property target)) 'utf-8-mcs-er) lang (cdr (assq 'char target)) ;; (decode-uri-string (cdr (assq 'char target)) ;; 'utf-8-mcs-er) ) )) (www-html-display-paragraph (format "%S" target)) (princ "\n
\n") (princ (format "user=%s\n" user)) (princ (format "local user=%s\n" (user-login-name))) (princ (format "lang=%S\n" lang)) (princ emacs-version) (princ " CHISE ") (princ xemacs-chise-version) (princ " ") ) (error nil (princ (format "%S" err))) ))