This commit is contained in:
Михаил Капелько
2023-06-05 19:28:23 +03:00
parent 19025d4c13
commit c50ee9aabb
7 changed files with 66 additions and 10 deletions

View File

@@ -5,7 +5,6 @@ var Position = /** @class */ (function () {
} }
return Position; return Position;
}()); }());
// @ts-nocheck
function memoryItemPositions(c) { function memoryItemPositions(c) {
var pos = []; var pos = [];
for (var i = 0; i < c.itemsCount; i++) { for (var i = 0; i < c.itemsCount; i++) {

View File

@@ -1,11 +1,25 @@
// @ts-nocheck protocol Context {
func memoryItemPositions(c: Context) -> [Position] { var itemsCount: Float { get }
var pos = [Position]
}
class Position {
x: Float
y: Float
constructor(x, y) {
this.x = x
this.y = y
}
}
func memoryItemPositions(c: Context) -> Position[] {
var pos: Position[] = []
for (var i = 0; i < c.itemsCount; i++) { for (var i = 0; i < c.itemsCount; i++) {
let row = Math.floor(i / 4) let row = Math.floor(i / 4)
let x = memoryGap() + (i - row * 4) * memoryGap() let x = memoryGap() + (i - row * 4) * memoryGap()
let y = memoryGap() + row * memoryGap() let y = memoryGap() + row * memoryGap()
pos.push(Position(x, y)) pos.push(new Position(x, y))
} }
return pos return pos
} }

View File

@@ -10,7 +10,7 @@ FILES=(
) )
for file in ${FILES[*]}; do for file in ${FILES[*]}; do
tsc $SCRIPT_DIR/$file.ts --outfile $SCRIPT_DIR/JavaScript/$file.js
$SCRIPT_DIR/../toSwift $SCRIPT_DIR/$file.ts $SCRIPT_DIR/Swift/$file.swift $SCRIPT_DIR/../toSwift $SCRIPT_DIR/$file.ts $SCRIPT_DIR/Swift/$file.swift
tsc $SCRIPT_DIR/$file.ts --outfile $SCRIPT_DIR/JavaScript/$file.js
done done

View File

@@ -12,7 +12,6 @@ class Position {
} }
} }
// @ts-nocheck
function memoryItemPositions(c: Context): Position[] { function memoryItemPositions(c: Context): Position[] {
var pos: Position[] = [] var pos: Position[] = []
for (var i = 0; i < c.itemsCount; i++) { for (var i = 0; i < c.itemsCount; i++) {

42
toSwift
View File

@@ -10,10 +10,11 @@ var fs = require("fs");
let fileSrc = process.argv[2]; let fileSrc = process.argv[2];
let fileDst = process.argv[3]; let fileDst = process.argv[3];
let replacements = { let globalReplacements = {
"function": "func", "function": "func",
"number": "Float", "number": "Float",
"):": ") ->", "):": ") ->",
"interface": "protocol",
}; };
console.log(`Converting '${fileSrc}' to '${fileDst}'`); console.log(`Converting '${fileSrc}' to '${fileDst}'`);
@@ -33,9 +34,44 @@ fs.writeFileSync(fileDst, contentsDst);
function convert(line) { function convert(line) {
var result = line; var result = line;
for (let src in replacements) { for (let src in globalReplacements) {
let dst = replacements[src]; let dst = globalReplacements[src];
result = result.replace(src, dst); result = result.replace(src, dst);
} }
result = protocolReplace(result);
return result;
}
var isProtocol = false;
function protocolReplace(line) {
if (line.includes("protocol")) {
isProtocol = true;
}
if (line == "}") {
isProtocol = false;
}
console.log("ИГР protocolR isP/line:", isProtocol, line);
if (!isProtocol) {
return line;
}
var result = line;
if (isProtocol) {
result = protocolReplaceVariable(result);
}
return result; return result;
} }
function protocolReplaceVariable(line) {
let parts = line.split(": ");
if (parts.length == 2) {
let type = parts[1];
let name = parts[0].trim();
let spaceLength = parts[0].length - name.length;
let spaces = " ".repeat(spaceLength);
//console.log("Variable. name/spaceL/parts:", name, spaceLength, parts);
return `${spaces}var ${name}: ${type} { get }\n`;
}
return line;
}

View File

@@ -1,5 +1,7 @@
НАДО: НАДО:
* починить ^M
* конвертировать interface в protocol
* генерить interface в Swift * генерить interface в Swift
* генерить class в Swift * генерить class в Swift
* нет struct, к сожалению * нет struct, к сожалению

View File

@@ -1,4 +1,10 @@
05.06: 40
* ввести понятие контекста в разбор
* определять контекст протокола
* конвертировать поля в свойства протокола
02.06: 20 02.06: 20
* геренить memoryItemPositions.js * геренить memoryItemPositions.js