From 3ae05e7ec6ed929eb8294d43f5001e009eee5090 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Fri, 31 Jan 2025 19:33:22 -0500 Subject: [PATCH 1/3] Have some import in the example --- arkoala-arkts/libarkts/examples/input/library.sts | 1 + arkoala-arkts/libarkts/examples/input/main.sts | 3 ++- arkoala-arkts/libarkts/examples/src/component-transformer.ts | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 arkoala-arkts/libarkts/examples/input/library.sts diff --git a/arkoala-arkts/libarkts/examples/input/library.sts b/arkoala-arkts/libarkts/examples/input/library.sts new file mode 100644 index 000000000..9d7a1f0e1 --- /dev/null +++ b/arkoala-arkts/libarkts/examples/input/library.sts @@ -0,0 +1 @@ +export @interface Component {} diff --git a/arkoala-arkts/libarkts/examples/input/main.sts b/arkoala-arkts/libarkts/examples/input/main.sts index e26d1d1f5..2d248dd46 100644 --- a/arkoala-arkts/libarkts/examples/input/main.sts +++ b/arkoala-arkts/libarkts/examples/input/main.sts @@ -1,10 +1,11 @@ +import { Component } from "./library" + /* Library code */ class StructBase {} @interface BuilderLambda { value: string } -@interface Component {} /* User code */ // @interface __Options_MyComponent {} diff --git a/arkoala-arkts/libarkts/examples/src/component-transformer.ts b/arkoala-arkts/libarkts/examples/src/component-transformer.ts index 4b4ed420b..c90be1ffd 100644 --- a/arkoala-arkts/libarkts/examples/src/component-transformer.ts +++ b/arkoala-arkts/libarkts/examples/src/component-transformer.ts @@ -59,8 +59,8 @@ export class ComponentTransformer extends AbstractVisitor { node, [ // importDecl, - ...interfaceDeclarations, - ...node.statements + ...node.statements, + ...interfaceDeclarations ] ) } -- Gitee From acd94e8d816925535d1294a31ff36b6b7810ecc0 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Fri, 31 Jan 2025 19:37:21 -0500 Subject: [PATCH 2/3] Trying to build UI DSL with ArkTS --- arkoala-arkts/arkui/src/sts/arkui.sts | 64 ++++++++++++++++++++ arkoala-arkts/user/arktsconfig-pure-sts.json | 23 +++++++ arkoala-arkts/user/src/sts/hello.sts | 28 +++++++++ 3 files changed, 115 insertions(+) create mode 100644 arkoala-arkts/arkui/src/sts/arkui.sts create mode 100644 arkoala-arkts/user/arktsconfig-pure-sts.json create mode 100644 arkoala-arkts/user/src/sts/hello.sts diff --git a/arkoala-arkts/arkui/src/sts/arkui.sts b/arkoala-arkts/arkui/src/sts/arkui.sts new file mode 100644 index 000000000..1c2a9a830 --- /dev/null +++ b/arkoala-arkts/arkui/src/sts/arkui.sts @@ -0,0 +1,64 @@ +// Annotations + +export @interface BuilderLambda { + value: string +} + +export @interface Component {} + +export @interface State {} + +export @interface memo {} + +// Imitation of CommonMethod +export interface CommonMethod { + width(value: number) +} + +export class StructBase { + //@BuilderLambda("instantiateImpl") + static $_instantiate, OptionsS> ( + factory: () => S, + options: OptionsS + ): S { + const instance = factory() + return instance + } + + static instantiateImpl, OptionsS>( + builder: (instance: S)=>S, + factory: () => S, + options: OptionsS + ) { + const instance = factory() + builder(instance) + } +} + +export interface ColumnOptions {} +export class ArkColumnComponent {} + +// An attempt to put down a component +export class Column { + @BuilderLambda("instantiateImpl") + @memo + static $_instantiate( + factory: () => Column, + options?: ColumnOptions, + content?: () => void + ): ArkColumnComponent { + return factory() + } + + @memo + static instantiateImpl( + @memo builder: (instance: ArkColumnComponent)=>ArkColumnComponent, + factory: () => Column, + options?: ColumnOptions, + @memo content?: () => void + ) { + + // ArkStruct(builder, factory, options, style) + } +} + diff --git a/arkoala-arkts/user/arktsconfig-pure-sts.json b/arkoala-arkts/user/arktsconfig-pure-sts.json new file mode 100644 index 000000000..ad58a8b95 --- /dev/null +++ b/arkoala-arkts/user/arktsconfig-pure-sts.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "package": "@ohos.example", + "outDir": "build/sts/abc", + "baseUrl": ".", + "paths": { + "ohos.arkui": ["../arkui/src/sts/arkui.sts"] + }, + "plugins": [ + { + "transform": "../libarkts/examples/build/src/example-parsed-transformer.js", + "stage": "parsed" + }, + { + "transform": "../libarkts/examples/build/src/example-checked-transformer.js", + "stage": "checked" + } + ] + }, + "include": [ + "./src/ets/hello.sts" + ] +} diff --git a/arkoala-arkts/user/src/sts/hello.sts b/arkoala-arkts/user/src/sts/hello.sts new file mode 100644 index 000000000..33bb8cbce --- /dev/null +++ b/arkoala-arkts/user/src/sts/hello.sts @@ -0,0 +1,28 @@ +import { Component } from "ohos.arkui" +import { StructBase } from "ohos.arkui" +import { Column, ColumnOptions } from "ohos.arkui" + +@Component +struct StsTestComponent { + build() { + // StsChildComponent() + StsChildComponent.$_instantiate( + ()=> new StsChildComponent(), + {} as __Options_StsChildComponent + ) + } +} + +@Component +struct StsChildComponent { + build() { + // Column() {} +/* + Column.$_instantiate( + () => new Column(), + {} as ColumnOptions, + ) {} +*/ + } +} + -- Gitee From 74267dd5bc7e1df59291aa06e898ce13f61e7741 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Fri, 31 Jan 2025 19:41:19 -0500 Subject: [PATCH 3/3] First steps in pure sts arkui --- arkoala-arkts/user/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arkoala-arkts/user/package.json b/arkoala-arkts/user/package.json index 9fced01c0..5508f64ed 100644 --- a/arkoala-arkts/user/package.json +++ b/arkoala-arkts/user/package.json @@ -13,7 +13,7 @@ "unmemoize:all": "npm run unmemoize:runtime && npm run unmemoize:arkui-no-common && npm run unmemoize:arkui-common && npm run unmemoize", "build:user": "npm run unmemoize:all && npm run build:user:inc", "build:user:inc": "fast-arktsc --input-files ./arktsconfig-run-unmemoized.json --output-dir ./build --compiler ../../incremental/tools/panda/arkts/arktsc --link-name user && ninja ${NINJA_OPTIONS} -f build/build.ninja", - + "build:user:pure-sts": "../../incremental/tools/panda/arkts/arktsc-capi --file src/sts/hello.sts --arktsconfig arktsconfig-pure-sts.json --output build/sts/abc/hello.abc --dump-plugin-ast", "pack": "npm run cli-tools:check && cd app && DEVECO_SDK_HOME=../../../arkoala/ohos-sdk/ohos-sdk ../command-line-tools/hvigor/bin/hvigorw --no-daemon --mode module -p product=default -p module=user@default assembleHar", "har-arm32": "npm run build:user && npm run --prefix ../../arkoala/ohos-sdk download && node scripts/build-har.mjs --name user --arch arm32 && npm run pack", "har-arm64": "npm run build:user && npm run --prefix ../../arkoala/ohos-sdk download && node scripts/build-har.mjs --name user --arch arm64 && npm run pack", -- Gitee