Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
1356b42
пусто
kornerr Feb 21, 2026
2b0a888
up readme
kornerr Feb 21, 2026
b0e32d4
nativ
kornerr Feb 21, 2026
c0add7a
rm src klin.kt
kornerr Feb 22, 2026
3786265
add base64 encoding and decoding
kornerr Feb 22, 2026
7684508
gen b64
kornerr Feb 22, 2026
10f7ac1
rename files to kd
kornerr Feb 25, 2026
09f8cdf
gen b64
kornerr Feb 25, 2026
53679c0
introduced script steps
kornerr Feb 25, 2026
b8a6b6b
embed
kornerr Feb 26, 2026
19fd974
embed KD files as Base64
kornerr Feb 26, 2026
176214e
support isDbg
kornerr Feb 27, 2026
b225571
outputEntityContents
kornerr Feb 27, 2026
c89f066
close
kornerr Feb 27, 2026
c709e8b
move KD files contents in
kornerr Feb 27, 2026
6841dc8
move kd.yml to klin
kornerr Feb 28, 2026
7d29017
move common
kornerr Feb 28, 2026
65562e1
try gen test kd
kornerr Feb 28, 2026
56ac3b0
try build test
kornerr Feb 28, 2026
3ad342a
fix running tests
kornerr Feb 28, 2026
60145e3
generate F obj
kornerr Mar 1, 2026
a209f60
gen F
kornerr Mar 2, 2026
26989d3
F none
kornerr Mar 2, 2026
cfaca20
distribute
kornerr Mar 2, 2026
3c2ace4
run sample
kornerr Mar 2, 2026
099ff96
disable dbg
kornerr Mar 2, 2026
02aed5a
fix duplicatews
kornerr Mar 2, 2026
425c16e
output
kornerr Mar 5, 2026
e1af15d
parse output paths
kornerr Mar 5, 2026
0bd23c8
fix kd yml
kornerr Mar 6, 2026
7201fd0
before paths
kornerr Mar 6, 2026
0934d77
Revert "before paths"
kornerr Mar 6, 2026
c6f348f
Revert "fix kd yml"
kornerr Mar 6, 2026
a9f6e8b
rm output
kornerr Mar 7, 2026
4ccddaa
split dist and build
kornerr Mar 7, 2026
5366225
split dist and build for sure
kornerr Mar 7, 2026
7d2ffd1
redo fobj
kornerr Mar 7, 2026
cf79291
generate F object finally
kornerr Mar 7, 2026
de9a431
up
kornerr Mar 8, 2026
6c7a713
readme
kornerr Mar 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 19 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,28 @@
Kotlin dialect (**KD**) is a set of tools and rules to write
logic in Kotlin for several platforms.

The Kotlin dialect's core is an architecture inspired by Redux.
If you know what Kotlin Multiplatfrom is, you probably wonder what's the fuss.
If you tried Kotlin Multiplatform you surely know how hard it is to set up
correctly for multiple platforms. This project dictates one particular way
to have your code organized to be able to easily have logic in Kotlin
across platforms in **native** apps.

# Klin
Key concepts:

Klin is a translator that converts YML to Kotlin.
* Redux-like architecture
* Klin, a translator to convert YML to Kotlin

$ `./util/run-klin-dbg`
## Build

$ `./util/build-klin`

## Distribute

$ `./util/dist-klin`

## Run

$ `node dist/app.js --file=/path/to/kd.yml --out=/path/to/kd.kt`

## Generation of entity fields

Expand Down
50 changes: 50 additions & 0 deletions dist/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/usr/bin/env node

let fs = require("fs");
let KT = require("./ver-nodejs-app").org.opengamestudio;

//!<-- API -->

function appSet(key, value) {
KT.appCtrl().set(key, value);
}

//!<-- Component -->

function AppComponent() {
this._construct = function() {
// Effects
let oneliners = [
"inputFile", (c) => { appReadFile(c.inputFile) },
"outputFileContents", (c) => { appWriteFile(c.outputFile, c.outputFileContents) },
];
KT.registerOneliners(KT.appCtrl(), oneliners);

// Defaults.
appSet("isDbg", true);
appSet("arguments", process.argv);
};

this._construct();
}

//<!-- Effects -->

function appReadFile(fileName) {
let contents = fs.readFileSync(fileName, { encoding: "utf8", flag: "r" });
let lines = contents.split("\n");
appSet("inputFileLines", lines);
}

function appWriteFile(fileName, contents) {
fs.writeFileSync(fileName, contents);
appSet("didWriteOutputFile", true);
}

//<!-- Installation -->

let cmp = new AppComponent();

//<!-- Run -->

appSet("didLaunch", true);
Loading