russian-js-transpiler
v1.0.1
Published
A transpiler that converts Russian JavaScript-like code to standard JavaScript
Downloads
21
Maintainers
Readme
Russian JavaScript Transpiler
A powerful transpiler that converts Russian JavaScript-like code to standard JavaScript, making programming more accessible to Russian speakers.
Features
- Converts Russian keywords and syntax to standard JavaScript
- Supports modern JavaScript features
- Command-line interface for easy integration into your workflow
- Extensible architecture for adding custom transformations
- Full TypeScript support
- Comprehensive test coverage
RJS Syntax Reference
Variables and Constants
// Variable declaration
переменная имя = "Мир";
константа ВОЗРАСТ = 25;
// Multiple variables
переменная x = 10, y = 20, z = 30;
// Destructuring
переменная [первый, второй] = [1, 2];
переменная { имя, возраст } = пользователь;Control Flow
// If-else statement
если (возраст >= 18) {
консоль.лог("Вы совершеннолетний");
} иначе если (возраст >= 13) {
консоль.лог("Вы подросток");
} иначе {
консоль.лог("Вы ребенок");
}
// Switch statement
переключить (деньНедели) {
случай 1:
консоль.лог("Понедельник");
перерыв;
случай 2:
консоль.лог("Вторник");
перерыв;
по_умолчанию:
консоль.лог("Другой день");
}Loops
// For loop
для (переменная i = 0; i < 10; i++) {
консоль.лог(i);
}
// For...of loop
для (переменная элемент из массива) {
консоль.лог(элемент);
}
// While loop
пока (условие) {
// код
}
// Do-while loop
делать {
// код
} пока (условие);Functions
// Function declaration
функция приветствовать(имя) {
вернуть "Привет, " + имя + "!";
}
// Arrow function
константа прибавить = (а, б) => а + б;
// Async function
асинхронная функция загрузитьДанные() {
константа ответ = ждать fetch('https://api.example.com/data');
константа данные = ждать ответ.вJson();
вернуть данные;
}Classes
класс Животное {
конструктор(имя) {
это.имя = имя;
}
говорить() {
консоль.лог(это.имя + ' издает звук.');
}
}
класс Собака расширяет Животное {
говорить() {
консоль.лог(это.имя + ' лает: Гав-гав!');
}
}
константа пес = новый Собака('Рекс');
пес.говорить(); // Выведет: Рекс лает: Гав-гав!Error Handling
попробовать {
// Код, который может вызвать ошибку
если (ошибка) {
выбросить новая Ошибка("Что-то пошло не так");
}
} поймать (ошибка) {
консоль.ошибка("Произошла ошибка:", ошибка.сообщение);
} наконец {
// Код, который выполнится в любом случае
консоль.лог("Завершение обработки");
}Built-in Objects
// Console methods
консоль.лог("Обычное сообщение");
консоль.ошибка("Сообщение об ошибке");
консоль.предупреждение("Предупреждение");
консоль.информация("Информационное сообщение");
// Arrays
константа числа = [1, 2, 3, 4, 5];
константа удвоенные = числа.отобразить(х => х * 2);
константа сумма = числа.редуцировать((а, б) => а + б, 0);
// Objects
константа пользователь = {
имя: "Иван",
возраст: 30,
приветствовать() {
вернуть `Привет, меня зовут ${это.имя}`;
}
};Modules
// Импорт
импортировать { функция1, функция2 } из './модуль';
импортировать * как utils из './утилиты';
// Экспорт
экспорт константа КОНСТАНТА = 42;
экспорт функция привет() { вернуть "Привет!"; };Template Literals
константа имя = "Мир";
константа приветствие = `Привет, ${имя}!
Сегодня ${новая Дата().toLocaleDateString()}.`;
// Многострочные строки
константа html = `
<div>
<h1>${заголовок}</h1>
<p>${текст}</p>
</div>
`;Usage Examples
Example 1: Simple Program
// Приветствие пользователя
функция приветствовать(имя, возраст) {
если (возраст >= 18) {
вернуть `Здравствуйте, ${имя}! Вы совершеннолетний.`;
} иначе {
вернуть `Привет, ${имя}! Тебе всего ${возраст} лет.`;
}
}
консоль.лог(приветствовать("Анна", 25));Example 2: Working with Arrays
// Фильтрация и преобразование массива
константа числа = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// Получить квадраты четных чисел
константа квадратыЧетных = числа
.фильтровать(число => число % 2 === 0)
.отобразить(число => число * число);
консоль.лог(квадратыЧетных); // [4, 16, 36, 64, 100]Example 3: Async/Await
// Асинхронная загрузка данных
асинхронная функция загрузитьПользователя(id) {
попробовать {
константа ответ = ждать fetch(`/api/users/${id}`);
если (!ответ.ок) {
выбросить новая Ошибка('Не удалось загрузить пользователя');
}
вернуть ждать ответ.вJson();
} поймать (ошибка) {
консоль.ошибка('Ошибка:', ошибка.сообщение);
вернуть ноль;
}
}
// Использование
асинхронная функция показатьПользователя(id) {
константа пользователь = ждать загрузитьПользователя(id);
если (пользователь) {
консоль.лог(`Пользователь: ${пользователь.имя}, Email: ${пользователь.почта}`);
}
}Example 4: Class with Inheritance
// Базовый класс
класс Фигура {
конструктор(цвет) {
это.цвет = цвет;
}
получитьПлощадь() {
вернуть 0;
}
описать() {
вернуть `Фигура цвета ${это.цвет}`;
}
}
// Наследующий класс
класс Круг расширяет Фигура {
конструктор(цвет, радиус) {
супер(цвет);
это.радиус = радиус;
}
получитьПлощадь() {
вернуть Math.PI * это.радиус * это.радиус;
}
описать() {
вернуть `${супер.описать()}, радиус: ${это.радиус}`;
}
}
// Использование
константа круг = новый Круг("красный", 5);
консоль.лог(круг.описать()); // Фигура цвета красный, радиус: 5
консоль.лог(`Площадь: ${круг.получитьПлощадь().toFixed(2)}`); // Площадь: 78.54Installation
Global Installation
npm install -g russian-js-transpilerLocal Installation
npm install --save-dev russian-js-transpilerUsage
Command Line
# Transpile a file
rjs compile input.rjs -o output.js
# Watch for changes
rjs watch src/ -o dist/
# Run directly
rjs run script.rjsProgrammatic API
const { transpile } = require('russian-js-transpiler');
const rjsCode = 'переменная привет = "Привет, мир!";';
const jsCode = transpile(rjsCode);
console.log(jsCode);
// Output: var privet = "Привет, мир!";Contributing
Contributions are welcome! Please read our Contributing Guide for details on how to submit pull requests.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Inspired by CoffeeScript and other compile-to-JS languages
- Special thanks to all contributors who have helped improve this project
Installation
npm install -g russian-js-transpilerUsage
CLI
russian-js-transpiler input.rjs output.jsProgrammatic API
import { transpile } from 'russian-js-transpiler';
const russianCode = 'функция привет(имя) { вернуть `Привет, ${имя}!`; }';
const jsCode = transpile(russianCode);
console.log(jsCode);
// Output: function privet(imya) { return `Привет, ${imya}!`; }Examples
See the examples directory for more examples.
Development
Clone the repository:
git clone https://github.com/nike-17/rjs.git cd russian-js-transpilerInstall dependencies:
npm installBuild the project:
npm run buildRun tests:
npm test
Contributing
Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Inspired by similar language transpilers and educational tools
- Thanks to all contributors who have helped improve this project
