This repository was archived by the owner on Oct 19, 2018. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +22
-13
lines changed Expand file tree Collapse file tree 2 files changed +22
-13
lines changed Original file line number Diff line number Diff line change 2
2
3
3
class CodeMirror < React ::Component ::Base
4
4
param :code , type : String
5
- define_state :output_code
6
5
define_state :error_message
6
+
7
7
before_mount do
8
- state . output_code ! params . code
9
8
state . error_message ! ""
10
9
end
10
+
11
11
after_mount do
12
12
@editor = `CodeMirror(document.getElementById("code"), {
13
13
value: #{params.code},
@@ -18,23 +18,32 @@ class CodeMirror < React::Component::Base
18
18
theme: 'github'
19
19
});`
20
20
`#{@editor}.on('change', #{lambda {on_change} })`
21
+ execute_code
21
22
end
23
+
22
24
render ( DIV ) do
23
25
div ( id : 'code' )
26
+ br
27
+ div ( id : 'result' )
24
28
p { state . error_message }
25
- p { state . output_code }
26
29
end
27
30
28
31
def on_change
29
32
state . error_message ! ""
30
- compiled_code = Opal . compile `#{@editor}.getValue()`
31
- state . output_code ! compiled_code
33
+ execute_code
34
+ end
35
+
36
+ after_mount :execute_code
37
+ after_update :execute_code
38
+
39
+ def execute_code
40
+ compiled_code = Opal ::Compiler . new ( `#{@editor}.getValue()` ) . compile
41
+ `ReactDOM.unmountComponentAtNode(document.getElementById("result"));`
32
42
`eval(#{compiled_code})`
43
+ Element [ '#result' ] . render { Alfie ( ) }
33
44
rescue Exception => e
34
45
@time_out = after ( 0.5 ) do
35
- # Element [ mount_node ] . render { div . playgroundError { e . message } }
36
46
state . error_message ! e . message
37
- state . output_code ! ""
38
47
end
39
48
end
40
49
Original file line number Diff line number Diff line change 1
- < div data-reactrb-mount ="CodeMirror " data-code ="class TestApp < React::Component::Base
2
- param :name
3
- before_mount { @timer = every(1) { force_update! } }
1
+ < div data-reactrb-mount ="CodeMirror " data-code ="class Alfie < React::Component::Base
4
2
render(DIV) do
5
- h1 {'The current time is #{Time.now}'}
6
- h2 { 'here hello #{params.name}' }.on(:click) do
3
+ h1 { 'Alfie is here' }.on(:click) do
7
4
alert 'you clicked'
8
5
end
9
6
end
10
- end "> </ div >
7
+ end
8
+ "> </ div >
9
+
10
+ <!-- Element['#playground'].render{ Alfie() } -->
11
11
12
12
<!-- <form><textarea id="code" name="code">
13
13
class TestApp < React::Component::Base
You can’t perform that action at this time.
0 commit comments