diff --git a/src/lib/project.el b/src/lib/project.el index ed1ef60..e38dd08 100644 --- a/src/lib/project.el +++ b/src/lib/project.el @@ -59,21 +59,48 @@ ) + +(defun project/render (data) + "Render the data with known context variables and return rendered daa" + (setq data (replace-regexp-in-string "::project::" project-name data)) + (setq data (replace-regexp-in-string "::desc::" project-desc data)) + (setq data (replace-regexp-in-string "::author::" project-author data)) + (setq data (replace-regexp-in-string "::email::" project-author-email data)) + (setq data (replace-regexp-in-string "::year::" (format-time-string "%Y") data)) +) + + (defun insert-license () "Return the prepared license string." (if project-license (let (license-data license-file) (setq license-file (concat TEMPLATESPATH (concat "licenses/" (concat project-license ".tmpl")))) + ;; loading template file (setq license-data (io/read license-file)) - (setq license-data (replace-regexp-in-string "::project::" project-name license-data)) - (setq license-data (replace-regexp-in-string "::desc::" project-desc license-data)) - (setq license-data (replace-regexp-in-string "::author::" project-author license-data)) - (setq license-data (replace-regexp-in-string "::email::" project-author-email license-data)) - (setq license-data (replace-regexp-in-string "::year::" (format-time-string "%Y") license-data)) + ;; Rendering template +;; (setq license-data (replace-regexp-in-string "::project::" project-name license-data)) +;; (setq license-data (replace-regexp-in-string "::desc::" project-desc license-data)) +;; (setq license-data (replace-regexp-in-string "::author::" project-author license-data)) +;; (setq license-data (replace-regexp-in-string "::email::" project-author-email license-data)) +;; (setq license-data (replace-regexp-in-string "::year::" (format-time-string "%Y") license-data)) + (setq license-data (project/render license-data)) (identity license-data) ) (let (license-data) (setq license-data "Put you GOD DAMN, FUCKing license here") ) ) -) \ No newline at end of file +) + + +(defun project/render-template (template) + "Render the template and return the rendered template string" + (let (data license-data) + (setq data (io/read template)) + (setq data (project/render data)) + ;; add the license header + (setq license-data (insert-license)) + (setq data (replace-regexp-in-string "::license::" license-data data)) + ) +) + \ No newline at end of file diff --git a/src/plugins/cproject.el b/src/plugins/cproject.el index 78e6680..1a36201 100644 --- a/src/plugins/cproject.el +++ b/src/plugins/cproject.el @@ -48,12 +48,15 @@ (defun generic-c () "Create a generic type C project" (interactive) (c-new-project) - (let (current-template-file license-data filelist) - (setq current-template-file (concat TEMPLATESPATH "c/generic_c/main.c.tmpl")) - (setq filelist (file-expand-wildcards load-elc)) - ;; add the license header - (setq license-data (insert-license)) - + (let (template-file-regexp license-data filelist cur template-data) + (setq template-file-regexp (concat TEMPLATESPATH "c/generic_c/*.tmpl")) + (setq filelist (file-expand-wildcards template-file-regexp)) + (while filelist + (setq cur (pop filelist)) + (setq template-data (project/render-template cur)) + (setq template-data (replace-regexp-in-string "::unixname::" unix-project-name template-data)) + (project/write-dest-file cur template-data) + ) ) ) (init-menus) \ No newline at end of file diff --git a/src/templates/c/generic_c/main.c.tmpl b/src/templates/c/generic_c/main.c.tmpl new file mode 100644 index 0000000..98d54dd --- /dev/null +++ b/src/templates/c/generic_c/main.c.tmpl @@ -0,0 +1,12 @@ +/* +::license:: +*/ + +#include +#include "::unixname::.h" + +int main (int argc, char *argv[]) +{ + printf("Hello SHIT World\n"); + return 0; +}