aboutsummaryrefslogtreecommitdiff
path: root/wiki-engine.el
diff options
context:
space:
mode:
authorYuchen Pei <id@ypei.org>2023-07-23 17:01:24 +1000
committerYuchen Pei <id@ypei.org>2023-07-23 17:01:24 +1000
commitcd62bb147b15d052d52c5dc0f6277902efa7a61e (patch)
treedd7cad9e672c1b4605802e25ea5348cc8f9b6748 /wiki-engine.el
parentfcf126f8aab283078111f8dac0b589e51f30f0ce (diff)
Fixing copyright and flymake complaints.
Diffstat (limited to 'wiki-engine.el')
-rw-r--r--wiki-engine.el66
1 files changed, 43 insertions, 23 deletions
diff --git a/wiki-engine.el b/wiki-engine.el
index 74dbe15..c4de2e7 100644
--- a/wiki-engine.el
+++ b/wiki-engine.el
@@ -22,7 +22,7 @@
;;; Commentary:
;; client to wiki engines, wiki server software. Each engine defines
-;; how emacs interacts with the remote server, including how to
+;; how Emacs interacts with the remote server, including how to
;; construct a url to fetch from.
;;; Code:
@@ -40,70 +40,87 @@
(error "Nil wiki-site or wiki-title!"))
(wiki-engine-html-url wiki-site wiki-title))
-(defun wiki-engine-mediawiki-fetch (wiki-site title)
+
+(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))
+ (base-url (plist-get site-info :base-url)))
+ (pcase engine
+ ('mediawiki (format "%s%s?action=raw" base-url title))
+ ('moinmoin (format "%s%s?action=raw" base-url title))
+ ('oddmuse (format "%s?action=download;id=%s" base-url title))
+ (_ (error "Unknown engine: %s" engine)))))
+
+(defun wiki-engine-mediawiki-fetch (site-id title)
"Fetch a mediawiki entry describing TITLE.
-The site handle is passed as a symbol WIKI-SITE."
- (let ((wiki-site-info (alist-get wiki-site wiki-sites)))
+The site handle is passed as a symbol SITE-ID."
+ (let ((wiki-site-info (alist-get site-id wiki-sites)))
(cl-assert (eq (plist-get wiki-site-info :engine) 'mediawiki))
(when (string-empty-p title) (setq title "Main Page"))
(unless (and wiki-fetch-prefer-local
(wiki-find-file
title
- (wiki-locate-dir wiki-site)))
+ (wiki-locate-dir site-id)))
(wiki-fetch-url
(format "%s%s?action=raw"
(plist-get wiki-site-info :base-url)
title)
- (wiki-locate-dir wiki-site)
+ (wiki-locate-dir site-id)
(lambda ()
(wiki-mode)
- (setq-local wiki-site wiki-site
+ (setq-local wiki-site site-id
wiki-title title)
)
))))
-(defun wiki-engine-oddmuse-fetch (wiki-site title)
- (let ((wiki-site-info (alist-get wiki-site wiki-sites)))
+(defun wiki-engine-oddmuse-fetch (site-id title)
+ "Fetch an oddmuse entry describing TITLE.
+
+The site handle is passed as a symbol SITE-ID."
+ (let ((wiki-site-info (alist-get site-id wiki-sites)))
(cl-assert (eq (plist-get wiki-site-info :engine) 'oddmuse))
(unless (and wiki-fetch-prefer-local
(wiki-find-file
title
- (wiki-locate-dir wiki-site)))
+ (wiki-locate-dir site-id)))
(wiki-fetch-url
(format "%s?action=download;id=%s"
(plist-get wiki-site-info :base-url)
title)
- (wiki-locate-dir wiki-site)
+ (wiki-locate-dir site-id)
(lambda ()
(wiki-mode)
- (setq-local wiki-site wiki-site
+ (setq-local wiki-site site-id
wiki-title title)
)
title))))
-(defun wiki-engine-moinmoin-fetch (wiki-site title)
- (let ((wiki-site-info (alist-get wiki-site wiki-sites)))
+(defun wiki-engine-moinmoin-fetch (site-id title)
+ "Fetch a moinmoin entry describing TITLE.
+
+The site handle is passed as a symbol SITE-ID."
+ (let ((wiki-site-info (alist-get site-id wiki-sites)))
(cl-assert (eq (plist-get wiki-site-info :engine) 'moinmoin))
(unless (and wiki-fetch-prefer-local
(wiki-find-file
title
- (wiki-locate-dir wiki-site)))
+ (wiki-locate-dir site-id)))
(wiki-fetch-url
(format "%s%s?action=raw"
(plist-get wiki-site-info :base-url)
title)
- (wiki-locate-dir wiki-site)
+ (wiki-locate-dir site-id)
(lambda ()
(wiki-mode)
- (setq-local wiki-site wiki-site
- wiki-title title)
- )
+ (setq-local wiki-site site-id
+ wiki-title title))
title))))
-(defun wiki-locate-dir (wiki-site)
- "Locate the directory for a WIKI-SITE."
- (expand-file-name (format "%s" wiki-site) wiki-local-dir))
+(defun wiki-locate-dir (site-id)
+ "Locate the directory for a SITE-ID."
+ (expand-file-name (format "%s" site-id) wiki-local-dir))
(defun wiki-find-file (title &optional dir create-if-not-exists
extension)
@@ -111,7 +128,8 @@ The site handle is passed as a symbol WIKI-SITE."
Returns the file-name if success, and nil otherwise. If
CREATE-IF-NOT-EXISTS is non-nil, creates the file is not found.
-DIR defaults to `default-directory'."
+DIR defaults to `default-directory'.
+EXTENSION is the file extension."
(interactive (list (read-file-name "Find wiki file: ")))
(unless dir (setq dir default-directory))
(let ((file-name (expand-file-name
@@ -127,10 +145,12 @@ DIR defaults to `default-directory'."
(defalias #'wiki-local-fetch #'wiki-find-file)
(defun wiki-engine-fetcher (wiki-site-info)
+ "Return the fetcher for the engine of WIKI-SITE-INFO."
(intern (format "wiki-engine-%s-fetch"
(plist-get wiki-site-info :engine))))
(defmacro defun-wiki-fetchers ()
+ "Defines all wiki fetcher functions."
(cons 'progn
(mapcar
(lambda (pair)