Automattic / Automattic/harper
Support for Fountain Screenplay Format (*.fountain)
- Dominant language
- Rust
- Stars
- 15.4k
- Forks
- 627
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 106
Description
**What problem does this solve?**
Developer and Screenwriter often work in [Fountain](https://fountain.io/), a plain text markup language for screenwriting. Its a flavour of John Gruber's [Markdown](https://daringfireball.net/projects/markdown/) with simple markup syntax for writing, editing screenplays in plain, human readable text.
Harper don't have *.fountain support, when change file format from *.fountain to *.md, Harper flags character names, scene heading and slug lines as grammatical errors or stylistic issues. these flags cannot be disable or ignored.
**Proposed Solution**
Implement a new parser mode for Fountain files (*.fountain).
That could identity elements like Character, Name, Transition and Scene Headings and skip grammar check on them. Grammar and style rules primarily be on Dialogue and Action blocks.
**Examples**
In a Fountain file, Harper should distinguish between prose and syntax:
```
INT. CAFE - DAY (Ignore: Scene Heading)
TAAHEER (Ignore: Character Name)
Have you saw the news today? (Flag: "Have you saw" to "Have you seen")
Taaheer walks to the counter, He is very tired. (Check action prose for style or redundancy: "very tired' to "exhasuted")
```
**Component**
- [ X] Core engine: To add the logic for parsing Fountain syntax.
- [ ] Plugin/Extension
- [ ] Other: harper-ls (to ensure the Language Server recognizes .fountain file associations).
**Additional Context**
There are many Fountain parser system which we can use or derive and make Rust based Fountain parsers to identity "Action" and "Dialogue" efficiently.
Here's the list of parser I found.
- [fountain-js](https://github.com/mattdaly/Fountain.js/) is a JavaScript based parser for the screenplay format [Fountain](http://fountain.io/).
- [F# Fountain](https://github.com/bryancostanich/FountainSharp) An F# based for use via .NET/Xamarin projects
- [JOUVENCE](https://github.com/ludovicchabant/Jouvence)Python package for parsing and rendering Fountain documents
- [afterwriting-labs](https://github.com/ifrost/afterwriting-labs)
Contributor guide
Research direction
Start by inspecting the core engine's existing parser modes and how harper-ls handles file associations. Define how Fountain scene headings, character names, transitions, dialogue, and action are distinguished; done means syntax is excluded from grammar checks while dialogue and action remain checked.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- devtools
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100