An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

![Red Script](http://img42.com/CvCSa+ "RedScript")

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!