From b2416995f4c1c29a3caf192c01193ae012857431 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Mon, 24 Jul 2023 11:56:38 +1000 Subject: Make mediawiki the default engine --- wiki-engine.el | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'wiki-engine.el') diff --git a/wiki-engine.el b/wiki-engine.el index 8f666ef..dd72ce4 100644 --- a/wiki-engine.el +++ b/wiki-engine.el @@ -29,6 +29,10 @@ (require 'wiki-utils) (require 'wiki-markup) +;; TODO: make this a defcustom +(defvar wiki-default-engine 'mediawiki + "The default wiki engine, when one is not supplied.") + (defun wiki-engine-html-url (site title) "Return the url of the html webpage of TITLE on SITE." (format "%s%s" (plist-get (alist-get site wiki-sites) :base-url) @@ -74,10 +78,14 @@ And switch to the corresponding buffer." (_ (kill-buffer))) (wiki-save-string-and-switch to-insert title dir))) +(defun wiki-compute-engine (site-info) + "Return :engine of SITE-INFO, or the default engine." + (or (plist-get site-info :engine) wiki-default-engine)) + (defun wiki-engine-wiki-url (site title) "Construct the url to fetch wiki of TITLE from SITE." (let* ((site-info (alist-get site wiki-sites)) - (engine (plist-get site-info :engine)) + (engine (wiki-compute-engine site-info)) (base-url (plist-get site-info :base-url))) (pcase engine ('mediawiki (format "%s%s?action=raw" base-url title)) @@ -92,7 +100,7 @@ If the site has a `local' engine, \"fetch\" locally. Otherwise, if `wiki-fetch-prefer-local' is non-nil, try fetching locally, and if the title cannot be found locally, fetch remotely." (when (string-empty-p title) (setq title "Main Page")) - (let* ((engine (plist-get (alist-get site-id wiki-sites) :engine)) + (let* ((engine (wiki-compute-engine (alist-get site-id wiki-sites))) (found-local (when (or wiki-fetch-prefer-local (eq engine 'local)) (wiki-find-file title (wiki-locate-dir site-id) @@ -108,10 +116,16 @@ and if the title cannot be found locally, fetch remotely." (setq-local wiki-site site-id wiki-title title)))))) +(defun wiki-engine-mediawiki-api-wiki (base-url title) + (wiki-url-fetch-json + (format + "%sapi.php?action=query&format=json&titles=%s&prop=revisions&rvprop=content&rvslots=main" + base-url title))) + (defun wiki-engine-mediawiki-api-fetch (site-id title) "Fetch TITLE from site with SITE-ID using mediawiki api." (when (string-empty-p title) (setq title "Main Page")) - (let* ((engine (plist-get (alist-get site-id wiki-sites) :engine)) + (let* ((engine (wiki-compute-engine (alist-get site-id wiki-sites))) (base-url (plist-get (alist-get site-id wiki-sites) :base-url)) (found-local (when (or wiki-fetch-prefer-local (eq engine 'local)) @@ -132,10 +146,8 @@ and if the title cannot be found locally, fetch remotely." 'pages (alist-get 'query (wiki-url-fetch-json - (format - "%sapi.php?action=query&titles=%s&prop=revisions&rvprop=content&rvslots=main&format=json" - base-url - title) + (wiki-engine-mediawiki-api-wiki + base-url title) )))))) 0)))) title -- cgit v1.2.3