@@ -40,9 +40,14 @@ extension Main { | |||||
btn.addTarget(self, action: #selector(Main.Core.selectButton), for: .touchUpInside) | btn.addTarget(self, action: #selector(Main.Core.selectButton), for: .touchUpInside) | ||||
} | } | ||||
let groups = memoryGroups(c: M()) | |||||
// Выводим номер нажатой кнопки. | // Выводим номер нажатой кнопки. | ||||
didSelectButton | didSelectButton | ||||
.sink { i in print("ИГР MainP.viewDL didSB: '\(i)'") } | |||||
.sink { i in | |||||
print("ИГР MainP.viewDL didSB id/group: '\(i)'/'\(groups[Float(i)])'") | |||||
} | |||||
.store(in: &subscriptions) | .store(in: &subscriptions) | ||||
} | } | ||||
@@ -7,7 +7,7 @@ function memoryGroups(c) { | |||||
var ids = utsIndexArray(c.itemsCount); | var ids = utsIndexArray(c.itemsCount); | ||||
ids.forEach(function (i) { | ids.forEach(function (i) { | ||||
// @ts-ignore | // @ts-ignore | ||||
items[i] = utsFloor(Number(i) / 2); | |||||
items[Number(i)] = utsFloor(Number(i) / 2); | |||||
}); | }); | ||||
return items; | return items; | ||||
} | } | ||||
@@ -11,13 +11,13 @@ func memoryGap() -> Float { | |||||
return memorySide() + memorySpace() | return memorySide() + memorySpace() | ||||
} | } | ||||
func memoryGroups(c: Context) -> Record<Float, Float> { | |||||
var items: Record<Float, Float> = {}; | |||||
func memoryGroups(c: Context) -> [Float: Float] { | |||||
var items: [Float: Float] = [:] | |||||
// @ts-ignore | // @ts-ignore | ||||
let ids = utsIndexArray(c.itemsCount); | let ids = utsIndexArray(c.itemsCount); | ||||
ids.forEach { i in | ids.forEach { i in | ||||
// @ts-ignore | // @ts-ignore | ||||
items[i] = utsFloor(Float(i) / 2) | |||||
items[Float(i)] = utsFloor(Float(i) / 2) | |||||
} | } | ||||
return items; | return items; | ||||
} | } | ||||
@@ -17,7 +17,7 @@ function memoryGroups(c: Context): Record<number, number> { | |||||
let ids = utsIndexArray(c.itemsCount); | let ids = utsIndexArray(c.itemsCount); | ||||
ids.forEach(i => { | ids.forEach(i => { | ||||
// @ts-ignore | // @ts-ignore | ||||
items[i] = utsFloor(Number(i) / 2) | |||||
items[Number(i)] = utsFloor(Number(i) / 2) | |||||
}) | }) | ||||
return items; | return items; | ||||
} | } | ||||
@@ -44,6 +44,7 @@ function convert(line) { | |||||
result = protocolReplace(result); | result = protocolReplace(result); | ||||
result = typeArrayReplace(result); | result = typeArrayReplace(result); | ||||
result = forEachReplace(result); | result = forEachReplace(result); | ||||
result = recordReplace(result); | |||||
return result; | return result; | ||||
} | } | ||||
@@ -100,6 +101,28 @@ function protocolReplaceVariable(line) { | |||||
return line; | return line; | ||||
} | } | ||||
// Record<TypeA, TypeB> -> [TypeA: TypeB] | |||||
// Record<TypeA, TypeB> = {} -> [TypeA: TypeB] = [:] | |||||
function recordReplace(line) { | |||||
if (!line.includes("Record")) { | |||||
return line; | |||||
} | |||||
let partsR = line.split("Record<"); | |||||
let typesAndEnding = partsR[1]; | |||||
let partsT = typesAndEnding.split(">"); | |||||
let types = partsT[0]; | |||||
let ending = partsT[1]; | |||||
let swiftTypes = types.split(", "); | |||||
let was = `Record<${swiftTypes[0]}, ${swiftTypes[1]}>`; | |||||
let now = `[${swiftTypes[0]}: ${swiftTypes[1]}]`; | |||||
var result = line; | |||||
result = result.replace(was, now); | |||||
result = result.replace("] = {};", "] = [:]"); | |||||
return result; | |||||
} | |||||
// Type[] -> [Type] | // Type[] -> [Type] | ||||
function typeArrayReplace(line) { | function typeArrayReplace(line) { | ||||
let parts = line.split(" "); | let parts = line.split(" "); | ||||
@@ -1,12 +1,8 @@ | |||||
НАДО: | НАДО: | ||||
* транслировать Record<type, type> в Swift | |||||
* выводить группу элемента при нажатии в iOS | |||||
* ввести словари: | |||||
* тип - цвет | |||||
* id - тип | |||||
* new Map? | |||||
https://timmousk.com/blog/typescript-dictionary/ | |||||
* проводить вычисления вывода группы элемента через модель | |||||
* swift | |||||
* web | |||||
* окрашивать элементы в цвета по номерам при выборе | * окрашивать элементы в цвета по номерам при выборе | ||||
* разрешать выбирать лишь два элемента | * разрешать выбирать лишь два элемента | ||||
* при выборе двух элементов сравнивать их цвет | * при выборе двух элементов сравнивать их цвет | ||||
@@ -1,3 +1,8 @@ | |||||
19.06: 25 | |||||
* транслировать Record<type, type> в Swift | |||||
* выводить группу элемента при нажатии в iOS | |||||
16.06: 30 | 16.06: 30 | ||||
* выводить группу элемента при нажатии в web | * выводить группу элемента при нажатии в web | ||||