{"id":16577915,"url":"https://github.com/compufox/textery","last_synced_at":"2026-03-06T22:31:06.227Z","repository":{"id":71050490,"uuid":"236145623","full_name":"compufox/textery","owner":"compufox","description":"lisp tracery implementation","archived":false,"fork":false,"pushed_at":"2020-12-03T04:06:11.000Z","size":28,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-24T00:39:29.519Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Common Lisp","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/compufox.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-25T08:43:57.000Z","updated_at":"2023-07-24T02:36:50.000Z","dependencies_parsed_at":"2023-06-07T16:45:09.905Z","dependency_job_id":null,"html_url":"https://github.com/compufox/textery","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/compufox/textery","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/compufox%2Ftextery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/compufox%2Ftextery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/compufox%2Ftextery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/compufox%2Ftextery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/compufox","download_url":"https://codeload.github.com/compufox/textery/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/compufox%2Ftextery/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30200971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-10-11T22:12:36.405Z","updated_at":"2026-03-06T22:31:06.207Z","avatar_url":"https://github.com/compufox.png","language":"Common Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# textery\n### _ava fox_\n\nimplementation of tracery in lisp\n\n## Installation\n\n```shell\n$ git clone https://github.com/compufox/textery ~/common-lisp/textery\n* (ql:quickload :textery)\n```\n\n## Usage\n\nLoad a rule file (a normal tracery JSON file) using `(load-grammar \"rule.file\")`\n\nIf this is the first rule file loaded, it is set as the current grammar. \n\nTo expand text, use `(expand \"#expand# this!\")`\n\nIf you have multiple grammars loaded use the `(with-grammar)` macro to select which grammar to use:\n\n```lisp\n(with-grammar \"grammar2\"\n  (expand \"#test#\"))\n```\n\nYou can pass arguments to the text to be expanded by using periods: `(expand-text \"#test.string-upcase#\")`, these can be chained together by doing `(expand-text \"#test.string-upcase.reverse#\")`\n\nArguments are any lisp function that can handle at least one string parameter. You can even provide your own!\n\nIf you want to use functions that require more than one parameter do as follows:\n\n```lisp\n(defun example-argument (text param param2)\n  (concatenate 'string\n\t\t\t   text\n\t\t\t   param\n\t\t\t   param2))\n\n(expand \"#test.example-argument(5,test)#\")\n```\n\n## API\n\n`(load-grammar file)`\n\nloads grammar from FILE\n\nstores the contents internally under the FILE's name minus the extension\n\nif this is the first grammar thats loaded, set our current grammar to it\n\n---\n\n`(load-grammar-directory dir)`\n\nloads all grammars from directory DIR\n\n---\n\n`(create-grammar name grammar)`\n\nmanually creates a grammar using NAME and GRAMMAR\n\nGRAMMAR is a tracery-formatted json string\n\n---\n\n`(with-grammar grammar \u0026body body)`\n\nexecutes BODY with GRAMMAR set to be the current grammar\n\nGRAMMAR is the filename (minus extension) of the grammar file previous loaded \n\n---\n\n`(list-grammars)`\n\nreturns a list of all loaded grammars\n\n---\n\n`(expand text)`\n\nexpands TEXT using the current grammar\n\n---\n\n\n## License\n\nBSD 3-Clause\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcompufox%2Ftextery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcompufox%2Ftextery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcompufox%2Ftextery/lists"}