diff options
Diffstat (limited to 'site/cleopatra/literate-programming.org')
-rw-r--r-- | site/cleopatra/literate-programming.org | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/site/cleopatra/literate-programming.org b/site/cleopatra/literate-programming.org deleted file mode 100644 index 63e0b02..0000000 --- a/site/cleopatra/literate-programming.org +++ /dev/null @@ -1,82 +0,0 @@ -#+TITLE: Literate Programming Projects - -#+SERIES: ../cleopatra.html -#+SERIES_PREV: ./org.html -#+SERIES_NEXT: ./theme.html - -Literate programming is an interesting exercice. It forces programmers -to think about how to present their code for other people to -understand it. It poses several significant challenges, in particular -in terms of code refactoring. If a given piece of code is too much -entangled with proses explaining it, rewriting it becomes cumbersome. - -That being said, literate programming is particularly well-suited for -blog posts, since at the very least it provides the tool to enforce -the code presented to readers is correct. - -#+BEGIN_EXPORT html -<nav id="generate-toc"></nav> -<div id="history">site/cleopatra/literate-programming.org</div> -#+END_EXPORT - -* Tangling - -We use Emacs and ~org-mode~ to tangle the literate programming -projects present in the ~posts/~ directory of this website. This is -done with the following emacs lisp script. - -#+BEGIN_SRC emacs-lisp :tangle export-lp.el -;; opinionated configuration provided by cleopatra -(cleopatra:configure) - -;; allow the execution of shell block code -(org-babel-do-load-languages - 'org-babel-load-languages - '((shell . t))) - -;; scan the posts/ directory and tangled it into lp/ -(setq org-publish-project-alist - '(("lp" - :base-directory "site/posts" - :publishing-directory "lp" - :recursive t - :publishing-function cleopatra:tangle-publish))) - -(org-publish-all) -#+END_SRC - -Tangling literate programming is done in the =prebuild= phase of -*~cleopatra~*. - -#+BEGIN_SRC makefile :tangle literate-programming.mk -literate-programming-prebuild : - @cleopatra echo "Tangling" "literate programming project" - @cleopatra exec -- cleopatra-run-elisp export-lp.el \ - >> build.log 2>&1 - -ARTIFACTS += lp/ site/posts/deps.svg -#+END_SRC - -* Building - -In the =build= phase, we actually try to compile the tangled projects. -As of now, there is only one literate program: [[../posts/CoqffiEcho.org][the Echo server -implemented in Coq]] which demonstrates how ~coqffi~ can be used to -implement realistic software projects. - -#+BEGIN_SRC makefile :tangle literate-programming.mk -COQFFI_ARCHIVE := site/files/coqffi-tutorial.tar.gz - -coqffi-tutorial-build : literate-programming-prebuild _opam/init - @cleopatra echo "Building" "coqffi tutorial" - @cd lp/coqffi-tutorial; dune build --display quiet - @cleopatra echo "Archiving" "coqffi tutorial" - @rm -f ${COQFFI_ARCHIVE} - @tar --exclude="_build" -C lp/ -czvf ${COQFFI_ARCHIVE} coqffi-tutorial \ - 2>&1 >> build.log - -site/posts/CoqffiEcho.html : coqffi-tutorial-build -literate-programming-build : coqffi-tutorial-build - -ARTIFACTS += ${COQFFI_ARCHIVE} -#+END_SRC |