{"id":20264322,"url":"https://github.com/thi-ng/babel","last_synced_at":"2025-04-11T02:10:33.297Z","repository":{"id":14409501,"uuid":"17120302","full_name":"thi-ng/babel","owner":"thi-ng","description":"A Leiningen project template for literate Clojure projects w/ org-mode","archived":false,"fork":false,"pushed_at":"2017-09-26T10:51:11.000Z","size":40,"stargazers_count":75,"open_issues_count":2,"forks_count":12,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-24T23:35:21.286Z","etag":null,"topics":["clojure","clojurescript","emacs","literate-programming","org-mode","template"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thi-ng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-02-24T00:02:27.000Z","updated_at":"2024-05-30T19:51:11.000Z","dependencies_parsed_at":"2022-08-27T08:21:36.418Z","dependency_job_id":null,"html_url":"https://github.com/thi-ng/babel","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thi-ng%2Fbabel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thi-ng%2Fbabel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thi-ng%2Fbabel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thi-ng%2Fbabel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thi-ng","download_url":"https://codeload.github.com/thi-ng/babel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248328160,"owners_count":21085261,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clojure","clojurescript","emacs","literate-programming","org-mode","template"],"created_at":"2024-11-14T11:39:41.865Z","updated_at":"2025-04-11T02:10:33.280Z","avatar_url":"https://github.com/thi-ng.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# thing-babel\n\nA Leiningen project template for literate Clojure \u0026 Clojurescript\nprojects w/ Emacs \u0026 [org-mode](http://orgmode.org).\n\nThis template does *not* create a working Lein project directory per\nse, but constitutes more of a meta Lein template consisting of a\nseveral `.org` files (most importantly\n[readme.org](./src/leiningen/new/thing_babel/readme.org)) which\ncontains both a structured template for a library README and a\nparametric description of the Lein project to be generated and\nregenerated in the future. These `.org` files must be tangled with the\nsupplied `tangle.sh` script and will generate a working lein project\ndirectory from those.\n\n## 0.3.2.2 - 2015-08-30\n\n* Bugfix readme tpl filename case issue (#2)\n\n## 0.3.2 - 2015-08-29\n\n* Bugfix generated file paths (see #2, #3)\n\n## 0.3.1 - 2015-08-28\n\n* Update dependencies\n\n## 0.3.0 - 2015-08-14\n\n* Update dependencies to latest stable versions\n* Remove CLJX, add reader conditionals\n* Restructure project layout (move `src/index.org` =\u003e `readme.org` in main dir)\n* Restructure `readme.org` internal structure\n* Add TOC headings (requires [org-toc package](https://github.com/snosov1/org-toc)\n* Add `tangle-all.sh` bash script\n\n## 0.2.3\n\n* Update included dependencies (see below)\n* Add support for MIT license\n* Change internal project ORG-links to be GitHub friendly\n* Minor cleanups of template files\n\n## 0.2.0\n\n* Generated `.org` files are now placed in dedicated `src` \u0026 `test`\n  sub folders to provide a cleaner project structure.\n* A `setup.org` file is created to define common \u0026 shared org-mode\n  configuration for all project files.\n\nNew in version 0.2.0 is also the presence of\n[libraryofbabel.org](./src/leiningen/new/thing_babel/libraryofbabel.org),\norg-mode's mechanism to support re-usable \u0026 parametric code templates.\nThe generated `.org` file for the main namespace demonstrates the use\nof such code templates (albeit in a very construed way). A much better\nand more realistic use for these templates is to provide skeleton\nimplementations when working with Clojure protocols. See\n[thi.ng/geom](http://thi.ng/geom) for a concrete example.\n\n## Objective\n\nThe template is aimed at an x-platform CLJX project structure and\nconfigures a Lein project with the currently latest versions of:\n\n* Clojure 1.7.0\n* ClojureScript 1.7.107\n* cljsbuild 1.1.0\n* clojurescript.test 0.3.3\n* criterium 0.4.3\n\n## Usage\n\nThe project name given can be fully qualified (as in the example\nbelow), however the created directory will only take the last name part\nminus the leading group ID (if any). The fully qualified name is used\nto define namespaces \u0026 target paths within the generated .org files\nand will also be inserted into the resulting `project.clj` file.\n\n```bash\nlein new thing-babel org.foo/bar \\\n  author \"my name\" \\\n  email \"a@b.com\" \\\n  url \"http://project.com\" \\\n  author-url \"http://home.com\" \\\n  license ASL \\\n  target generated \\\n  desc \"Another great project\"\n\nGenerating fresh literate programming project: org.foo/bar\ngenerated project dir   : bar\nartefact group ID       : org.foo\nproject url             : http://project.com\nproject author          : my name\nauthor url              : http://home.com\nauthor email            : a@b.com\nlicense                 : Apache Software License 2.0\ndescription             : Another great project\npath for gen sources    : generated/\nproject root namespace  : org.foo.bar\n\n# switch into newly created project folder\ncd bar\n\n# (re)generate actual lein project \u0026 sources\n./tangle-all.sh \n\n# switch into generated project (value of `target` key above)\ncd generated\n\n# trigger cleaning, cljx processing \u0026 testing\nlein test org.foo.bar.test.core\n\nFAIL in (epic-fail) (core.clj:12)\nFIXME\nexpected: (= 3 (+ 1 1))\n  actual: (not (= 3 2))\n\nRan 1 tests containing 1 assertions.\n1 failures, 0 errors.\nTests failed.\n```\n\nSuccess!\n\nApart from the project name all other options are optional (indeed).\nIf omitted, some values will assume the following defaults:\n\n* **author** - local user name (via `(System/getProperty\n  \"user.name\")`)\n* **desc** - `\"FIXME: ...\"` (project description)\n* **license** - `EPL` (lein's default choice, currently only other\n  choices are `ASL` or `MIT`)\n* **target** - `babel` (source folder prefix for generated/tangled\n  source blocks from .org files)\n* **url** - `\"http://github.com\"` (project url, must be quoted)\n\n## Misc\n\nI recommend using the Emacs\n[Leuven theme](https://github.com/fniessen/emacs-leuven-theme) for a\ngreat org-mode experience...\n\nIn order to automatically update the TOC of each org file, I too\nrecommend installing the\n[toc-org package](https://github.com/snosov1/toc-org) Emacs package.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthi-ng%2Fbabel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthi-ng%2Fbabel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthi-ng%2Fbabel/lists"}