Add documentation strings
This commit is contained in:
parent
9d76a64745
commit
389aeac59f
1 changed files with 16 additions and 1 deletions
|
@ -4,14 +4,19 @@
|
||||||
(defvar pt-template-var-regexp "__\\([^_ \t\n]+\\)__"
|
(defvar pt-template-var-regexp "__\\([^_ \t\n]+\\)__"
|
||||||
"Regexp which identifies a variable in a template.")
|
"Regexp which identifies a variable in a template.")
|
||||||
|
|
||||||
(defvar pt-value-alist nil)
|
(defvar pt-value-alist nil
|
||||||
|
"A placeholder where replacement values will be kept. This is
|
||||||
|
let-bound when `pt-create-project-from-template' is called and
|
||||||
|
should not be edited directly.")
|
||||||
|
|
||||||
(defun pt-replace-all (from to str)
|
(defun pt-replace-all (from to str)
|
||||||
|
"Simply replace all occurrences of FROM with TO in STR."
|
||||||
(while (string-match from str)
|
(while (string-match from str)
|
||||||
(set 'str (replace-match to t t str)))
|
(set 'str (replace-match to t t str)))
|
||||||
str)
|
str)
|
||||||
|
|
||||||
(defun pt-get-replacement (key)
|
(defun pt-get-replacement (key)
|
||||||
|
"Find, or ask for and save, the replacement value for KEY."
|
||||||
(let ((replacement (assoc key pt-value-alist)))
|
(let ((replacement (assoc key pt-value-alist)))
|
||||||
(when (eq replacement nil)
|
(when (eq replacement nil)
|
||||||
(set 'replacement
|
(set 'replacement
|
||||||
|
@ -20,6 +25,8 @@
|
||||||
replacement))
|
replacement))
|
||||||
|
|
||||||
(defun pt-parse-file-name (filename)
|
(defun pt-parse-file-name (filename)
|
||||||
|
"Parse FILENAME and replace all __variables__ with values
|
||||||
|
provided by the user."
|
||||||
(while (string-match pt-template-var-regexp filename)
|
(while (string-match pt-template-var-regexp filename)
|
||||||
(let* ((tpl-var (match-string 1 filename))
|
(let* ((tpl-var (match-string 1 filename))
|
||||||
(replacement-value (pt-get-replacement tpl-var)))
|
(replacement-value (pt-get-replacement tpl-var)))
|
||||||
|
@ -32,6 +39,8 @@
|
||||||
(concat noext ext)))
|
(concat noext ext)))
|
||||||
|
|
||||||
(defun pt-parse-file (file)
|
(defun pt-parse-file (file)
|
||||||
|
"Parse FILE and replace all __variables__ with values provided by
|
||||||
|
the user."
|
||||||
(insert-file-contents file)
|
(insert-file-contents file)
|
||||||
|
|
||||||
(while (re-search-forward pt-template-var-regexp nil t)
|
(while (re-search-forward pt-template-var-regexp nil t)
|
||||||
|
@ -40,6 +49,8 @@
|
||||||
(replace-match (cdr replacement-value) t t))))
|
(replace-match (cdr replacement-value) t t))))
|
||||||
|
|
||||||
(defun pt-parse-and-copy-file (src dst)
|
(defun pt-parse-and-copy-file (src dst)
|
||||||
|
"Copy SRC to DST, but, if necessary, parse the file and filename
|
||||||
|
first."
|
||||||
(let* ((parsed-dst (pt-parse-file-name dst))
|
(let* ((parsed-dst (pt-parse-file-name dst))
|
||||||
(parsed-dst-dir (file-name-directory parsed-dst)))
|
(parsed-dst-dir (file-name-directory parsed-dst)))
|
||||||
(when (not (file-exists-p parsed-dst-dir))
|
(when (not (file-exists-p parsed-dst-dir))
|
||||||
|
@ -49,6 +60,8 @@
|
||||||
(pt-parse-file src))))
|
(pt-parse-file src))))
|
||||||
|
|
||||||
(defun pt-copy-directory (directory to)
|
(defun pt-copy-directory (directory to)
|
||||||
|
"Copy template directory DIRECTORY to the location indicated by
|
||||||
|
TO and parse both paths and files in the process."
|
||||||
(let ((files (directory-files directory t "[^.]\\{1,2\\}$" t)))
|
(let ((files (directory-files directory t "[^.]\\{1,2\\}$" t)))
|
||||||
(while files
|
(while files
|
||||||
(let* ((src-filename (car files))
|
(let* ((src-filename (car files))
|
||||||
|
@ -71,6 +84,8 @@
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun pt-create-project-from-template (template destination)
|
(defun pt-create-project-from-template (template destination)
|
||||||
|
"Take TEMPLATE, copy it to DESTINATION and replace any
|
||||||
|
occurrences of __variables__ with user-povided values."
|
||||||
(interactive "MTemplate: \nGDestination: ")
|
(interactive "MTemplate: \nGDestination: ")
|
||||||
(let ((pt-value-alist))
|
(let ((pt-value-alist))
|
||||||
(pt-copy-directory
|
(pt-copy-directory
|
||||||
|
|
Loading…
Reference in a new issue