@@ -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++) { | ||||
@@ -1,11 +1,25 @@ | |||||
// @ts-nocheck | |||||
func memoryItemPositions(c: Context) -> [Position] { | |||||
var pos = [Position] | |||||
protocol Context { | |||||
var itemsCount: Float { get } | |||||
} | |||||
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 | ||||
} | } |
@@ -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 | ||||
@@ -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++) { | ||||
@@ -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) { | |||||
let dst = replacements[src]; | |||||
for (let src in globalReplacements) { | |||||
let dst = globalReplacements[src]; | |||||
result = result.replace(src, dst); | result = result.replace(src, dst); | ||||
} | } | ||||
result = protocolReplace(result); | |||||
return 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; | |||||
} | |||||
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; | |||||
} |
@@ -1,5 +1,7 @@ | |||||
НАДО: | НАДО: | ||||
* починить ^M | |||||
* конвертировать interface в protocol | |||||
* генерить interface в Swift | * генерить interface в Swift | ||||
* генерить class в Swift | * генерить class в Swift | ||||
* нет struct, к сожалению | * нет struct, к сожалению | ||||
@@ -1,4 +1,10 @@ | |||||
05.06: 40 | |||||
* ввести понятие контекста в разбор | |||||
* определять контекст протокола | |||||
* конвертировать поля в свойства протокола | |||||
02.06: 20 | 02.06: 20 | ||||
* геренить memoryItemPositions.js | * геренить memoryItemPositions.js | ||||