web-repl 0.9 → 0.10.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.
- 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:
|