From 53ddb25bf760598f4f00e9f4c71598f808eef7b8 Mon Sep 17 00:00:00 2001 From: MORIOKA Tomohiko Date: Thu, 5 May 2016 00:50:24 +0900 Subject: [PATCH] Require `char-db-json'. (www-display-object-desc): Add [JSON] button. (www-batch-view-smart): Support "/data.json" API for character genre. --- cwiki-view.el | 80 ++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 57 insertions(+), 23 deletions(-) diff --git a/cwiki-view.el b/cwiki-view.el index 2164d60..3c4e0aa 100644 --- a/cwiki-view.el +++ b/cwiki-view.el @@ -1,5 +1,6 @@ ;; -*- coding: utf-8-mcs-er -*- (require 'cwiki-format) +(require 'char-db-json) (defvar chise-wiki-view-url "view.cgi") (defvar chise-wiki-edit-url "edit.cgi") @@ -144,10 +145,17 @@ li { margin: 0 0 0 2em; } (format " - +%s
\n" - genre rdf-uri-object)) + genre rdf-uri-object + (if (eq genre 'character) + (format " + + +\n" + genre rdf-uri-object) + ""))) (when (setq parents (www-get-feature-value object '<-denotational)) (princ (format "

%s %s

\n
\n" (www-format-value-as-char-list parents) @@ -602,15 +610,12 @@ size=\"30\" maxlength=\"30\" value=\"%s\" />" (car (split-string accept-language ",")) ";")) "-")))) - ret genre feature) - (princ "Content-Type: text/html; charset=UTF-8 - - - -") + ret genre feature json obj) (cond ((stringp target) + (when (string-match "/data\\.json$" target) + (setq json t + target (substring target 0 (match-beginning 0)))) (when (string-match "^char/\\(&[^&;]+;\\)" target) (setq ret (match-end 0)) (setq target @@ -640,13 +645,40 @@ size=\"30\" maxlength=\"30\" value=\"%s\" />" ) (split-string target "&"))) (setq ret (car target)) + (if json + (princ "Content-Type: application/json; charset=UTF-8 + +") + (princ "Content-Type: text/html; charset=UTF-8 + + + +") + ) ;; (princ (format "

%S, %S, %S

" ;; (car ret)(nth 1 ret)(nth 2 ret))) - (cond ((eq (car ret) 'char) - (www-display-object-desc - 'character (nth 1 ret) (nth 2 ret) - lang nil - (eq mode 'simple)) + ;; (princ (format "// %S %S\n" ret json)) + (cond ((or (eq (car ret) 'char) + (eq (car ret) 'character)) + (if (and json + (setq obj (www-uri-decode-object + (car ret)(nth 1 ret))) + (characterp obj)) + (with-temp-buffer + ;; (princ (encode-coding-string + ;; (format "// %S\n" obj) + ;; char-db-file-coding-system)) + (char-db-json-char-data-with-variant obj) + (encode-coding-region + (point-min)(point-max) + char-db-file-coding-system) + (princ (buffer-string)) + ) + (www-display-object-desc + 'character (nth 1 ret) (nth 2 ret) + lang nil + (eq mode 'simple))) ) ((eq (car ret) 'feature) (www-display-feature-desc @@ -663,17 +695,19 @@ size=\"30\" maxlength=\"30\" value=\"%s\" />" (eq mode 'simple)) )) )) - (princ "\n
\n") - (princ (format "mode=%S\n" mode)) - (princ (format "user=%s\n" user)) - ;; (princ (format "local user=%s\n" (user-login-name))) - (princ (format "lang=%S\n" lang)) - (princ (encode-coding-string (emacs-version) 'utf-8-jp-er)) - ;; (princ " CHISE ") - ;; (princ xemacs-chise-version) - (princ " + (unless json + (princ "\n
\n") + (princ (format "mode=%S\n" mode)) + (princ (format "user=%s\n" user)) + ;; (princ (format "local user=%s\n" (user-login-name))) + (princ (format "lang=%S\n" lang)) + (princ (encode-coding-string (emacs-version) 'utf-8-jp-er)) + ;; (princ " CHISE ") + ;; (princ xemacs-chise-version) + (princ " ") + ) ) (error nil (princ (format "%S" err))) -- 1.7.10.4