41
41
#include "preview-reply.h"
42
42
#include "preview-widget.h"
44
v8::Handle<v8::Object> new_scope(
45
v8::FunctionCallbackInfo<v8::Value> const& args) {
46
if (args.Length() != 2) {
47
throw std::runtime_error("Invalid number of arguments");
49
if (!args[0]->IsString() || !args[1]->IsString()) {
50
throw std::runtime_error("Invalid arguments types");
53
std::string scope_id =
54
*(v8::String::Utf8Value(args[0]->ToString()));
56
if (!boost::ends_with(scope_id, ".ini")) {
57
throw std::runtime_error("Invalid scope id (ini file)");
60
if (!boost::filesystem::path(scope_id).is_absolute()) {
62
boost::filesystem::current_path() /= boost::filesystem::path(scope_id);
64
if (!boost::filesystem::exists(p)) {
65
throw std::runtime_error("Invalid scope id (file not found)");
68
scope_id = p.native();
71
std::string config_file =
72
*(v8::String::Utf8Value(args[1]->ToString()));
75
new JsScope(scope_id, config_file);
77
return v8cpp::export_object<JsScope>(
78
v8::Isolate::GetCurrent(), scope);
45
JavascriptScopeRuntime* new_scope(const std::string& runtime_config) {
46
return new JavascriptScopeRuntime(runtime_config);
81
49
v8::Handle<v8::Object> new_search_query(
88
v8cpp::import_object<CannedQuery>(
56
v8cpp::from_v8<CannedQuery*>(
89
57
v8::Isolate::GetCurrent(),
90
58
args[0]->ToObject());
92
60
SearchMetaData *s =
93
v8cpp::import_object<SearchMetaData>(
61
v8cpp::from_v8<SearchMetaData*>(
94
62
v8::Isolate::GetCurrent(),
95
63
args[1]->ToObject());
131
99
CategoryRenderer* category_renderer = new CategoryRenderer(json_text);
133
return v8cpp::export_object<CategoryRenderer>(
134
v8::Isolate::GetCurrent(), category_renderer);
101
return v8cpp::to_v8(v8::Isolate::GetCurrent(), category_renderer);
137
104
v8::Handle<v8::Object> new_preview_query(v8::FunctionCallbackInfo<v8::Value> const& args) {
139
106
throw std::runtime_error("Invalid number of arguments");
142
Result *r = v8cpp::import_object<Result>(v8::Isolate::GetCurrent(), args[0]->ToObject());
110
v8cpp::from_v8<Result*>(v8::Isolate::GetCurrent(), args[0]->ToObject());
144
112
ActionMetaData *a =
145
v8cpp::import_object<ActionMetaData>(v8::Isolate::GetCurrent(), args[1]->ToObject());
113
v8cpp::from_v8<ActionMetaData*>(v8::Isolate::GetCurrent(), args[1]->ToObject());
148
116
throw std::runtime_error("Invalid arguments types");
168
136
a->get_action_metadata(),
170
138
cancelled_callback);
171
return v8cpp::export_object<PreviewQuery>(v8::Isolate::GetCurrent(), pq);
139
return v8cpp::to_v8(v8::Isolate::GetCurrent(), pq);
174
142
v8::Handle<v8::Object> new_preview_widget(v8::FunctionCallbackInfo<v8::Value> const& args) {
189
157
PreviewWidget* preview_widget =
190
158
new PreviewWidget(id, widget_type);
192
return v8cpp::export_object<PreviewWidget>(
193
v8::Isolate::GetCurrent(), preview_widget);
160
return v8cpp::to_v8(v8::Isolate::GetCurrent(), preview_widget);
196
163
if (!args[0]->IsString()) {
203
170
PreviewWidget* preview_widget =
204
171
new PreviewWidget(definition);
206
return v8cpp::export_object<PreviewWidget>(
207
v8::Isolate::GetCurrent(), preview_widget);
173
return v8cpp::to_v8(v8::Isolate::GetCurrent(), preview_widget);
210
176
v8::Handle<v8::Object> new_categorised_result(
224
190
CategorisedResult *cr = new CategorisedResult(c);
226
return v8cpp::export_object<CategorisedResult>(v8::Isolate::GetCurrent(), cr);
192
return v8cpp::to_v8(v8::Isolate::GetCurrent(), cr);
229
195
void InitAll(v8::Handle<v8::Object> exports)
231
197
v8::Isolate* isolate = v8::Isolate::GetCurrent();
233
v8cpp::Class<JsScope> js_scope(isolate);
199
v8cpp::Class<JavascriptScopeRuntime> js_scope(isolate);
235
.add_method("scope_base", &JsScope::scope_base)
236
.add_method("run", &JsScope::run);
201
.add_method("scope_base", &JavascriptScopeRuntime::scope_base)
202
.add_method("scope_config", &JavascriptScopeRuntime::scope_config)
203
.add_method("run", &JavascriptScopeRuntime::run);
238
205
v8cpp::Class<ScopeBase> scope_base(isolate);