kame-remocon 0.2.5 → 0.2.6
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18ad27c2216af93b47a919d1edfe7f8f85104e4b4b0e8489db78987588f420e9
|
4
|
+
data.tar.gz: 3d707f62afacfb522aa1aa2480705be16ed69b908f925ee97cdf2845ead075c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e343e857259af437ca47568404efbf3fc8e1b713c1412e7767c56b8b0c9790b0bd7d8ba1d548fe147c52b47e6e3a38b0745acaeb40a31a11924a2edad6fafcde
|
7
|
+
data.tar.gz: 4d3975a4252f5ca6995f42ca09a09edad7c18a69b50e506c66111353835604c6b6fb23edc0d9e3d45f0debf2865c925e4f69c0bcf917bb3ccf79309bca270e0d
|
@@ -4,6 +4,7 @@ require_relative "./image"
|
|
4
4
|
|
5
5
|
class Kame::Remocon::Opal::Turtle
|
6
6
|
attr_accessor :default_color
|
7
|
+
attr_reader :code
|
7
8
|
|
8
9
|
class Pos
|
9
10
|
attr_reader :x, :y
|
@@ -59,6 +60,10 @@ class Kame::Remocon::Opal::Turtle
|
|
59
60
|
end
|
60
61
|
end
|
61
62
|
|
63
|
+
def image_data
|
64
|
+
@canvas.image_data
|
65
|
+
end
|
66
|
+
|
62
67
|
def draw_kame
|
63
68
|
(x, y) = @pos.canvas_coordinate
|
64
69
|
|
@@ -70,15 +75,17 @@ class Kame::Remocon::Opal::Turtle
|
|
70
75
|
@context.set_transform(1, 0, 0, 1, 0, 0)
|
71
76
|
end
|
72
77
|
|
73
|
-
def exec(
|
78
|
+
def exec(code, wait=0, &callback)
|
79
|
+
@code = code
|
74
80
|
clear
|
75
81
|
reset
|
76
82
|
commander = Commander.new
|
77
|
-
commander.instance_eval
|
78
|
-
exec_commands(commander.commands, wait: wait)
|
83
|
+
commander.instance_eval code
|
84
|
+
exec_commands(commander.commands, wait: wait, &callback)
|
79
85
|
end
|
80
86
|
|
81
|
-
def exec_commands(commands, wait: nil)
|
87
|
+
def exec_commands(commands, wait: nil, &callback)
|
88
|
+
callback ||= Proc.new {}
|
82
89
|
wait ||= @wait
|
83
90
|
if wait > 0
|
84
91
|
exec = Proc.new do
|
@@ -98,7 +105,10 @@ class Kame::Remocon::Opal::Turtle
|
|
98
105
|
interval = wait * 1000
|
99
106
|
%x(
|
100
107
|
var timer = setInterval(function() {
|
101
|
-
if (!exec()) {
|
108
|
+
if (!exec()) {
|
109
|
+
callback.$call();
|
110
|
+
clearInterval(timer);
|
111
|
+
}
|
102
112
|
}, interval);
|
103
113
|
)
|
104
114
|
else
|
@@ -109,9 +119,11 @@ class Kame::Remocon::Opal::Turtle
|
|
109
119
|
end
|
110
120
|
if @kame.complete
|
111
121
|
draw_kame
|
122
|
+
callback.call
|
112
123
|
else
|
113
124
|
@kame.onload do
|
114
125
|
draw_kame
|
126
|
+
callback.call
|
115
127
|
end
|
116
128
|
end
|
117
129
|
end
|
@@ -21,7 +21,7 @@ class Kame::Remocon::Opal::AppView
|
|
21
21
|
state :bg_color, "black"
|
22
22
|
|
23
23
|
def initialize
|
24
|
-
@
|
24
|
+
@code= <<~PROG
|
25
25
|
pen_down
|
26
26
|
forward 100
|
27
27
|
turn_left 90
|
@@ -33,25 +33,29 @@ class Kame::Remocon::Opal::AppView
|
|
33
33
|
PROG
|
34
34
|
end
|
35
35
|
|
36
|
+
def self.render(parent, &block)
|
37
|
+
Hyalite.render(Kame::Remocon::Opal::AppView.el(on_mounted: block), parent)
|
38
|
+
end
|
39
|
+
|
36
40
|
def mounted(canvas)
|
41
|
+
@canvas = canvas
|
37
42
|
@turtle = Kame::Remocon::Opal::Turtle.new(canvas)
|
38
|
-
@turtle.exec @
|
43
|
+
@turtle.exec @code
|
44
|
+
@code_getter = -> { @refs[:program].value }
|
39
45
|
|
40
46
|
if Kame::Remocon::Opal::Config.ws_enabled?
|
41
47
|
@remote = DRb::DRbObject.new_with_uri "ws://127.0.0.1:9292"
|
42
48
|
DRb.start_service("ws://127.0.0.1:9292/callback")
|
43
49
|
@remote.set_turtle DRb::DRbObject.new(@turtle)
|
44
50
|
end
|
51
|
+
|
52
|
+
@props[:on_mounted]&.call(@turtle, @remote)
|
45
53
|
end
|
46
54
|
|
47
55
|
def exec
|
48
|
-
@
|
56
|
+
@code = @refs[:program].value
|
49
57
|
wait = @refs[:wait][:checked] ? 0.3 : 0
|
50
|
-
@turtle.exec @
|
51
|
-
end
|
52
|
-
|
53
|
-
def create_image
|
54
|
-
set_state(render_image: true)
|
58
|
+
@turtle.exec @code, wait
|
55
59
|
end
|
56
60
|
|
57
61
|
def set_background
|
@@ -61,19 +65,16 @@ class Kame::Remocon::Opal::AppView
|
|
61
65
|
end
|
62
66
|
|
63
67
|
def render
|
64
|
-
|
68
|
+
code = @code
|
65
69
|
render_image = @state[:render_image]
|
66
70
|
bg_color = @state[:bg_color]
|
67
71
|
|
68
72
|
div do
|
69
73
|
div do
|
70
74
|
Kame::Remocon::Opal::CanvasView.el(onMounted: -> canvas { mounted(canvas) }, render_image: render_image, bg_color: bg_color)
|
71
|
-
div({class: "wrap-code-text"}, textarea({style: {width: "400px", height: "400px"}, ref: :program},
|
75
|
+
div({class: "wrap-code-text"}, textarea({style: {width: "400px", height: "400px"}, ref: :program}, code))
|
72
76
|
end
|
73
|
-
|
74
|
-
|
75
|
-
div do
|
76
|
-
h2(nil, "設定")
|
77
|
+
div({class: :setting}) do
|
77
78
|
ul do
|
78
79
|
li do
|
79
80
|
input({type: :checkbox, checked: true, id: :wait, ref: :wait})
|
@@ -84,8 +85,8 @@ class Kame::Remocon::Opal::AppView
|
|
84
85
|
label({for: :bg_color}, "黒背景")
|
85
86
|
end
|
86
87
|
end
|
87
|
-
#button({onClick: -> { create_image }, name: "create_image"}, "画像を作成")
|
88
88
|
end
|
89
|
+
Hyalite.create_element(:p, {class: "exec-button"}, button({onClick: -> { exec }, name: "exec"}, "実行する"))
|
89
90
|
end
|
90
91
|
end
|
91
92
|
end
|
@@ -23,9 +23,6 @@ class Kame::Remocon::Opal::CanvasView
|
|
23
23
|
|
24
24
|
div({class: "wrap-canvas"}) do
|
25
25
|
canvas(width: "400", height: "400", id: :canvas, ref: :canvas, style: {"background-color": bg_color})
|
26
|
-
if image
|
27
|
-
img(src: image, style: {"background-color": bg_color})
|
28
|
-
end
|
29
26
|
end
|
30
27
|
end
|
31
28
|
end
|
data/lib/kame/remocon/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kame-remocon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- youchan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|