diff options
| author | Elizabeth Hunt <me@liz.coffee> | 2026-01-04 22:15:20 -0800 |
|---|---|---|
| committer | Elizabeth Hunt <me@liz.coffee> | 2026-01-04 22:15:20 -0800 |
| commit | 686c6f90d7a3c2bc0f8b89619c5d91ee8fb320e4 (patch) | |
| tree | 4813432a71edb425fe453316e3e07f637690a0b1 /README.md | |
| download | codemirror-lang-tabloid-686c6f90d7a3c2bc0f8b89619c5d91ee8fb320e4.tar.gz codemirror-lang-tabloid-686c6f90d7a3c2bc0f8b89619c5d91ee8fb320e4.zip | |
Add tabloid language support
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..a6c295c --- /dev/null +++ b/README.md @@ -0,0 +1,129 @@ +# @emprespresso/codemirror-lang-tabloid + +[Tabloid](https://github.com/thesephist/tabloid) language support for [CodeMirror 6](https://codemirror.net/6/). + +## About Tabloid + +Tabloid is the clickbait headline programming language created by Linus Lee. It features outrageous keywords like `DISCOVER HOW TO` (function declaration), `EXPERTS CLAIM` (variable assignment), and `PLEASE LIKE AND SUBSCRIBE` (required program terminator). + +## Installation + +```bash +npm install @emprespresso/codemirror-lang-tabloid +``` + +## Usage + +```javascript +import { EditorView, basicSetup } from 'codemirror' +import { tabloid } from '@emprespresso/codemirror-lang-tabloid' + +const view = new EditorView({ + extensions: [basicSetup, tabloid()], + parent: document.querySelector('#editor') +}) +``` + +## Language Features + +### Keywords + +- `DISCOVER HOW TO ... WITH ...` - Function declaration +- `EXPERTS CLAIM ... TO BE ...` - Variable assignment +- `RUMOR HAS IT ... END OF STORY` - Code block +- `WHAT IF ... LIES! ...` - If/else statement +- `SHOCKING DEVELOPMENT` - Return statement +- `YOU WON'T WANT TO MISS` - Print statement +- `LATEST NEWS ON` - Input statement +- `PLEASE LIKE AND SUBSCRIBE` - Program terminator (required) + +### Operators + +**Arithmetic:** +- `PLUS` - Addition +- `MINUS` - Subtraction +- `TIMES` - Multiplication +- `DIVIDED BY` - Division +- `MODULO` - Modulo + +**Comparison:** +- `IS ACTUALLY` - Equality +- `BEATS` - Greater than +- `SMALLER THAN` - Less than + +**Logical:** +- `AND` - Logical AND +- `OR` - Logical OR + +### Literals + +- **Numbers:** `123`, `45.67` +- **Strings:** `"hello"`, `'world'` +- **Booleans:** `TOTALLY RIGHT` (true), `COMPLETELY WRONG` (false) + +## Example Programs + +### Hello World + +```tabloid +YOU WON'T WANT TO MISS 'Hello, World!' + +PLEASE LIKE AND SUBSCRIBE +``` + +### Factorial + +```tabloid +DISCOVER HOW TO FACTORIAL WITH N +RUMOR HAS IT + WHAT IF N IS ACTUALLY 0 + SHOCKING DEVELOPMENT 1 + LIES! + SHOCKING DEVELOPMENT + N TIMES FACTORIAL OF N MINUS 1 +END OF STORY + +EXPERTS CLAIM RESULT TO BE FACTORIAL OF 10 +YOU WON'T WANT TO MISS 'Result is' +YOU WON'T WANT TO MISS RESULT + +PLEASE LIKE AND SUBSCRIBE +``` + +### Fibonacci + +```tabloid +DISCOVER HOW TO FIBONACCI WITH A, B, N +RUMOR HAS IT + WHAT IF N SMALLER THAN 1 + SHOCKING DEVELOPMENT B + LIES! RUMOR HAS IT + YOU WON'T WANT TO MISS B + SHOCKING DEVELOPMENT + FIBONACCI OF B, A PLUS B, N MINUS 1 + END OF STORY +END OF STORY + +EXPERTS CLAIM LIMIT TO BE 10 +YOU WON'T WANT TO MISS 'First 10 Fibonacci numbers' +EXPERTS CLAIM NOTHING TO BE FIBONACCI OF 0, 1, LIMIT + +PLEASE LIKE AND SUBSCRIBE +``` + +## Development + +```bash +# Install dependencies +npm install + +# Build the parser +npm run prepare + +# Run tests +npm test +``` + +## License + +MIT |
