From 686c6f90d7a3c2bc0f8b89619c5d91ee8fb320e4 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sun, 4 Jan 2026 22:15:20 -0800 Subject: Add tabloid language support --- README.md | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 README.md (limited to 'README.md') 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 -- cgit v1.2.3-70-g09d2