javascript 0.0.3 → 0.1.0
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 +5 -5
- data/.travis.yml +1 -1
- data/Gemfile +4 -0
- data/README.md +7 -6
- data/javascript.gemspec +2 -5
- data/lib/javascript.rb +7 -0
- data/lib/javascript/version.rb +1 -1
- data/test/javascript_test.rb +127 -6
- data/test/test_helper.rb +1 -3
- metadata +6 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d801576e68027f6910c308edda3c4c6e20c0ec72517baec732265b3af75a2b25
|
4
|
+
data.tar.gz: d5acd6b2da7f4c87c2507c8260bc78df208b5edaa55a278cae2c514698e4826e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 696cb526b35708eda0e6ebcace8fab9cfe1a941df17c6022c6afaa0a8b42fc68821efa783e6c2a2c39f2cfe62036bc1570fd37d21bf3dd8b0a7200244afbd655
|
7
|
+
data.tar.gz: c1a9d78e2c72cb425137eecf698511ca2a01b0fb7331cf71c97490cee62297824354f90aeb05e0415332d0ebecd0d35f8e992cce5a9d4000c317ce23d98da3e8
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# JavaScript
|
2
2
|
|
3
|
+
[](https://travis-ci.org/chancancode/javascript)
|
4
|
+
|
3
5
|
As much as we love writing Ruby, when you need to *get really close to the
|
4
6
|
metal*, you have no choice but to use JavaScript. With this gem, Rubyists can
|
5
7
|
finally harness the raw power of their machines by programming in JavaScript
|
@@ -32,7 +34,7 @@ javascript {
|
|
32
34
|
|
33
35
|
console.log("ZOMG JavaScript");
|
34
36
|
|
35
|
-
|
37
|
+
let a = 1;
|
36
38
|
|
37
39
|
console.log(a);
|
38
40
|
|
@@ -40,7 +42,7 @@ javascript {
|
|
40
42
|
|
41
43
|
console.log(a);
|
42
44
|
|
43
|
-
|
45
|
+
let b = function(x) {
|
44
46
|
console.log(x + 1);
|
45
47
|
};
|
46
48
|
|
@@ -53,8 +55,8 @@ javascript {
|
|
53
55
|
c(4);
|
54
56
|
|
55
57
|
function inspectArguments() {
|
56
|
-
|
57
|
-
console.log(
|
58
|
+
let args = Array.prototype.join.call(arguments, ", ");
|
59
|
+
console.log(`Arguments: ${args}`);
|
58
60
|
}
|
59
61
|
|
60
62
|
inspectArguments("a", "b", "c");
|
@@ -147,7 +149,6 @@ metal {
|
|
147
149
|
|
148
150
|
* Gives you the illusion of programming in a *closer to the metal* syntax.
|
149
151
|
* The examples in this README [actually work](/test/javascript_test.rb).
|
150
|
-
* [](https://travis-ci.org/vanruby/javascript)
|
151
152
|
|
152
153
|
## Cons
|
153
154
|
|
@@ -156,7 +157,7 @@ metal {
|
|
156
157
|
|
157
158
|
## Contributing
|
158
159
|
|
159
|
-
1. Fork it ( https://github.com/
|
160
|
+
1. Fork it ( https://github.com/chancancode/javascript/fork )
|
160
161
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
161
162
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
162
163
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/javascript.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.description = "With this gem, Rubyists can finally get really close " \
|
13
13
|
"to the metal by programming in JavaScript syntax right " \
|
14
14
|
"within their Ruby applications."
|
15
|
-
spec.homepage = "https://github.com/
|
15
|
+
spec.homepage = "https://github.com/chancancode/javascript"
|
16
16
|
spec.license = "MIT"
|
17
17
|
|
18
18
|
spec.files = `git ls-files -z`.split("\x0")
|
@@ -24,8 +24,5 @@ Gem::Specification.new do |spec|
|
|
24
24
|
|
25
25
|
spec.add_dependency "binding_of_caller", "~> 0.7.0"
|
26
26
|
|
27
|
-
spec.add_development_dependency "bundler", "~> 1.
|
28
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
29
|
-
spec.add_development_dependency "minitest", "~> 5.0"
|
30
|
-
spec.add_development_dependency "activesupport", "~> 4.1.0"
|
27
|
+
spec.add_development_dependency "bundler", "~> 1.16"
|
31
28
|
end
|
data/lib/javascript.rb
CHANGED
@@ -133,9 +133,16 @@ module JavaScript
|
|
133
133
|
nil
|
134
134
|
end
|
135
135
|
|
136
|
+
def let(*identifiers)
|
137
|
+
end
|
138
|
+
|
136
139
|
def var(*identifiers)
|
137
140
|
end
|
138
141
|
|
142
|
+
def `(string)
|
143
|
+
__caller__.eval(string.inspect.gsub(/\$(?={)/, '#'))
|
144
|
+
end
|
145
|
+
|
139
146
|
def new(identifier)
|
140
147
|
::Object.const_get(identifier.name).new(*identifier.args)
|
141
148
|
end
|
data/lib/javascript/version.rb
CHANGED
data/test/javascript_test.rb
CHANGED
@@ -23,15 +23,34 @@ class JavaScriptTest < TestCase
|
|
23
23
|
test "this" do
|
24
24
|
require "javascript"
|
25
25
|
|
26
|
-
javascript
|
26
|
+
javascript {
|
27
27
|
console.log(this === window);
|
28
28
|
console.log(this === global);
|
29
|
-
|
29
|
+
}
|
30
30
|
|
31
31
|
assert_messages true, true
|
32
32
|
end
|
33
33
|
|
34
|
-
test "Local variables" do
|
34
|
+
test "Local variables (let)" do
|
35
|
+
require "javascript"
|
36
|
+
|
37
|
+
javascript {
|
38
|
+
let a = 1, b = 2;
|
39
|
+
|
40
|
+
console.log(a);
|
41
|
+
console.log(b);
|
42
|
+
|
43
|
+
a = a + 1;
|
44
|
+
b = a + b;
|
45
|
+
|
46
|
+
console.log(a);
|
47
|
+
console.log(b);
|
48
|
+
}
|
49
|
+
|
50
|
+
assert_messages 1, 2, 2, 4
|
51
|
+
end
|
52
|
+
|
53
|
+
test "Local variables (var)" do
|
35
54
|
require "javascript"
|
36
55
|
|
37
56
|
javascript {
|
@@ -77,16 +96,30 @@ class JavaScriptTest < TestCase
|
|
77
96
|
assert_nil javascript { window.a; }
|
78
97
|
end
|
79
98
|
|
99
|
+
test "String interpolation" do
|
100
|
+
require "javascript"
|
101
|
+
|
102
|
+
javascript {
|
103
|
+
console.log(`hello world...`);
|
104
|
+
|
105
|
+
let name = "Godfrey";
|
106
|
+
|
107
|
+
console.log(`hello ${name}!`);
|
108
|
+
}
|
109
|
+
|
110
|
+
assert_messages "hello world...", "hello Godfrey!"
|
111
|
+
end
|
112
|
+
|
80
113
|
test "Functions" do
|
81
114
|
require "javascript"
|
82
115
|
|
83
116
|
javascript {
|
84
117
|
var a = function(msg) {
|
85
|
-
console.log(
|
118
|
+
console.log(`a: ${msg}`);
|
86
119
|
};
|
87
120
|
|
88
121
|
function b(msg) {
|
89
|
-
console.log(
|
122
|
+
console.log(`b: ${msg}`);
|
90
123
|
}
|
91
124
|
|
92
125
|
var c = "c";
|
@@ -120,6 +153,94 @@ class JavaScriptTest < TestCase
|
|
120
153
|
assert_messages "Hello world!", 4
|
121
154
|
end
|
122
155
|
|
156
|
+
test "closure (let variables)" do
|
157
|
+
require "javascript"
|
158
|
+
|
159
|
+
javascript {
|
160
|
+
let a = 1;
|
161
|
+
|
162
|
+
function outer(b) {
|
163
|
+
let c = 3;
|
164
|
+
|
165
|
+
function inner(d) {
|
166
|
+
let e = 5;
|
167
|
+
|
168
|
+
console.log(a);
|
169
|
+
console.log(b);
|
170
|
+
console.log(c);
|
171
|
+
console.log(d);
|
172
|
+
console.log(e);
|
173
|
+
};
|
174
|
+
|
175
|
+
inner(4);
|
176
|
+
}
|
177
|
+
|
178
|
+
outer(2);
|
179
|
+
}
|
180
|
+
|
181
|
+
assert_messages 1, 2, 3, 4, 5
|
182
|
+
end
|
183
|
+
|
184
|
+
test "closure (var variables)" do
|
185
|
+
require "javascript"
|
186
|
+
|
187
|
+
javascript {
|
188
|
+
var a = 1;
|
189
|
+
|
190
|
+
function outer(b) {
|
191
|
+
var c = 3;
|
192
|
+
|
193
|
+
function inner(d) {
|
194
|
+
var e = 5;
|
195
|
+
|
196
|
+
console.log(a);
|
197
|
+
console.log(b);
|
198
|
+
console.log(c);
|
199
|
+
console.log(d);
|
200
|
+
console.log(e);
|
201
|
+
};
|
202
|
+
|
203
|
+
inner(4);
|
204
|
+
}
|
205
|
+
|
206
|
+
outer(2);
|
207
|
+
}
|
208
|
+
|
209
|
+
assert_messages 1, 2, 3, 4, 5
|
210
|
+
end
|
211
|
+
|
212
|
+
test "closure (functions)" do
|
213
|
+
require "javascript"
|
214
|
+
|
215
|
+
javascript {
|
216
|
+
function a() {
|
217
|
+
return 1;
|
218
|
+
};
|
219
|
+
|
220
|
+
function outer() {
|
221
|
+
function b() {
|
222
|
+
return 2;
|
223
|
+
}
|
224
|
+
|
225
|
+
function inner() {
|
226
|
+
function c() {
|
227
|
+
return 3;
|
228
|
+
}
|
229
|
+
|
230
|
+
console.log(a());
|
231
|
+
console.log(b());
|
232
|
+
console.log(c());
|
233
|
+
};
|
234
|
+
|
235
|
+
inner();
|
236
|
+
}
|
237
|
+
|
238
|
+
outer();
|
239
|
+
}
|
240
|
+
|
241
|
+
assert_messages 1, 2, 3
|
242
|
+
end
|
243
|
+
|
123
244
|
test "arguments" do
|
124
245
|
require "javascript"
|
125
246
|
|
@@ -231,7 +352,7 @@ class JavaScriptTest < TestCase
|
|
231
352
|
require "javascript"
|
232
353
|
|
233
354
|
javascript {
|
234
|
-
|
355
|
+
let join = Array.prototype.join;
|
235
356
|
|
236
357
|
console.log(join.call(["a", "b", "c"], "+"));
|
237
358
|
console.log(join.call([1, 2, 3, 4, 5], "-"));
|
data/test/test_helper.rb
CHANGED
@@ -6,10 +6,8 @@ require "active_support/testing/declarative"
|
|
6
6
|
require "active_support/testing/setup_and_teardown"
|
7
7
|
require "active_support/testing/isolation"
|
8
8
|
|
9
|
-
I18n.enforce_available_locales = true
|
10
|
-
|
11
9
|
class TestCase < Minitest::Test
|
12
10
|
extend ActiveSupport::Testing::Declarative
|
13
|
-
|
11
|
+
prepend ActiveSupport::Testing::SetupAndTeardown
|
14
12
|
include ActiveSupport::Testing::Isolation
|
15
13
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: javascript
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Godfrey Chan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: binding_of_caller
|
@@ -30,56 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.16'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '10.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '10.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: minitest
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '5.0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '5.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: activesupport
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 4.1.0
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 4.1.0
|
40
|
+
version: '1.16'
|
83
41
|
description: With this gem, Rubyists can finally get really close to the metal by
|
84
42
|
programming in JavaScript syntax right within their Ruby applications.
|
85
43
|
email:
|
@@ -101,7 +59,7 @@ files:
|
|
101
59
|
- test/javascript_test.rb
|
102
60
|
- test/no_conflict_test.rb
|
103
61
|
- test/test_helper.rb
|
104
|
-
homepage: https://github.com/
|
62
|
+
homepage: https://github.com/chancancode/javascript
|
105
63
|
licenses:
|
106
64
|
- MIT
|
107
65
|
metadata: {}
|
@@ -121,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
79
|
version: '0'
|
122
80
|
requirements: []
|
123
81
|
rubyforge_project:
|
124
|
-
rubygems_version: 2.
|
82
|
+
rubygems_version: 2.7.7
|
125
83
|
signing_key:
|
126
84
|
specification_version: 4
|
127
85
|
summary: Harness the raw power of your machine with JavaScript
|
@@ -129,4 +87,3 @@ test_files:
|
|
129
87
|
- test/javascript_test.rb
|
130
88
|
- test/no_conflict_test.rb
|
131
89
|
- test/test_helper.rb
|
132
|
-
has_rdoc:
|