hokusai-zero 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. checksums.yaml +7 -0
  2. data/Dockerfile +26 -0
  3. data/Gemfile +15 -0
  4. data/Gemfile.lock +91 -0
  5. data/LICENSE +21 -0
  6. data/README.md +28 -0
  7. data/ast/genheader +3 -0
  8. data/ast/include/hashmap.c +1151 -0
  9. data/ast/include/hashmap.c.license +20 -0
  10. data/ast/include/hashmap.h +54 -0
  11. data/ast/src/core/ast.c +448 -0
  12. data/ast/src/core/ast.h +259 -0
  13. data/ast/src/core/common.h +24 -0
  14. data/ast/src/core/component.c +85 -0
  15. data/ast/src/core/component.h +35 -0
  16. data/ast/src/core/hml.c +665 -0
  17. data/ast/src/core/hml.h +11 -0
  18. data/ast/src/core/input.c +458 -0
  19. data/ast/src/core/input.h +118 -0
  20. data/ast/src/core/style.c +101 -0
  21. data/ast/src/core/style.h +41 -0
  22. data/ast/src/core/text.c +784 -0
  23. data/ast/src/core/text.h +93 -0
  24. data/ast/src/core/util.c +140 -0
  25. data/ast/src/core/util.h +48 -0
  26. data/ast/src/hokusai.c +6 -0
  27. data/ast/src/hokusai.h +6 -0
  28. data/ast/test/fixtures/test.ui +13 -0
  29. data/ast/test/greatest.h +1266 -0
  30. data/ast/test/hokusai.c +14 -0
  31. data/ast/test/parser.c +234 -0
  32. data/ast/test/text.c +116 -0
  33. data/ext/extconf.rb +27 -0
  34. data/grammar/Cargo.lock +80 -0
  35. data/grammar/Cargo.toml +26 -0
  36. data/grammar/binding.gyp +20 -0
  37. data/grammar/bindings/node/binding.cc +28 -0
  38. data/grammar/bindings/node/index.js +19 -0
  39. data/grammar/bindings/rust/build.rs +40 -0
  40. data/grammar/bindings/rust/lib.rs +52 -0
  41. data/grammar/corpus/1_document.txt +131 -0
  42. data/grammar/corpus/2_selectors.txt +58 -0
  43. data/grammar/corpus/3_spaces.txt +69 -0
  44. data/grammar/corpus/4_errors.txt +10 -0
  45. data/grammar/corpus/5_macros.txt +175 -0
  46. data/grammar/corpus/6_styles.txt +81 -0
  47. data/grammar/grammar.js +275 -0
  48. data/grammar/package-lock.json +34 -0
  49. data/grammar/package.json +33 -0
  50. data/grammar/src/grammar.json +1269 -0
  51. data/grammar/src/node-types.json +474 -0
  52. data/grammar/src/parser.c +5772 -0
  53. data/grammar/src/scanner.c +258 -0
  54. data/grammar/src/tree_sitter/parser.h +230 -0
  55. data/grammar/src/tree_sitter/scanner.h +12 -0
  56. data/grammar/test.nml +10 -0
  57. data/hokusai.gemspec +19 -0
  58. data/ui/examples/assets/DigitalDisplay.ttf +0 -0
  59. data/ui/examples/assets/OpenSans-Regular.ttf +0 -0
  60. data/ui/examples/assets/addy.png +0 -0
  61. data/ui/examples/assets/baby_sean.png +0 -0
  62. data/ui/examples/assets/football-troll.png +0 -0
  63. data/ui/examples/assets/gear.png +0 -0
  64. data/ui/examples/assets/icecold.ttf +0 -0
  65. data/ui/examples/assets/science-troll.png +0 -0
  66. data/ui/examples/buddy.rb +31 -0
  67. data/ui/examples/clock.rb +58 -0
  68. data/ui/examples/counter.rb +123 -0
  69. data/ui/examples/dynamic.rb +147 -0
  70. data/ui/examples/foobar.rb +236 -0
  71. data/ui/examples/stock.rb +115 -0
  72. data/ui/examples/stock_decider/option.rb +74 -0
  73. data/ui/examples/tic_tac_toe.rb +246 -0
  74. data/ui/lib/lib_hokusai.rb +425 -0
  75. data/ui/spec/hokusai/ast_spec.rb +88 -0
  76. data/ui/spec/hokusai/automation/keys_transcoder_spec.rb +50 -0
  77. data/ui/spec/hokusai/automation/selector_spec.rb +68 -0
  78. data/ui/spec/hokusai/block_spec.rb +126 -0
  79. data/ui/spec/hokusai/directives_spec.rb +327 -0
  80. data/ui/spec/hokusai/e2e/client_spec.rb +58 -0
  81. data/ui/spec/hokusai/e2e/meta_spec.rb +42 -0
  82. data/ui/spec/hokusai/publisher_spec.rb +38 -0
  83. data/ui/spec/hokusai/slots_spec.rb +150 -0
  84. data/ui/spec/hokusai/util/piece_table_spec.rb +90 -0
  85. data/ui/spec/hokusai_spec.rb +0 -0
  86. data/ui/spec/spec_helper.rb +30 -0
  87. data/ui/src/hokusai/ast.rb +446 -0
  88. data/ui/src/hokusai/automation/client.rb +167 -0
  89. data/ui/src/hokusai/automation/constants.rb +98 -0
  90. data/ui/src/hokusai/automation/converters/selector_converter.rb +61 -0
  91. data/ui/src/hokusai/automation/driver.rb +54 -0
  92. data/ui/src/hokusai/automation/driver_command_queue.rb +50 -0
  93. data/ui/src/hokusai/automation/driver_commands/base.rb +79 -0
  94. data/ui/src/hokusai/automation/driver_commands/get_attribute.rb +41 -0
  95. data/ui/src/hokusai/automation/driver_commands/invoke.rb +33 -0
  96. data/ui/src/hokusai/automation/driver_commands/locate.rb +48 -0
  97. data/ui/src/hokusai/automation/driver_commands/trigger_keyboard.rb +94 -0
  98. data/ui/src/hokusai/automation/driver_commands/trigger_mouse.rb +213 -0
  99. data/ui/src/hokusai/automation/keys_transcoder.rb +128 -0
  100. data/ui/src/hokusai/automation/selector.rb +39 -0
  101. data/ui/src/hokusai/automation/server.rb +114 -0
  102. data/ui/src/hokusai/automation.rb +3 -0
  103. data/ui/src/hokusai/backends/raylib/config.rb +47 -0
  104. data/ui/src/hokusai/backends/raylib/font.rb +113 -0
  105. data/ui/src/hokusai/backends/raylib/keys.rb +124 -0
  106. data/ui/src/hokusai/backends/raylib.rb +449 -0
  107. data/ui/src/hokusai/backends/sdl2/Monaco.ttf +0 -0
  108. data/ui/src/hokusai/backends/sdl2/color.rb +12 -0
  109. data/ui/src/hokusai/backends/sdl2/config.rb +31 -0
  110. data/ui/src/hokusai/backends/sdl2/font.rb +127 -0
  111. data/ui/src/hokusai/backends/sdl2/keys.rb +119 -0
  112. data/ui/src/hokusai/backends/sdl2.rb +529 -0
  113. data/ui/src/hokusai/block.rb +237 -0
  114. data/ui/src/hokusai/blocks/button.rb +100 -0
  115. data/ui/src/hokusai/blocks/checkbox.rb +51 -0
  116. data/ui/src/hokusai/blocks/circle.rb +28 -0
  117. data/ui/src/hokusai/blocks/clipped.rb +23 -0
  118. data/ui/src/hokusai/blocks/cursor.rb +49 -0
  119. data/ui/src/hokusai/blocks/dynamic.rb +37 -0
  120. data/ui/src/hokusai/blocks/empty.rb +10 -0
  121. data/ui/src/hokusai/blocks/hblock.rb +35 -0
  122. data/ui/src/hokusai/blocks/image.rb +18 -0
  123. data/ui/src/hokusai/blocks/input.rb +200 -0
  124. data/ui/src/hokusai/blocks/label.rb +39 -0
  125. data/ui/src/hokusai/blocks/panel.rb +126 -0
  126. data/ui/src/hokusai/blocks/rect.rb +24 -0
  127. data/ui/src/hokusai/blocks/scissor_begin.rb +18 -0
  128. data/ui/src/hokusai/blocks/scissor_end.rb +12 -0
  129. data/ui/src/hokusai/blocks/scrollbar.rb +103 -0
  130. data/ui/src/hokusai/blocks/selectable.rb +77 -0
  131. data/ui/src/hokusai/blocks/svg.rb +20 -0
  132. data/ui/src/hokusai/blocks/text.rb +214 -0
  133. data/ui/src/hokusai/blocks/titlebar/osx.rb +145 -0
  134. data/ui/src/hokusai/blocks/toggle.rb +55 -0
  135. data/ui/src/hokusai/blocks/vblock.rb +35 -0
  136. data/ui/src/hokusai/commands/base.rb +22 -0
  137. data/ui/src/hokusai/commands/circle.rb +47 -0
  138. data/ui/src/hokusai/commands/image.rb +45 -0
  139. data/ui/src/hokusai/commands/rect.rb +158 -0
  140. data/ui/src/hokusai/commands/scissor.rb +22 -0
  141. data/ui/src/hokusai/commands/text.rb +92 -0
  142. data/ui/src/hokusai/commands.rb +87 -0
  143. data/ui/src/hokusai/diff.rb +124 -0
  144. data/ui/src/hokusai/error.rb +3 -0
  145. data/ui/src/hokusai/event.rb +54 -0
  146. data/ui/src/hokusai/events/keyboard.rb +84 -0
  147. data/ui/src/hokusai/events/mouse.rb +172 -0
  148. data/ui/src/hokusai/font.rb +280 -0
  149. data/ui/src/hokusai/meta.rb +152 -0
  150. data/ui/src/hokusai/mounting/loop_entry.rb +230 -0
  151. data/ui/src/hokusai/mounting/mount_entry.rb +74 -0
  152. data/ui/src/hokusai/mounting/update_entry.rb +101 -0
  153. data/ui/src/hokusai/node.rb +98 -0
  154. data/ui/src/hokusai/node_mounter.rb +102 -0
  155. data/ui/src/hokusai/painter.rb +214 -0
  156. data/ui/src/hokusai/publisher.rb +32 -0
  157. data/ui/src/hokusai/style.rb +72 -0
  158. data/ui/src/hokusai/types.rb +266 -0
  159. data/ui/src/hokusai/util/clamping_iterator.rb +202 -0
  160. data/ui/src/hokusai/util/piece_table.rb +111 -0
  161. data/ui/src/hokusai/util/selection.rb +145 -0
  162. data/ui/src/hokusai.rb +120 -0
  163. data/ui/vendor/.gitkeep +0 -0
  164. data/vendor/.gitkeep +0 -0
  165. data/xmake.lua +192 -0
  166. metadata +222 -0
