{"id":17092789,"url":"https://github.com/jstasiak/scripter","last_synced_at":"2026-05-02T14:47:15.842Z","repository":{"id":57666416,"uuid":"198487485","full_name":"jstasiak/scripter","owner":"jstasiak","description":"A screenplay compiler.","archived":false,"fork":false,"pushed_at":"2020-03-05T21:15:43.000Z","size":112,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-01T05:33:25.267Z","etag":null,"topics":["latex","screenplay","script","transpiler"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jstasiak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-23T18:30:42.000Z","updated_at":"2020-03-05T21:15:45.000Z","dependencies_parsed_at":"2022-09-26T20:31:41.824Z","dependency_job_id":null,"html_url":"https://github.com/jstasiak/scripter","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jstasiak%2Fscripter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jstasiak%2Fscripter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jstasiak%2Fscripter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jstasiak%2Fscripter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jstasiak","download_url":"https://codeload.github.com/jstasiak/scripter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245136345,"owners_count":20566586,"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":["latex","screenplay","script","transpiler"],"created_at":"2024-10-14T14:02:50.218Z","updated_at":"2026-05-02T14:47:10.806Z","avatar_url":"https://github.com/jstasiak.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"**This is an abandoned project. Use [Fountain](https://fountain.io/) instead.**\n\n# scripter\n[![Build Status](https://travis-ci.org/jstasiak/scripter.svg?branch=master)](https://travis-ci.org/jstasiak/scripter)\n[![Coverage Status](https://coveralls.io/repos/github/jstasiak/scripter/badge.svg?branch=master)](https://coveralls.io/github/jstasiak/scripter?branch=master)\n\nA screenplay compiler.\n\n## What does this do?\n\nThere's a nice [screenplay LaTeX package](https://www.ctan.org/pkg/screenplay)\nbut using it is not particularly convenient, as the code gets quite verbose.\n\nInstead let's use an ad-hoc minimal script language and transpile to TeX.\n\n## The rules of the language\n\n* Whitespace at beginning and end of lines are ignored\n* Lines with only whitespace in them are ignored\n* The first line is the title\n* The second line is the author(s)\n* Empty lines are ignored\n* Lines beginning with `INT. ` or `EXT. ` are treated as sluglines, what\n  comes after `INT. ` and `EXT. ` is free-form\n* Lines beginning with whitespace are assumed to contain dialogue. That requires\n  them to contain at least one `:` character. The part before the first colon is\n  is the character that's speaking, the second is what's being said. Parts in\n  parentheses are treated as parentheticals. Colon characters other than the\n  first are treated as plain text.\n* Other lines are treated as description\n\n## Example\n\nInput:\n\n```\nThe Alienant, version 1\nFirstname Lastname\n\nINT. SPACE STATION\n\nDark corridor. Something lurks in the shadows.\n\nEXT. MILITARY BASE -- DAY\n\nCOLONEL SMITH smokes a cigarette. There are items on his desk: a bottle of whisky, a gun and a doll. SMITH looks up as CAPTAIN PARKER approaches.\n\nCAPTAIN PARKER doesn't look too well.\n\n\tSMITH: So, it's begun.\n\tPARKER: Yes. (inhales) Yes, it has.\n\tSMITH: I was afraid it'd come to this. Look: how about we –\n\tPARKER: No.\n\tSMITH: But \u0026 % $ # _ { } ~ ^ \\\n\tPARKER: Hold on, what?\n```\n\nTeX output:\n\n```tex\n\\documentclass{screenplay}\n\\usepackage[T1]{fontenc}\n\\usepackage[polish]{babel}\n\\usepackage[utf8]{inputenc}\n\\title{The Alienant, version 1}\n\\author{Firstname Lastname}\n\\begin{document}\n\\coverpage\n\\fadein\n\\intslug{SPACE STATION}\n\nDark corridor. Something lurks in the shadows.\n\n\\extslug{MILITARY BASE -- DAY}\n\nCOLONEL SMITH smokes a cigarette. There are items on his desk: a bottle of whisky, a gun and a doll. SMITH looks up as CAPTAIN PARKER approaches.\n\nCAPTAIN PARKER doesn't look too well.\n\n\\begin{dialogue}{SMITH}So, it's begun.\\end{dialogue}\n\n\\begin{dialogue}{PARKER}Yes. \\paren{inhales} Yes, it has.\\end{dialogue}\n\n\\begin{dialogue}{SMITH}I was afraid it'd come to this. Look: how about we –\\end{dialogue}\n\n\\begin{dialogue}{PARKER}No.\\end{dialogue}\n\n\\begin{dialogue}{SMITH}But \\\u0026 \\% \\$ \\# \\_ \\{ \\} \\textasciitilde{} \\textasciicircum{} \\textbackslash{}\\end{dialogue}\n\n\\begin{dialogue}{PARKER}Hold on, what?\\end{dialogue}\n\n\\fadeout\n\\theend\n\\end{document}\n```\n\n[Output PDF](test_script.pdf)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjstasiak%2Fscripter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjstasiak%2Fscripter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjstasiak%2Fscripter/lists"}