Automattic / Automattic/harper

Support for Fountain Screenplay Format (*.fountain)

Open
#3,245 0 comments 0 reactions 0 assignees View on GitHub
enhancement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.