From 0966feb3f834f0c9ead968ce8bfc6241e0372dcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=9A=D0=B0=D0=BF?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BA=D0=BE?= Date: Fri, 9 Jun 2023 20:11:31 +0300 Subject: [PATCH] d --- iOS/app/MMMemory.xcodeproj/project.pbxproj | 8 +++--- .../UserInterfaceState.xcuserstate | Bin 33297 -> 35789 bytes iOS/src/platfrom.swift | 23 ++++++++++++++++++ iOS/src/uts.swift | 3 --- shared/swift.swift | 5 ++-- toSwift | 23 +++++++++++++++++- будущее | 9 +------ прошлое | 9 +++++++ 8 files changed, 62 insertions(+), 18 deletions(-) create mode 100644 iOS/src/platfrom.swift delete mode 100644 iOS/src/uts.swift diff --git a/iOS/app/MMMemory.xcodeproj/project.pbxproj b/iOS/app/MMMemory.xcodeproj/project.pbxproj index 48ce22b..46df160 100644 --- a/iOS/app/MMMemory.xcodeproj/project.pbxproj +++ b/iOS/app/MMMemory.xcodeproj/project.pbxproj @@ -9,7 +9,6 @@ /* Begin PBXBuildFile section */ 1F083A14C69F20A6BA92A63E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F16A7DD61EF6CD4FB4E3DE25 /* AppDelegate.swift */; }; 3D03666F3BC2B1F2CBB49530 /* Main.SectionSelection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D5F2B2E3A26F03F6825608E /* Main.SectionSelection.swift */; }; - 4AC2B8BF716272D446F9E7E0 /* uts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 721855DB1A329E65128E36B5 /* uts.swift */; }; 79FB208C9DADDA6179E588C3 /* Main.SectionGrid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AC22F19366076CF4168BFBD /* Main.SectionGrid.swift */; }; 89086E3972F560A9A1A76CE4 /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C71EDBDFFDBC96F6E8E7762 /* Model.swift */; }; B19B3998FA2BA651ACB1E53C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C1742EFC5A1E818780679340 /* Assets.xcassets */; }; @@ -18,13 +17,14 @@ D505E64F4CD6EAEB530BF851 /* Main.Section16Buttons.swift in Sources */ = {isa = PBXBuildFile; fileRef = A38A1AA6B57483F6B44CDF78 /* Main.Section16Buttons.swift */; }; DB1010B8A246D47BEC6B3FA6 /* Main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DF762100A8EDF105B6E136D /* Main.swift */; }; EB8CC50236A211D932BA0DB0 /* Main.Platform.swift in Sources */ = {isa = PBXBuildFile; fileRef = A355A898E25602F45B88CCBA /* Main.Platform.swift */; }; + F368609CC7635D385838A386 /* platfrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F3E3A0EC0B9264E001C3DBC /* platfrom.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 0DF762100A8EDF105B6E136D /* Main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.swift; sourceTree = ""; }; + 0F3E3A0EC0B9264E001C3DBC /* platfrom.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = platfrom.swift; sourceTree = ""; }; 4E32B0495E4BCEA4EE0508D4 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; 6D5F2B2E3A26F03F6825608E /* Main.SectionSelection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.SectionSelection.swift; sourceTree = ""; }; - 721855DB1A329E65128E36B5 /* uts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = uts.swift; sourceTree = ""; }; 9AC22F19366076CF4168BFBD /* Main.SectionGrid.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.SectionGrid.swift; sourceTree = ""; }; 9C71EDBDFFDBC96F6E8E7762 /* Model.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Model.swift; sourceTree = ""; }; 9D774FEE86833E8A0A74387C /* App.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -57,7 +57,7 @@ 6D5F2B2E3A26F03F6825608E /* Main.SectionSelection.swift */, 0DF762100A8EDF105B6E136D /* Main.swift */, 9C71EDBDFFDBC96F6E8E7762 /* Model.swift */, - 721855DB1A329E65128E36B5 /* uts.swift */, + 0F3E3A0EC0B9264E001C3DBC /* platfrom.swift */, ); name = src; path = ../src; @@ -149,8 +149,8 @@ 3D03666F3BC2B1F2CBB49530 /* Main.SectionSelection.swift in Sources */, DB1010B8A246D47BEC6B3FA6 /* Main.swift in Sources */, 89086E3972F560A9A1A76CE4 /* Model.swift in Sources */, + F368609CC7635D385838A386 /* platfrom.swift in Sources */, BE2994BF2FFF272E62883953 /* swift.swift in Sources */, - 4AC2B8BF716272D446F9E7E0 /* uts.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/iOS/app/MMMemory.xcodeproj/project.xcworkspace/xcuserdata/mk.xcuserdatad/UserInterfaceState.xcuserstate b/iOS/app/MMMemory.xcodeproj/project.xcworkspace/xcuserdata/mk.xcuserdatad/UserInterfaceState.xcuserstate index 91c14fb5ec6e69c9ee48493f773b071ec950dd7a..d56bf83be8d84cc0a178a3a6e75c043060655f1f 100644 GIT binary patch delta 17423 zcmaKT2V4|K`~S^sKU5A7IGTVQ{jBsN^(aR(b%Gb9Zig} z_Y!-Ly~o}YOVrr?&vIaV-#7oC_u0K;XJ>Z4-{<>0GxO{?eGEMIJ)BkuiLTR&t1LH( zHjB21wu-iic8PY2_KEh34vCIUznQ6z1BoCBBm))b3yOgTlmIO#1!bTdRDgk?9yEX< zU_AH^%m8yi6KDoYK?_(3R)e3xFJKec47P*aU=P?24ug~6G&lp!fah7nK!V_+;y05LET zrodE~0W)C^90==S1JuDrI0z1gL*P(23=W5SI2MkBcJOGct6YwNF10Tab;GggbdrVi>^_h!{&uBc>DI z5(eTsVg|8*SV%Mx&BStI1@RNHiP%hRA@&mci2cN2;y7`Ncuf33{HZ6N5KoC`#B<^= z;sx=Nct!k80uqu0Ns?l+6KO_TlXj#d=}Nkho@6hwH|awLk$uQ8GK0({v&epAHkm`_ zl4`O)nMW3rUWd-$o=GD@(6i?JV~A*&yp9(OXM~3ck&i_o4ijxApao$B%hOiQ6^Lesw35jGNmMx z8D&mcP@O4D%7${H+$eXd2i246MfIkFsSqli%Ahi-EUF)sP32Izl$z>KLc}uW@wh?XfxWJ_M*LMIo*x!PWPaD(!J>3 zv=8k|2h!nm1RYDq(J6E)oko_?ed%0UP3s$I9o2vfo`gi&|eV=~700uGy zLoyUYGYrEr93y5-7*ocIv1X)97siosXFM2B#*69A_%MljCW%RAR7?t!%A_%UnRF(D z$z*bvLZ*}{W9paz%s^%+GmQC`F)-gTGnkpo_slG2HZzBr%gkdIGRv6d%umc}W+StS z+01NV_AtLPmzgWfRpuJ=J9C}6!Q5nSF}ImJ%md~rk;pt_o-?nRH!NTwORy%az5^>` zU0FBQo%LWnSufU`m9yR0?rd*1hz(~W*mzdSCa`_kbhe7EW^345wvHXZ4rJ@u23E&5 zvO`&(9m|emr?S&n13Q?U?IyM^7#ZezEzJJ>z!A@&4&lD)uQWG}Hd z*<0*8_C5Q-&_bE%IZncvan_uabK;!2uACR=%|&wxE{2Qc;<$KD$t7@!ToRYerE%F@ zK3Bk%aphbEH;}96CUTRw$=o;G6mBXvjhoJW%Ne-uxLMo+ZV9)P`-xl4ZR9p_JGh

LdKyj!zN*pUzinGMIVzszHTqrIP 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 diff --git a/iOS/src/platfrom.swift b/iOS/src/platfrom.swift new file mode 100644 index 0000000..ec5fd08 --- /dev/null +++ b/iOS/src/platfrom.swift @@ -0,0 +1,23 @@ +import Foundation + +// Memory. + +struct PositionInstance: Position { + var x: Float + var y: Float +} + +func memoryCreatePosition(_ x: Float, _ y: Float) -> PositionInstance { + return .init(x: x, y: y) +} + + +// UTS. + +func utsFloor(_ value: Float) -> Float { + floor(value) +} + +func utsIndexArray(_ count: Float) -> [Int] { + [Int](0.. [Int] { - [Int](0.. [Position] { // @ts-ignore let ids = utsIndexArray(c.itemsCount); - ids.forEach(i => { + ids.forEach { ii in + let i = Float(ii); // @ts-ignore let row = utsFloor(i / 4) let x = memoryGap() + (i - row * 4) * memoryGap() let y = memoryGap() + row * memoryGap() // @ts-ignore pos.push(memoryCreatePosition(x, y)) - }) + } return pos } diff --git a/toSwift b/toSwift index c94744f..8815e04 100755 --- a/toSwift +++ b/toSwift @@ -15,6 +15,7 @@ let globalReplacements = { "number": "Float", "):": ") ->", "interface": "protocol", + "})": "}", // forEach }; console.log(`Converting '${fileSrc}' to '${fileDst}'`); @@ -40,11 +41,31 @@ function convert(line) { } result = protocolReplace(result); result = typeArrayReplace(result); + result = forEachReplace(result); return result; } -var isProtocol = false; +// x.forEach(y => { -> x.forEach { y in +function forEachReplace(line) { + if (!line.includes("forEach")) { + return line; + } + + let partsFE = line.split("forEach"); + let identifier = partsFE[0]; + let closure = partsFE[1]; + + let partsC = closure.split(" => "); + let bracketAndVar = partsC[0]; + let bracket = partsC[1]; + let variable = bracketAndVar.substring(1); + let result = `${identifier}forEach { ${variable} in`; + return result; +} + + +var isProtocol = false; // interface -> protocol function protocolReplace(line) { if (line.includes("protocol")) { diff --git a/будущее b/будущее index b2170b7..69d1bcf 100644 --- a/будущее +++ b/будущее @@ -1,13 +1,6 @@ -09.06: 19:00- - -* заменить for на forEach в TS -* ввести функцию заполнения массива индексами: utsIndexArray -* ввести utsFloor -* ввести utsIndexArray в Swift НАДО: -* ввести utsFloor в Swift -* конвертировать forEach +* поправить Floor i/4 * перейти на один файл swift * генерить memoryItemPositions.swift * ввести общую библиотеку? diff --git a/прошлое b/прошлое index 1ee094e..b4fc89b 100644 --- a/прошлое +++ b/прошлое @@ -1,3 +1,12 @@ +09.06: 60 + +* заменить for на forEach в TS +* ввести функцию заполнения массива индексами: utsIndexArray +* ввести utsFloor +* ввести utsIndexArray в Swift +* конвертировать forEach +* ввести utsFloor в Swift + 08.06: 30 * перейти на один файл ts