data/xmake.lua ADDED
@@ -0,0 +1,192 @@
1
+ package("tree-sitter")
2
+ add_deps("make")
3
+ set_policy("package.install_always", true)
4
+ add_urls("https://github.com/tree-sitter/tree-sitter/archive/refs/tags/$(version).zip")
5
+ add_versions("v0.24.4", "b014d853193482c72e3eca12d98dddde57840ae73a8f6a6155605531e180be54")
6
+ on_install(function(package)
7
+ os.mkdir(string.format("%s/vendor/include", os:projectdir()))
8
+ os.mkdir(string.format("%s/vendor/lib", os:projectdir()))
9
+ os.execv("make install", {}, {envs={PREFIX=string.format("%s/vendor", os.projectdir())}})
10
+ end)
11
+ package_end()
12
+
13
+ package("raylib")
14
+ set_policy("package.install_always", true)
15
+ set_homepage("http://www.raylib.com")
16
+ set_description("A simple and easy-to-use library to enjoy videogames programming.")
17
+
18
+ add_urls("https://github.com/raysan5/raylib/archive/$(version).tar.gz",
19
+ "https://github.com/raysan5/raylib.git")
20
+ add_versions("5.5", "163378604f2293ea5ebf3238f50c8926addde72d1a6bc8998ac2e96074ba8af8")
21
+ add_deps("cmake >=3.11")
22
+
23
+ if is_plat("macosx") then
24
+ add_frameworks("CoreVideo", "CoreGraphics", "AppKit", "IOKit", "CoreFoundation", "Foundation")
25
+ elseif is_plat("windows", "mingw") then
26
+ add_syslinks("gdi32", "user32", "winmm", "shell32")
27
+ elseif is_plat("linux") then
28
+ add_syslinks("pthread", "dl", "m")
29
+ add_deps("libx11", "libxrandr", "libxrender", "libxinerama", "libxcursor", "libxi", "libxfixes", "libxext")
30
+ end
31
+ add_deps("opengl", {optional = true})
32
+
33
+ on_install("windows", "linux", "macosx|arm64", "macosx|x86_64", "mingw", function (package)
34
+ local configs = {"-DBUILD_EXAMPLES=OFF"}
35
+ table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
36
+ table.insert(configs, "-DBUILD_SHARED_LIBS=ON")
37
+ import("package.tools.cmake").install(package, configs, {packagedeps = {"libx11", "libxrender", "libxrandr", "libxinerama", "libxcursor", "libxi", "libxfixes", "libxext"}})
38
+ os.cp("include/*.h", "vendor/include/.")
39
+ os.cp(string.format("%s/libraylib.*", package:installdir("lib")), string.format("%s/vendor/lib", os:projectdir()))
40
+ end)
41
+ package_end()
42
+
43
+ package("libsdl")
44
+ add_deps("make")
45
+ set_policy("package.install_always", true)
46
+ add_urls("https://github.com/libsdl-org/SDL/releases/download/release-$(version)/SDL2-$(version).zip")
47
+ add_versions("2.30.9", "ec855bcd815b4b63d0c958c42c2923311c656227d6e0c1ae1e721406d346444b")
48
+ on_install(function(package)
49
+ os.mkdir("build")
50
+ os.cd("build")
51
+ os.execv("../configure", {"--prefix=" .. string.format("%s/vendor", os.projectdir())}, {})
52
+ os.exec("make")
53
+ os.exec("make install")
54
+ end)
55
+ package_end()
56
+
57
+ package("libsdl_gfx")
58
+ add_deps("make")
59
+ set_policy("package.install_always", true)
60
+ add_urls("https://www.ferzkopp.net/Software/SDL2_gfx/SDL2_gfx-$(version).zip")
61
+ add_versions("1.0.4", "b6da07583b7fb8f4d8cee97cac9176b97a287f56a8112e22f38183ecf47b9dcb")
62
+ on_install(function(package)
63
+ os.exec("bash autogen.sh")
64
+ os.execv("./configure", {"--prefix=" .. string.format("%s/vendor", os.projectdir())}, {envs = {LIBRARY_PATH = string.format("%s/vendor/lib", os:projectdir())}})
65
+ os.exec("make")
66
+ os.exec("make install")
67
+ end)
68
+ package_end()
69
+
70
+ package("libsdl_ttf")
71
+ add_deps("make")
72
+ set_policy("package.install_always", true)
73
+ add_urls("https://github.com/libsdl-org/SDL_ttf/releases/download/release-$(version)/SDL2_ttf-$(version).zip")
74
+ add_versions("2.22.0", "5766070145111cb047807fa3f91c2c6b81bc1008d63817e100417959b42a2484")
75
+ on_install(function(package)
76
+ os.execv("./configure", {"--prefix=" .. string.format("%s/vendor", os.projectdir())}, {envs = {LIBRARY_PATH = string.format("%s/vendor/lib", os:projectdir())}})
77
+ os.exec("make")
78
+ os.exec("make install")
79
+ end)
80
+ package_end()
81
+
82
+ package("libsdl_image")
83
+ add_deps("make")
84
+ set_policy("package.install_always", true)
85
+ add_urls("https://www.libsdl.org/projects/SDL_image/release/SDL2_image-$(version).zip")
86
+ add_versions("2.8.2", "2196ad6665b68fc453a659e172d67fbf18d548277aa07344dfd2deed9d9b84bd")
87
+ on_install(function(package)
88
+ os.exec("bash autogen.sh")
89
+ os.execv("./configure", {"--prefix=" .. string.format("%s/vendor", os.projectdir())}, {envs = {LIBRARY_PATH = string.format("%s/vendor/lib", os:projectdir())}})
90
+ os.exec("make")
91
+ os.exec("make install")
92
+ end)
93
+ package_end()
94
+
95
+ package("md4c")
96
+ set_license("MIT")
97
+ add_urls("https://github.com/mity/md4c.git")
98
+ -- add_versions("2024.02.25", "481fbfbdf72daab2912380d62bb5f2187d438408")
99
+ add_deps("cmake")
100
+
101
+ on_install(function (package)
102
+ local configs = {}
103
+ table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
104
+ table.insert(configs, "-DBUILD_SHARED_LIBS=OFF")
105
+ import("package.tools.cmake").install(package, configs)
106
+ os.mkdir(string.format("%s/vendor/include", os:projectdir()))
107
+ os.mkdir(string.format("%s/vendor/lib", os:projectdir()))
108
+ os.cp(string.format("%s/*", package:installdir("include")), string.format("%s/vendor/include", os:projectdir()))
109
+ os.cp(string.format("%s/*", package:installdir("lib")), string.format("%s/vendor/lib", os:projectdir()))
110
+ end)
111
+ package_end()
112
+
113
+ target("hokusai")
114
+ set_kind("shared")
115
+ add_rules("@myraylib/install_locally")
116
+ add_includedirs("ast/include", "ast/src", "grammar/src", "./vendor/include")
117
+ add_linkdirs("$(projectdir)/vendor/lib")
118
+ add_rpathdirs("$(buildir)/lib")
119
+ add_links("libtree-sitter.a")
120
+ add_links("libmd4c.a")
121
+ add_files(
122
+ "ast/src/core/hml.c",
123
+ "ast/src/core/ast.c",
124
+ "ast/src/core/style.c",
125
+ "ast/src/core/input.c",
126
+ "ast/src/core/component.c",
127
+ "ast/src/core/util.c",
128
+ "ast/src/core/text.c",
129
+ "grammar/src/parser.c",
130
+ "grammar/src/scanner.c",
131
+ "ast/include/hashmap.c"
132
+ )
133
+ after_build(function(target)
134
+ os.exec("cp -r %s $(projectdir)/vendor/lib/%s", target:targetfile(), target:filename())
135
+ end)
136
+ target_end()
137
+
138
+ target("test-grammar")
139
+ set_group("test")
140
+ on_build(function(target) end)
141
+ after_build(function(target)
142
+ os.cd("grammar")
143
+ os.exec("npm run test")
144
+ end)
145
+ target_end()
146
+
147
+ target("test-ast")
148
+ set_kind("binary")
149
+ set_group("test")
150
+ add_rpathdirs(string.format("%s/vendor/lib", os:projectdir()))
151
+ add_ldflags(string.format("-L%s/vendor/lib -ltree-sitter", os:projectdir()), {force = true})
152
+ add_includedirs("ast/include", "ast/src", "grammar/src", "./vendor/include")
153
+ add_links("vendor/lib/libmd4c.a")
154
+ add_files(
155
+ "ast/test/hokusai.c",
156
+ "grammar/src/parser.c",
157
+ "grammar/src/scanner.c",
158
+ "ast/include/hashmap.c"
159
+ )
160
+ -- add_cflags("-Wall -Werror")
161
+ after_build(function(target)
162
+ os.exec("./%s -t markdown", target:targetfile())
163
+ -- os.exec("leaks -atExit -- %s", target:targetfile())
164
+ end)
165
+ target_end()
166
+
167
+ target("rspec")
168
+ set_group("test")
169
+ add_deps("test-ast")
170
+ on_build(function(target) end)
171
+ after_build(function(target)
172
+ os.addenv("LD_LIBRARY_PATH", "vendor/lib")
173
+ os.execv("bundle", {"exec", "rspec"}, {shell = "true"})
174
+ end)
175
+ target_end()
176
+
177
+ task("demo")
178
+ on_run(function ()
179
+ import("core.base.option")
180
+ os.addenv("LD_LIBRARY_PATH", "vendor/lib")
181
+ os.execv("bundle", {"exec", "ruby", "--yjit", string.format("ui/examples/%s.rb", option.get("program"))}, {shell = "true"})
182
+ end)
183
+
184
+ set_menu {
185
+ usage = "xmake demo [options]"
186
+ , description = "run demo"
187
+ , options =
188
+ {
189
+ {nil, "program", "v", nil, "the type of demo [counter|image]" }
190
+ }
191
+ }
192
+ task_end()
metadata ADDED
@@ -0,0 +1,222 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hokusai-zero
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - skinnyjames
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2025-01-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ffi
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ description:
28
+ email: zero@skinnyjames.net
29
+ executables: []
30
+ extensions:
31
+ - ext/extconf.rb
32
+ extra_rdoc_files: []
33
+ files:
34
+ - Dockerfile
35
+ - Gemfile
36
+ - Gemfile.lock
37
+ - LICENSE
38
+ - README.md
39
+ - ast/genheader
40
+ - ast/include/hashmap.c
41
+ - ast/include/hashmap.c.license
42
+ - ast/include/hashmap.h
43
+ - ast/src/core/ast.c
44
+ - ast/src/core/ast.h
45
+ - ast/src/core/common.h
46
+ - ast/src/core/component.c
47
+ - ast/src/core/component.h
48
+ - ast/src/core/hml.c
49
+ - ast/src/core/hml.h
50
+ - ast/src/core/input.c
51
+ - ast/src/core/input.h
52
+ - ast/src/core/style.c
53
+ - ast/src/core/style.h
54
+ - ast/src/core/text.c
55
+ - ast/src/core/text.h
56
+ - ast/src/core/util.c
57
+ - ast/src/core/util.h
58
+ - ast/src/hokusai.c
59
+ - ast/src/hokusai.h
60
+ - ast/test/fixtures/test.ui
61
+ - ast/test/greatest.h
62
+ - ast/test/hokusai.c
63
+ - ast/test/parser.c
64
+ - ast/test/text.c
65
+ - ext/extconf.rb
66
+ - grammar/Cargo.lock
67
+ - grammar/Cargo.toml
68
+ - grammar/binding.gyp
69
+ - grammar/bindings/node/binding.cc
70
+ - grammar/bindings/node/index.js
71
+ - grammar/bindings/rust/build.rs
72
+ - grammar/bindings/rust/lib.rs
73
+ - grammar/corpus/1_document.txt
74
+ - grammar/corpus/2_selectors.txt
75
+ - grammar/corpus/3_spaces.txt
76
+ - grammar/corpus/4_errors.txt
77
+ - grammar/corpus/5_macros.txt
78
+ - grammar/corpus/6_styles.txt
79
+ - grammar/grammar.js
80
+ - grammar/package-lock.json
81
+ - grammar/package.json
82
+ - grammar/src/grammar.json
83
+ - grammar/src/node-types.json
84
+ - grammar/src/parser.c
85
+ - grammar/src/scanner.c
86
+ - grammar/src/tree_sitter/parser.h
87
+ - grammar/src/tree_sitter/scanner.h
88
+ - grammar/test.nml
89
+ - hokusai.gemspec
90
+ - ui/examples/assets/DigitalDisplay.ttf
91
+ - ui/examples/assets/OpenSans-Regular.ttf
92
+ - ui/examples/assets/addy.png
93
+ - ui/examples/assets/baby_sean.png
94
+ - ui/examples/assets/football-troll.png
95
+ - ui/examples/assets/gear.png
96
+ - ui/examples/assets/icecold.ttf
97
+ - ui/examples/assets/science-troll.png
98
+ - ui/examples/buddy.rb
99
+ - ui/examples/clock.rb
100
+ - ui/examples/counter.rb
101
+ - ui/examples/dynamic.rb
102
+ - ui/examples/foobar.rb
103
+ - ui/examples/stock.rb
104
+ - ui/examples/stock_decider/option.rb
105
+ - ui/examples/tic_tac_toe.rb
106
+ - ui/lib/lib_hokusai.rb
107
+ - ui/spec/hokusai/ast_spec.rb
108
+ - ui/spec/hokusai/automation/keys_transcoder_spec.rb
109
+ - ui/spec/hokusai/automation/selector_spec.rb
110
+ - ui/spec/hokusai/block_spec.rb
111
+ - ui/spec/hokusai/directives_spec.rb
112
+ - ui/spec/hokusai/e2e/client_spec.rb
113
+ - ui/spec/hokusai/e2e/meta_spec.rb
114
+ - ui/spec/hokusai/publisher_spec.rb
115
+ - ui/spec/hokusai/slots_spec.rb
116
+ - ui/spec/hokusai/util/piece_table_spec.rb
117
+ - ui/spec/hokusai_spec.rb
118
+ - ui/spec/spec_helper.rb
119
+ - ui/src/hokusai.rb
120
+ - ui/src/hokusai/ast.rb
121
+ - ui/src/hokusai/automation.rb
122
+ - ui/src/hokusai/automation/client.rb
123
+ - ui/src/hokusai/automation/constants.rb
124
+ - ui/src/hokusai/automation/converters/selector_converter.rb
125
+ - ui/src/hokusai/automation/driver.rb
126
+ - ui/src/hokusai/automation/driver_command_queue.rb
127
+ - ui/src/hokusai/automation/driver_commands/base.rb
128
+ - ui/src/hokusai/automation/driver_commands/get_attribute.rb
129
+ - ui/src/hokusai/automation/driver_commands/invoke.rb
130
+ - ui/src/hokusai/automation/driver_commands/locate.rb
131
+ - ui/src/hokusai/automation/driver_commands/trigger_keyboard.rb
132
+ - ui/src/hokusai/automation/driver_commands/trigger_mouse.rb
133
+ - ui/src/hokusai/automation/keys_transcoder.rb
134
+ - ui/src/hokusai/automation/selector.rb
135
+ - ui/src/hokusai/automation/server.rb
136
+ - ui/src/hokusai/backends/raylib.rb
137
+ - ui/src/hokusai/backends/raylib/config.rb
138
+ - ui/src/hokusai/backends/raylib/font.rb
139
+ - ui/src/hokusai/backends/raylib/keys.rb
140
+ - ui/src/hokusai/backends/sdl2.rb
141
+ - ui/src/hokusai/backends/sdl2/Monaco.ttf
142
+ - ui/src/hokusai/backends/sdl2/color.rb
143
+ - ui/src/hokusai/backends/sdl2/config.rb
144
+ - ui/src/hokusai/backends/sdl2/font.rb
145
+ - ui/src/hokusai/backends/sdl2/keys.rb
146
+ - ui/src/hokusai/block.rb
147
+ - ui/src/hokusai/blocks/button.rb
148
+ - ui/src/hokusai/blocks/checkbox.rb
149
+ - ui/src/hokusai/blocks/circle.rb
150
+ - ui/src/hokusai/blocks/clipped.rb
151
+ - ui/src/hokusai/blocks/cursor.rb
152
+ - ui/src/hokusai/blocks/dynamic.rb
153
+ - ui/src/hokusai/blocks/empty.rb
154
+ - ui/src/hokusai/blocks/hblock.rb
155
+ - ui/src/hokusai/blocks/image.rb
156
+ - ui/src/hokusai/blocks/input.rb
157
+ - ui/src/hokusai/blocks/label.rb
158
+ - ui/src/hokusai/blocks/panel.rb
159
+ - ui/src/hokusai/blocks/rect.rb
160
+ - ui/src/hokusai/blocks/scissor_begin.rb
161
+ - ui/src/hokusai/blocks/scissor_end.rb
162
+ - ui/src/hokusai/blocks/scrollbar.rb
163
+ - ui/src/hokusai/blocks/selectable.rb
164
+ - ui/src/hokusai/blocks/svg.rb
165
+ - ui/src/hokusai/blocks/text.rb
166
+ - ui/src/hokusai/blocks/titlebar/osx.rb
167
+ - ui/src/hokusai/blocks/toggle.rb
168
+ - ui/src/hokusai/blocks/vblock.rb
169
+ - ui/src/hokusai/commands.rb
170
+ - ui/src/hokusai/commands/base.rb
171
+ - ui/src/hokusai/commands/circle.rb
172
+ - ui/src/hokusai/commands/image.rb
173
+ - ui/src/hokusai/commands/rect.rb
174
+ - ui/src/hokusai/commands/scissor.rb
175
+ - ui/src/hokusai/commands/text.rb
176
+ - ui/src/hokusai/diff.rb
177
+ - ui/src/hokusai/error.rb
178
+ - ui/src/hokusai/event.rb
179
+ - ui/src/hokusai/events/keyboard.rb
180
+ - ui/src/hokusai/events/mouse.rb
181
+ - ui/src/hokusai/font.rb
182
+ - ui/src/hokusai/meta.rb
183
+ - ui/src/hokusai/mounting/loop_entry.rb
184
+ - ui/src/hokusai/mounting/mount_entry.rb
185
+ - ui/src/hokusai/mounting/update_entry.rb
186
+ - ui/src/hokusai/node.rb
187
+ - ui/src/hokusai/node_mounter.rb
188
+ - ui/src/hokusai/painter.rb
189
+ - ui/src/hokusai/publisher.rb
190
+ - ui/src/hokusai/style.rb
191
+ - ui/src/hokusai/types.rb
192
+ - ui/src/hokusai/util/clamping_iterator.rb
193
+ - ui/src/hokusai/util/piece_table.rb
194
+ - ui/src/hokusai/util/selection.rb
195
+ - ui/vendor/.gitkeep
196
+ - vendor/.gitkeep
197
+ - xmake.lua
198
+ homepage: https://codeberg.org/skinnyjames/hokusai
199
+ licenses:
200
+ - MIT
201
+ metadata:
202
+ source_code_uri: https://codeberg.org/skinnyjames/hokusai
203
+ post_install_message:
204
+ rdoc_options: []
205
+ require_paths:
206
+ - ui/src
207
+ required_ruby_version: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - ">="
210
+ - !ruby/object:Gem::Version
211
+ version: '0'
212
+ required_rubygems_version: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ requirements: []
218
+ rubygems_version: 3.5.22
219
+ signing_key:
220
+ specification_version: 4
221
+ summary: A Ruby library for writing GUI applications
222
+ test_files: []