https://github.com/av/redscript
RedScript subset for JavaScript language
https://github.com/av/redscript
Last synced: 11 months ago
JSON representation
RedScript subset for JavaScript language
- Host: GitHub
- URL: https://github.com/av/redscript
- Owner: av
- Created: 2015-07-11T19:52:49.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2015-10-04T10:59:29.000Z (over 10 years ago)
- Last Synced: 2025-08-06T23:51:41.676Z (11 months ago)
- Language: JavaScript
- Size: 172 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

RedScript is language (actually don't) that transpiles to JavaScript.
This code is created with the help of [your-script](https://github.com/iamfrontender/your-script) module.
The source files in RedScript have `.rs` extension.
## Disclaimer
This module is created just for enormous incredible fun, nothing more. I can't even imagine someone really writing programms on this subset.
## Usage
This module is distributed via npm, it requires global installation, run `npm i -g rscript` just where you want this code.
RedScript provides minimal console tool to translate source files to JavaScript and vice versa.
After installed globally it availble in your wd as `redscript`
Run `redscript yourFile.js` or `redscript yourFile.rs` to translate it to opposite subset.
## Example
Lets imagine, your JS file, `programm.js` contains following code:
```javascript
function функ(икс, игрек, зет) {
var и = 0;
var икс = {0: "ноль", 1: "один"};
var функ = function () {
}
if (!и > 10) {
for (var j = 0; j < 10; j++) {
switch (j) {
case 0:
значение = "zero";
break;
case 1:
значение = "one";
break;
}
var с = джей > 5 ? "ГТ 5" : "ЛЕ 5";
}
} else {
var джей = 0;
try {
while (джей < 10) {
if (и == джей || джей > 5) {
a[джей] = и + джей * 12;
}
и = (джей << 2) & 4;
джей++;
}
do {
джей--;
} while (джей > 0)
} catch (e) {
alert("Крах: " + e.message);
} finally {
обнулить(a, и);
}
}
}
```
After launching `redscript programm.js` in directory with this file, parser will create transpiled source file, `programm.rs`, translated in RedScript and look as following:
```javascript
функция функ(икс, игрек, зет) {
примем и = 0;
примем икс = {0: "ноль", 1: "один"};
примем функ = функция () {
}
если (!и > 10) {
для (примем j = 0; j < 10; j++) {
переключатель (j) {
положение 0:
значение = "zero";
стоп;
положение 1:
значение = "one";
стоп;
}
примем с = джей > 5 ? "ГТ 5" : "ЛЕ 5";
}
} иначе {
примем джей = 0;
попробуй {
пока (джей < 10) {
если (и == джей || джей > 5) {
a[джей] = и + джей * 12;
}
и = (джей << 2) & 4;
джей++;
}
делай {
джей--;
} пока (джей > 0)
} лови (e) {
alert("Крах: " + e.message);
} затем {
обнулить(a, и);
}
}
}
```
## What it is and what isn't
Since RedScript is based on your-scipt, this subset is limited by modifying the language keywords. So, any global object properties, like `document.body` or `HTMLElement.prototype.nextElementSibling` are untouched, though it's definetely possible :)
## Under the hood
[your-script](https://github.com/iamfrontender/your-script)
[esprima-custom-keywords](https://github.com/iamfrontender/esprima-custom-keywords)
[keywords-provider](https://github.com/iamfrontender/keywords-provider)
Cheers!