1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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
|