esruby 0.0.7 → 0.0.8
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/README.md +4 -0
- data/lib/esruby/build.rb +2 -2
- data/resources/cpp/esruby.cpp +33 -46
- data/resources/cpp/esruby.hpp +4 -8
- data/resources/js/esruby.js +12 -40
- data/resources/project_template/config.rb +0 -2
- metadata +2 -3
- data/resources/cpp/main.cpp +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9f97ad43c8652ddb099701a6a3281fc56f35e26
|
4
|
+
data.tar.gz: 115fac3faed60bc8f939dc6b5ceffbda67e27b7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4caa20cb2a49da0317f50544b0f73f0d414368c4fa032d88cfacf01b4e328f3907ae27a06d70984755d0aa5495542f2d6d0de95af51d3e039bc53d78df5e6e07
|
7
|
+
data.tar.gz: 65ade892ebbf6c39ea66960ab6366a980aae6ab61aaddae25f72f55f1c00a910cb4c7b56777d532b79a0fb04a4379901c616f11d362576079368a03330d4fb28
|
data/README.md
CHANGED
@@ -33,6 +33,10 @@ to your `.bashrc` and `.profile`
|
|
33
33
|
* you will now have `www/app.js` and `www/index.html`
|
34
34
|
* a simple way to serve these files would be `ruby -run -e httpd www -p 4444`
|
35
35
|
* the app with be available at http://localhost:4444
|
36
|
+
|
37
|
+
# Binding with JS
|
38
|
+
Explore my [esruby-bind](https://github.com/robfors/esruby-bind) gem that binds the Ruby and JS object space together.
|
39
|
+
|
36
40
|
# License
|
37
41
|
|
38
42
|
This project is distributed under the MIT License. See LICENSE for further details.
|
data/lib/esruby/build.rb
CHANGED
@@ -55,6 +55,7 @@ module ESRuby
|
|
55
55
|
js_files += specification.appended_js_sources
|
56
56
|
end
|
57
57
|
js_files += @configuration.appended_js_sources
|
58
|
+
js_files << "#{gem_directory}/resources/js/esruby.js"
|
58
59
|
js_files
|
59
60
|
end
|
60
61
|
|
@@ -116,8 +117,7 @@ module ESRuby
|
|
116
117
|
RakeFileUtils.sh "#{mrbc} -B app -o #{build_directory}/app.c #{ruby_sources.join(" ")}"
|
117
118
|
RakeFileUtils.sh "emcc --bind -I #{mruby_directory}/include #{build_directory}/app.c -o #{build_directory}/app.o #{build_directory}/emscripten/lib/libmruby.a -lm #{js_arguments} #{optimization_argument} #{closure_argument} #{debug_argument}"
|
118
119
|
RakeFileUtils.sh "emcc -std=c++11 --bind -I #{mruby_directory}/include #{gem_directory}/resources/cpp/esruby.cpp -o #{build_directory}/esruby.o #{build_directory}/emscripten/lib/libmruby.a -lm #{js_arguments} #{optimization_argument} #{closure_argument} #{debug_argument}"
|
119
|
-
RakeFileUtils.sh "emcc
|
120
|
-
RakeFileUtils.sh "emcc --bind -I #{mruby_directory}/include -o #{build_directory}/output.js #{build_directory}/app.o #{build_directory}/esruby.o #{build_directory}/main.o #{build_directory}/emscripten/lib/libmruby.a -lm #{js_arguments} #{optimization_argument} #{closure_argument} #{debug_argument}"
|
120
|
+
RakeFileUtils.sh "emcc --bind -I #{mruby_directory}/include -o #{build_directory}/output.js #{build_directory}/app.o #{build_directory}/esruby.o #{build_directory}/emscripten/lib/libmruby.a -lm #{js_arguments} #{optimization_argument} #{closure_argument} #{debug_argument}"
|
121
121
|
#if build.build_mode == 'production'
|
122
122
|
# sh "java -jar #{PROJECT_DIRECTORY}/emsdk/emscripten/incoming/third_party/closure-compiler/compiler.jar --js #{build.absolute_build_directory}/output.js --js_output_file #{build.absolute_output}"
|
123
123
|
#else
|
data/resources/cpp/esruby.cpp
CHANGED
@@ -1,64 +1,51 @@
|
|
1
1
|
#include "esruby.hpp"
|
2
2
|
|
3
|
-
ESRuby::
|
3
|
+
mrb_state* ESRuby::_mrb = nullptr;
|
4
|
+
|
5
|
+
void ESRuby::start()
|
4
6
|
{
|
7
|
+
if (_mrb)
|
8
|
+
{
|
9
|
+
printf("Error: ESRuby already started\n");
|
10
|
+
throw std::runtime_error("Error: ESRuby already started");
|
11
|
+
}
|
5
12
|
_mrb = mrb_open();
|
6
13
|
if (!_mrb)
|
14
|
+
{
|
15
|
+
printf("error opening new mrb state\n");
|
7
16
|
throw std::runtime_error("error opening new mrb state");
|
8
|
-
|
17
|
+
}
|
18
|
+
mrb_load_irep(_mrb, app);
|
19
|
+
// print error if any
|
20
|
+
if (_mrb->exc)
|
21
|
+
{
|
22
|
+
mrb_p(_mrb, mrb_obj_value(_mrb->exc));
|
23
|
+
_mrb->exc = 0;
|
24
|
+
throw std::runtime_error("ruby error encountered");
|
25
|
+
}
|
9
26
|
}
|
10
27
|
|
11
|
-
ESRuby
|
28
|
+
void ESRuby::stop()
|
12
29
|
{
|
30
|
+
if (!_mrb)
|
31
|
+
{
|
32
|
+
printf("Error: ESRuby not active\n");
|
33
|
+
throw std::runtime_error("Error: ESRuby not active");
|
34
|
+
}
|
13
35
|
mrb_close(_mrb);
|
14
|
-
|
15
|
-
|
16
|
-
int ESRuby::get_print_level()
|
17
|
-
{
|
18
|
-
return _print_level;
|
19
|
-
}
|
20
|
-
|
21
|
-
void ESRuby::run()
|
22
|
-
{
|
23
|
-
mrb_value result = mrb_load_irep(_mrb, app);
|
24
|
-
|
25
|
-
// print levels:
|
26
|
-
switch(_print_level)
|
36
|
+
// print error if any
|
37
|
+
if (_mrb->exc)
|
27
38
|
{
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
if (_mrb->exc)
|
32
|
-
{
|
33
|
-
mrb_p(_mrb, mrb_obj_value(_mrb->exc));
|
34
|
-
_mrb->exc = 0;
|
35
|
-
}
|
36
|
-
break;
|
37
|
-
case 2: // print errors and results
|
38
|
-
if (_mrb->exc)
|
39
|
-
{
|
40
|
-
mrb_p(_mrb, mrb_obj_value(_mrb->exc));
|
41
|
-
_mrb->exc = 0;
|
42
|
-
}
|
43
|
-
mrb_p(_mrb, result);
|
44
|
-
break;
|
39
|
+
mrb_p(_mrb, mrb_obj_value(_mrb->exc));
|
40
|
+
_mrb->exc = 0;
|
41
|
+
throw std::runtime_error("ruby error encountered");
|
45
42
|
}
|
46
43
|
}
|
47
44
|
|
48
|
-
void ESRuby::set_print_level(int new_print_level)
|
49
|
-
{
|
50
|
-
if (new_print_level >= 0 && new_print_level <= 2)
|
51
|
-
_print_level = new_print_level;
|
52
|
-
else
|
53
|
-
throw std::runtime_error("print level not valid");
|
54
|
-
}
|
55
|
-
|
56
45
|
EMSCRIPTEN_BINDINGS(esruby)
|
57
46
|
{
|
58
|
-
emscripten::class_<ESRuby>("
|
59
|
-
.
|
60
|
-
.
|
61
|
-
.function("run", &ESRuby::run)
|
62
|
-
.function("set_print_level", &ESRuby::set_print_level)
|
47
|
+
emscripten::class_<ESRuby>("ESRuby")
|
48
|
+
.class_function("start", &ESRuby::start)
|
49
|
+
.class_function("stop", &ESRuby::stop)
|
63
50
|
;
|
64
51
|
}
|
data/resources/cpp/esruby.hpp
CHANGED
@@ -26,16 +26,12 @@ class ESRuby
|
|
26
26
|
|
27
27
|
public:
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
int get_print_level();
|
32
|
-
void run();
|
33
|
-
void set_print_level(int new_print_level);
|
29
|
+
static void start();
|
30
|
+
static void stop();
|
34
31
|
|
35
|
-
|
32
|
+
private:
|
36
33
|
|
37
|
-
mrb_state* _mrb;
|
38
|
-
int _print_level;
|
34
|
+
static mrb_state* _mrb;
|
39
35
|
|
40
36
|
};
|
41
37
|
|
data/resources/js/esruby.js
CHANGED
@@ -1,45 +1,17 @@
|
|
1
|
-
ESRuby
|
1
|
+
class ESRuby
|
2
2
|
{
|
3
|
-
|
3
|
+
|
4
|
+
static start()
|
4
5
|
{
|
5
|
-
|
6
|
-
return ESRuby.instance;
|
7
|
-
|
6
|
+
Module.ESRuby.start();
|
8
7
|
}
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
{
|
14
|
-
this.print_level = opts.print_level;
|
15
|
-
}
|
16
|
-
this.mrb = _mrb_open();
|
17
|
-
_esruby_internal_setup(this.mrb);
|
18
|
-
};
|
19
|
-
|
20
|
-
ESRUBY.prototype.close = function()
|
21
|
-
{
|
22
|
-
_mrb_close(this.mrb);
|
23
|
-
};
|
24
|
-
|
25
|
-
ESRUBY.prototype.run = function()
|
26
|
-
{
|
27
|
-
_esruby_internal_run(this.mrb, this.print_level);
|
28
|
-
};
|
29
|
-
|
30
|
-
ESRUBY.prototype.set_print_level = function(level)
|
31
|
-
{
|
32
|
-
if (level >= 0) this.print_level = level;
|
33
|
-
};
|
34
|
-
|
35
|
-
|
36
|
-
if (typeof window === 'object')
|
37
|
-
{
|
38
|
-
window['ESRUBY'] = ESRUBY;
|
39
|
-
}
|
40
|
-
else
|
41
|
-
{
|
42
|
-
global['ESRUBY'] = ESRUBY;
|
43
|
-
}
|
9
|
+
static stop()
|
10
|
+
{
|
11
|
+
Module.ESRuby.stop();
|
44
12
|
}
|
45
|
-
|
13
|
+
|
14
|
+
}
|
15
|
+
|
16
|
+
window.addEventListener("load", ESRuby.start);
|
17
|
+
window.addEventListener("unload", ESRuby.stop);
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: esruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rob Fors
|
@@ -44,7 +44,6 @@ files:
|
|
44
44
|
- resources/build_config.eruby
|
45
45
|
- resources/cpp/esruby.cpp
|
46
46
|
- resources/cpp/esruby.hpp
|
47
|
-
- resources/cpp/main.cpp
|
48
47
|
- resources/js/esruby.js
|
49
48
|
- resources/mruby/AUTHORS
|
50
49
|
- resources/mruby/CONTRIBUTING.md
|
@@ -442,7 +441,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
442
441
|
version: '0'
|
443
442
|
requirements: []
|
444
443
|
rubyforge_project:
|
445
|
-
rubygems_version: 2.
|
444
|
+
rubygems_version: 2.6.11
|
446
445
|
signing_key:
|
447
446
|
specification_version: 4
|
448
447
|
summary: Ruby running in the browser
|