web-repl 0.9 → 0.10.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/web-repl +1 -1
- data/js/replConnection-0.10.1.min.js +1 -0
- data/lib/web-repl.rb +2 -2
- data/test/helper.rb +2 -3
- data/test/messenger_test.rb +9 -11
- data/test/repl_test.rb +1 -2
- metadata +72 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6a0ad277ec5784183b51b03e62b06cfb0e37dc2
|
4
|
+
data.tar.gz: 627b30b062576ee663088ed9d4e63f27e8ccb620
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72f65b498afe760381f2c2d73610f8124b00b3867f9edda0f981701ee055006cad4befaa1798dc1c7a036d5c1025f6badc03fd45c3c1bf87464799222adb8b2b
|
7
|
+
data.tar.gz: 8f0b40f894d64462abd7a5789a7a5e65ba19e615eba1bca1fa648574947da04004f75cfba8f331b2cd7a3df235afac0b977c6c31d176d3817e7e5f6b1b97606c
|
data/bin/web-repl
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
function ReplConnection(e,t,n){n="undefined"==typeof n?{}:n,this.debug=!!n.debug,this.reconnect=!!n.reconnect,this.retryTime=n.retryTime||1e3,this.evalFunction=n.evalFunction,this.host=e,this.port=t,this.active=!1,this.socket,this.supported="WebSocket"in window,console.log(this.supported?"REPL: socket ok":"REPL: socket not supported")}ReplConnection.prototype.eval=function(statement){options="undefined"==typeof options?{}:options;var response={};try{response.value="function"==typeof this.evalFunction?this.evalFunction(statement):eval(statement)}catch(err){response.error=err.message}return response},ReplConnection.prototype.initSocket=function(e){void 0!==this.socket&&null!==this.socket&&this.socket.close();var t="ws://"+this.host+":"+this.port+"/echo";this.socket=new WebSocket(t),e()},ReplConnection.prototype.handleSocketOpen=function(){this.active=!0,console.log("REPL: socket ready")},ReplConnection.prototype.tryConnection=function(){if(console.log("REPL: waiting for connection"),this.reconnect){var e=this;window.setTimeout(function(){e.start()},this.retryTime)}},ReplConnection.prototype.handleSocketClose=function(){this.active?(console.log("REPL: socket closed"),this.active=!1,this.reconnect&&this.tryConnection()):this.tryConnection()},ReplConnection.prototype.convertTimestamp=function(e){var t=e.timestamp;return e.timestamp=new Date(t),e.timestamp},ReplConnection.prototype.handleMessageReceived=function(e){this.debug&&(console.log("REPL: message received"),console.log(e));var t=JSON.parse(e.data);this.convertTimestamp(t);var n=this.eval(t.statement);return this.send(n)},ReplConnection.prototype.send=function(e){var t=this.prepareJSON(e);return this.debug&&(console.log("REPL: sending"),console.log(t)),this.socket.send(t)},ReplConnection.prototype.prepareJSON=function(e){var t;try{e.timestamp=(new Date).getTime(),t=JSON.stringify(e)}catch(n){t=this.handleJsonError(e,n)}return t},ReplConnection.prototype.handleJsonError=function(e,t){return e.value=null,e.error=t.message,this.prepareJSON(e)},ReplConnection.prototype.initEventHandling=function(){var e=this;this.socket.onopen=function(){e.handleSocketOpen()},this.socket.onclose=function(t){e.handleSocketClose(t)},this.socket.onmessage=function(t){e.handleMessageReceived(t)}},ReplConnection.prototype.start=function(e){if(this.supported){var t=this;this.initSocket(function(){t.initEventHandling(),void 0!==e&&e(t)})}};
|
data/lib/web-repl.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
require "colorize"
|
3
3
|
require "em-websocket"
|
4
4
|
require "json"
|
5
|
-
require "readline"
|
5
|
+
require "readline" unless defined?(Readline)
|
6
6
|
require "socket"
|
7
7
|
|
8
8
|
# classes
|
@@ -13,7 +13,7 @@ require "web-repl/repl"
|
|
13
13
|
# A Javascript REPL that runs in Ruby. Evaluation is done by a web browser instance.
|
14
14
|
module WebRepl
|
15
15
|
|
16
|
-
VERSION = "0.
|
16
|
+
VERSION = "0.10.1"
|
17
17
|
|
18
18
|
# Shortcut to REPL.start
|
19
19
|
def self.start(*a)
|
data/test/helper.rb
CHANGED
data/test/messenger_test.rb
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
require "helper"
|
2
2
|
|
3
|
-
class WebRepl::MessengerTest < Test
|
4
|
-
|
5
|
-
include WebRepl
|
3
|
+
class WebRepl::MessengerTest < Minitest::Test
|
6
4
|
|
7
5
|
context "Messenger" do
|
8
6
|
|
9
7
|
setup do
|
10
8
|
@socket = Object.new
|
11
|
-
@messager = Messenger.new(@socket)
|
9
|
+
@messager = WebRepl::Messenger.new(@socket)
|
12
10
|
end
|
13
11
|
|
14
12
|
context "#in" do
|
@@ -19,27 +17,27 @@ class WebRepl::MessengerTest < Test::Unit::TestCase
|
|
19
17
|
end
|
20
18
|
|
21
19
|
should "convert from String to Hash" do
|
22
|
-
|
20
|
+
refute_nil @result
|
23
21
|
assert_equal Hash, @result.class
|
24
22
|
assert_equal "blah", @result[:value]
|
25
23
|
end
|
26
24
|
|
27
25
|
should "convert timestamp from js time to ruby" do
|
28
26
|
timestamp = @result[:timestamp]
|
29
|
-
|
27
|
+
refute_nil timestamp
|
30
28
|
assert_equal Time, timestamp.class
|
31
29
|
assert_equal 2014, timestamp.year
|
32
30
|
assert_equal 4, timestamp.month
|
33
31
|
assert_equal 22, timestamp.hour
|
34
32
|
end
|
35
|
-
|
33
|
+
|
36
34
|
end
|
37
35
|
|
38
36
|
context "#new_timestamp" do
|
39
37
|
|
40
38
|
should "be js int time format" do
|
41
39
|
result = @messager.new_timestamp
|
42
|
-
|
40
|
+
refute_nil result
|
43
41
|
assert_equal Fixnum, result.class
|
44
42
|
assert result.to_s.size > Time.new.to_i.to_s.size
|
45
43
|
assert_equal (result / 1000).to_s.size, Time.new.to_i.to_s.size
|
@@ -64,12 +62,12 @@ class WebRepl::MessengerTest < Test::Unit::TestCase
|
|
64
62
|
should "generate new timestamp" do
|
65
63
|
@socket.expects(:send).once
|
66
64
|
@messager.out(@message)
|
67
|
-
|
65
|
+
refute_nil @message[:timestamp]
|
68
66
|
assert_equal Fixnum, @message[:timestamp].class
|
69
67
|
end
|
70
68
|
|
71
69
|
should "return nil if fails" do
|
72
|
-
messager = Messenger.new(nil)
|
70
|
+
messager = WebRepl::Messenger.new(nil)
|
73
71
|
result = messager.out(@message)
|
74
72
|
assert_nil result
|
75
73
|
end
|
@@ -77,7 +75,7 @@ class WebRepl::MessengerTest < Test::Unit::TestCase
|
|
77
75
|
should "return json string if success" do
|
78
76
|
@socket.expects(:send).once
|
79
77
|
result = @messager.out(@message)
|
80
|
-
|
78
|
+
refute_nil result
|
81
79
|
assert_equal String, result.class
|
82
80
|
end
|
83
81
|
|
data/test/repl_test.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: web-repl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.10.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ari Russo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -16,84 +16,140 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '0.7'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.7.7
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
29
|
+
version: '0.7'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.7.7
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: em-websocket
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
39
|
+
version: '0.5'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.5.1
|
34
43
|
type: :runtime
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
38
47
|
- - "~>"
|
39
48
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
49
|
+
version: '0.5'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 0.5.1
|
41
53
|
- !ruby/object:Gem::Dependency
|
42
54
|
name: rb-readline
|
43
55
|
requirement: !ruby/object:Gem::Requirement
|
44
56
|
requirements:
|
45
57
|
- - "~>"
|
46
58
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
59
|
+
version: '0.5'
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.5.2
|
48
63
|
type: :runtime
|
49
64
|
prerelease: false
|
50
65
|
version_requirements: !ruby/object:Gem::Requirement
|
51
66
|
requirements:
|
52
67
|
- - "~>"
|
53
68
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
69
|
+
version: '0.5'
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 0.5.2
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: minitest
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '5.5'
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 5.5.0
|
83
|
+
type: :development
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '5.5'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 5.5.0
|
55
93
|
- !ruby/object:Gem::Dependency
|
56
94
|
name: mocha
|
57
95
|
requirement: !ruby/object:Gem::Requirement
|
58
96
|
requirements:
|
59
97
|
- - "~>"
|
60
98
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
99
|
+
version: '1.1'
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.1.0
|
62
103
|
type: :development
|
63
104
|
prerelease: false
|
64
105
|
version_requirements: !ruby/object:Gem::Requirement
|
65
106
|
requirements:
|
66
107
|
- - "~>"
|
67
108
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
109
|
+
version: '1.1'
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 1.1.0
|
69
113
|
- !ruby/object:Gem::Dependency
|
70
114
|
name: rake
|
71
115
|
requirement: !ruby/object:Gem::Requirement
|
72
116
|
requirements:
|
73
117
|
- - "~>"
|
74
118
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
119
|
+
version: '10.4'
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 10.4.2
|
76
123
|
type: :development
|
77
124
|
prerelease: false
|
78
125
|
version_requirements: !ruby/object:Gem::Requirement
|
79
126
|
requirements:
|
80
127
|
- - "~>"
|
81
128
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
129
|
+
version: '10.4'
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 10.4.2
|
83
133
|
- !ruby/object:Gem::Dependency
|
84
134
|
name: shoulda-context
|
85
135
|
requirement: !ruby/object:Gem::Requirement
|
86
136
|
requirements:
|
87
137
|
- - "~>"
|
88
138
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
139
|
+
version: '1.2'
|
140
|
+
- - ">="
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 1.2.1
|
90
143
|
type: :development
|
91
144
|
prerelease: false
|
92
145
|
version_requirements: !ruby/object:Gem::Requirement
|
93
146
|
requirements:
|
94
147
|
- - "~>"
|
95
148
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
149
|
+
version: '1.2'
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 1.2.1
|
97
153
|
description: Javascript/Web REPL in Ruby
|
98
154
|
email:
|
99
155
|
- ari.russo@gmail.com
|
@@ -106,6 +162,7 @@ files:
|
|
106
162
|
- README.md
|
107
163
|
- bin/web-repl
|
108
164
|
- js/replConnection-0.1.min.js
|
165
|
+
- js/replConnection-0.10.1.min.js
|
109
166
|
- js/replConnection-0.3.min.js
|
110
167
|
- js/replConnection-0.4.min.js
|
111
168
|
- js/replConnection-0.5.min.js
|
@@ -146,3 +203,4 @@ summary: Javascript/Web REPL in Ruby
|
|
146
203
|
test_files:
|
147
204
|
- test/messenger_test.rb
|
148
205
|
- test/repl_test.rb
|
206
|
+
has_rdoc:
|