comet-cpp 0.9.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 +7 -0
- data/bin/comet-html +69 -0
- data/bin/comet-make +53 -0
- data/bin/comet-new +62 -0
- data/bin/comet-web +14 -0
- data/lib/comet-html/generator.rb +220 -0
- data/lib/comet-html/header-generator.rb +145 -0
- data/lib/comet-html/parser-binding.rb +42 -0
- data/lib/comet-html/parser-class.rb +168 -0
- data/lib/comet-html/parser-context.rb +61 -0
- data/lib/comet-html/parser-reference.rb +98 -0
- data/lib/comet-html/parser-repeater.rb +58 -0
- data/lib/comet-html/parser-slot.rb +108 -0
- data/lib/comet-html/source-generator.rb +285 -0
- data/lib/comet-html/utils.rb +88 -0
- data/lib/guard/comet-html.rb +32 -0
- data/lib/guard/comet.rb +36 -0
- data/vendor/project/Gemfile +4 -0
- data/vendor/project/Guardfile +5 -0
- data/vendor/project/app/application.hpp +29 -0
- data/vendor/project/app/collections/.gitkeep +0 -0
- data/vendor/project/app/controllers/.gitkeep +0 -0
- data/vendor/project/app/main.cpp +6 -0
- data/vendor/project/app/models/.gitkeep +0 -0
- data/vendor/project/app/routes.cpp +7 -0
- data/vendor/project/app/views/layouts/.gitkeep +0 -0
- data/vendor/project/public/index.html +7 -0
- data/vendor/src/anchorable_element.hpp +79 -0
- data/vendor/src/append_semantics.hpp +73 -0
- data/vendor/src/bindable.cpp +99 -0
- data/vendor/src/bindable.hpp +106 -0
- data/vendor/src/cheerp_parse_cookie_values.cpp +58 -0
- data/vendor/src/comment_element.cpp +11 -0
- data/vendor/src/comment_element.hpp +17 -0
- data/vendor/src/cookies.cpp +94 -0
- data/vendor/src/cookies.hpp +60 -0
- data/vendor/src/custom_element.hpp +61 -0
- data/vendor/src/datatree.cpp +198 -0
- data/vendor/src/datatree.hpp +233 -0
- data/vendor/src/document.cpp +62 -0
- data/vendor/src/document.hpp +31 -0
- data/vendor/src/element.cpp +358 -0
- data/vendor/src/element.hpp +138 -0
- data/vendor/src/events.hpp +76 -0
- data/vendor/src/exception.cpp +13 -0
- data/vendor/src/exception.hpp +11 -0
- data/vendor/src/from_string.cpp +99 -0
- data/vendor/src/from_string.hpp +37 -0
- data/vendor/src/globals.cpp +6 -0
- data/vendor/src/globals.hpp +15 -0
- data/vendor/src/http.cpp +93 -0
- data/vendor/src/http.hpp +72 -0
- data/vendor/src/lexical_cast.hpp +51 -0
- data/vendor/src/local_storage.cpp +75 -0
- data/vendor/src/local_storage.hpp +53 -0
- data/vendor/src/mvc/collection.hpp +154 -0
- data/vendor/src/mvc/controller.hpp +59 -0
- data/vendor/src/mvc/id_type.hpp +9 -0
- data/vendor/src/mvc/layout.hpp +44 -0
- data/vendor/src/mvc/model.cpp +89 -0
- data/vendor/src/mvc/model.hpp +50 -0
- data/vendor/src/object.cpp +71 -0
- data/vendor/src/object.hpp +298 -0
- data/vendor/src/parse_cookie_values.hpp +12 -0
- data/vendor/src/promise.cpp +50 -0
- data/vendor/src/promise.hpp +43 -0
- data/vendor/src/repeater.hpp +116 -0
- data/vendor/src/router.cpp +62 -0
- data/vendor/src/router.hpp +34 -0
- data/vendor/src/router_base.hpp +107 -0
- data/vendor/src/signal.hpp +150 -0
- data/vendor/src/slot_element.hpp +61 -0
- data/vendor/src/url.cpp +19 -0
- data/vendor/src/url.hpp +15 -0
- data/vendor/src/window.cpp +22 -0
- data/vendor/src/window.hpp +24 -0
- metadata +134 -0
@@ -0,0 +1,107 @@
|
|
1
|
+
#ifndef ROUTER_BASE_HPP
|
2
|
+
# define ROUTER_BASE_HPP
|
3
|
+
|
4
|
+
# include <functional>
|
5
|
+
# include <vector>
|
6
|
+
# include <string>
|
7
|
+
# define ROUTER_PARAM_PATTERN "[a-zA-Z0-9_-]*"
|
8
|
+
# include "object.hpp"
|
9
|
+
|
10
|
+
namespace Comet
|
11
|
+
{
|
12
|
+
template<typename PARAMS, typename ACTION>
|
13
|
+
class RouterBase
|
14
|
+
{
|
15
|
+
public:
|
16
|
+
typedef ACTION Action;
|
17
|
+
typedef Comet::ObjectImpl<client::RegExp> JsRegExp;
|
18
|
+
|
19
|
+
struct Item
|
20
|
+
{
|
21
|
+
Item() : regexp(new client::RegExp("")) {}
|
22
|
+
|
23
|
+
Action run;
|
24
|
+
std::string method;
|
25
|
+
std::string regexp_src, regexp_original;
|
26
|
+
JsRegExp regexp;
|
27
|
+
std::vector<std::string> param_names;
|
28
|
+
};
|
29
|
+
|
30
|
+
typedef std::vector<Item> Items;
|
31
|
+
|
32
|
+
const Action* get_action(const std::string& method, const std::string& uri, PARAMS& query_params) const
|
33
|
+
{
|
34
|
+
using namespace std;
|
35
|
+
Comet::String js_uri(uri);
|
36
|
+
|
37
|
+
for (const Item& item : routes)
|
38
|
+
{
|
39
|
+
bool does_match = item.regexp->test(*js_uri);
|
40
|
+
|
41
|
+
if (does_match)
|
42
|
+
{
|
43
|
+
auto matches = Comet::Object(js_uri->match(*item.regexp)).to_vector<std::string>();
|
44
|
+
|
45
|
+
for (unsigned short i = 1 ; i < matches.size() ; ++i)
|
46
|
+
{
|
47
|
+
const string& param_name = item.param_names[i - 1];
|
48
|
+
const string& param_value = matches[i];
|
49
|
+
|
50
|
+
query_params[param_name] = param_value;
|
51
|
+
}
|
52
|
+
return &(item.run);
|
53
|
+
}
|
54
|
+
}
|
55
|
+
return 0;
|
56
|
+
}
|
57
|
+
|
58
|
+
void match(const std::string& route, Action callback)
|
59
|
+
{
|
60
|
+
match("", route, callback);
|
61
|
+
}
|
62
|
+
|
63
|
+
void match(const std::string& method, const std::string& route, Action callback)
|
64
|
+
{
|
65
|
+
Item item;
|
66
|
+
|
67
|
+
item_initialize_regex(item, '^' + route + '$');
|
68
|
+
item.method = method;
|
69
|
+
item.run = callback;
|
70
|
+
routes.push_back(item);
|
71
|
+
}
|
72
|
+
|
73
|
+
private:
|
74
|
+
void item_initialize_regex(Item& item, const std::string& route)
|
75
|
+
{
|
76
|
+
using namespace std;
|
77
|
+
string find_params_str(':' + std::string(ROUTER_PARAM_PATTERN));
|
78
|
+
JsRegExp find_params(new client::RegExp(find_params_str.c_str(), "g"));
|
79
|
+
string regexified_route;
|
80
|
+
auto matches = Comet::Object(
|
81
|
+
Comet::String(route)->match(*find_params)
|
82
|
+
).to_vector<string>();
|
83
|
+
size_t last_position = 0;
|
84
|
+
|
85
|
+
for (unsigned short i = 0 ; i < matches.size() ; ++i)
|
86
|
+
{
|
87
|
+
const string& match = matches[i];
|
88
|
+
size_t match_position = route.find(match);
|
89
|
+
|
90
|
+
regexified_route += route.substr(last_position, match_position - last_position);
|
91
|
+
regexified_route = regexified_route + '(' + ROUTER_PARAM_PATTERN + ')';
|
92
|
+
item.param_names.push_back(route.substr(match_position + 1, match.length() - 1));
|
93
|
+
last_position = match_position + match.length();
|
94
|
+
}
|
95
|
+
regexified_route += route.substr(last_position);
|
96
|
+
item.regexp_src = regexified_route;
|
97
|
+
item.regexp_original = route;
|
98
|
+
item.regexp = new client::RegExp(regexified_route.c_str());
|
99
|
+
}
|
100
|
+
|
101
|
+
public:
|
102
|
+
Items routes;
|
103
|
+
};
|
104
|
+
}
|
105
|
+
|
106
|
+
#endif
|
107
|
+
|
@@ -0,0 +1,150 @@
|
|
1
|
+
#ifndef COMET_SIGNAL_HPP
|
2
|
+
# define COMET_SIGNAL_HPP
|
3
|
+
|
4
|
+
# include <map>
|
5
|
+
# include <vector>
|
6
|
+
|
7
|
+
namespace Comet
|
8
|
+
{
|
9
|
+
class ISignal
|
10
|
+
{
|
11
|
+
public:
|
12
|
+
virtual void disconnect(unsigned long) = 0;
|
13
|
+
private:
|
14
|
+
};
|
15
|
+
|
16
|
+
class Listener
|
17
|
+
{
|
18
|
+
public:
|
19
|
+
virtual ~Listener()
|
20
|
+
{
|
21
|
+
stop_listening();
|
22
|
+
}
|
23
|
+
|
24
|
+
template<typename SIGNAL>
|
25
|
+
void listen_to(SIGNAL& signal, typename SIGNAL::Callback callback)
|
26
|
+
{
|
27
|
+
unsigned long id = signal.connect(callback);
|
28
|
+
|
29
|
+
connections.push_back(std::pair<ISignal*,unsigned long>(&signal, id));
|
30
|
+
}
|
31
|
+
|
32
|
+
void stop_listening(ISignal* ptr = 0)
|
33
|
+
{
|
34
|
+
for (auto it = connections.begin() ; it != connections.end() ;)
|
35
|
+
{
|
36
|
+
if (ptr == 0 || it->first == ptr)
|
37
|
+
{
|
38
|
+
it->first->disconnect(it->second);
|
39
|
+
it = connections.erase(it);
|
40
|
+
}
|
41
|
+
else
|
42
|
+
it++;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
private:
|
47
|
+
std::vector<std::pair<ISignal*,unsigned long> > connections;
|
48
|
+
};
|
49
|
+
|
50
|
+
template<typename ...Args>
|
51
|
+
class Signal : public ISignal
|
52
|
+
{
|
53
|
+
friend class Listener;
|
54
|
+
typedef std::function<void (Args...)> Callback;
|
55
|
+
public:
|
56
|
+
Signal() : listener_i(0)
|
57
|
+
{
|
58
|
+
}
|
59
|
+
|
60
|
+
Signal(const Signal& cpy) : listener_i(0)
|
61
|
+
{
|
62
|
+
}
|
63
|
+
|
64
|
+
Signal& operator=(const Signal& cpy)
|
65
|
+
{
|
66
|
+
return *this;
|
67
|
+
}
|
68
|
+
|
69
|
+
void trigger(Args... args)
|
70
|
+
{
|
71
|
+
for (auto slot : callbacks)
|
72
|
+
slot.second(args...);
|
73
|
+
}
|
74
|
+
|
75
|
+
unsigned long connect(Callback callback)
|
76
|
+
{
|
77
|
+
callbacks.insert(std::pair<unsigned long, Callback>(listener_i, callback));
|
78
|
+
listener_i++;
|
79
|
+
return listener_i - 1;
|
80
|
+
}
|
81
|
+
|
82
|
+
void disconnect(unsigned long i)
|
83
|
+
{
|
84
|
+
for (auto it = callbacks.begin() ; it != callbacks.end() ; ++it)
|
85
|
+
{
|
86
|
+
if (it->first == i)
|
87
|
+
{
|
88
|
+
callbacks.erase(it);
|
89
|
+
break ;
|
90
|
+
}
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
private:
|
95
|
+
int listener_i;
|
96
|
+
std::map<unsigned long, Callback> callbacks;
|
97
|
+
};
|
98
|
+
|
99
|
+
template<>
|
100
|
+
class Signal<void> : public ISignal
|
101
|
+
{
|
102
|
+
friend class Listener;
|
103
|
+
typedef std::function<void (void)> Callback;
|
104
|
+
public:
|
105
|
+
Signal() : listener_i(0)
|
106
|
+
{
|
107
|
+
}
|
108
|
+
|
109
|
+
Signal(const Signal& cpy) : listener_i(0)
|
110
|
+
{
|
111
|
+
}
|
112
|
+
|
113
|
+
Signal& operator=(const Signal& cpy)
|
114
|
+
{
|
115
|
+
return *this;
|
116
|
+
}
|
117
|
+
|
118
|
+
void trigger()
|
119
|
+
{
|
120
|
+
for (auto slot : callbacks)
|
121
|
+
slot.second();
|
122
|
+
}
|
123
|
+
|
124
|
+
unsigned long connect(Callback callback)
|
125
|
+
{
|
126
|
+
callbacks.insert(std::pair<unsigned long, Callback>(listener_i, callback));
|
127
|
+
listener_i++;
|
128
|
+
return listener_i - 1;
|
129
|
+
}
|
130
|
+
|
131
|
+
void disconnect(unsigned long i)
|
132
|
+
{
|
133
|
+
for (auto it = callbacks.begin() ; it != callbacks.end() ; ++it)
|
134
|
+
{
|
135
|
+
if (it->first == i)
|
136
|
+
{
|
137
|
+
callbacks.erase(it);
|
138
|
+
break ;
|
139
|
+
}
|
140
|
+
}
|
141
|
+
}
|
142
|
+
|
143
|
+
private:
|
144
|
+
int listener_i;
|
145
|
+
std::map<unsigned long, Callback> callbacks;
|
146
|
+
};
|
147
|
+
|
148
|
+
}
|
149
|
+
|
150
|
+
#endif
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#ifndef CRAILS_FRONT_SLOT_ELEMENT_HPP
|
2
|
+
# define CRAILS_FRONT_SLOT_ELEMENT_HPP
|
3
|
+
|
4
|
+
# include "anchorable_element.hpp"
|
5
|
+
# include "bindable.hpp"
|
6
|
+
|
7
|
+
namespace Comet
|
8
|
+
{
|
9
|
+
class SlotElement : public AnchorableElement
|
10
|
+
{
|
11
|
+
std::shared_ptr<IBindableView> element;
|
12
|
+
IBindableView* element_ptr = nullptr;
|
13
|
+
|
14
|
+
public:
|
15
|
+
bool has_element() const
|
16
|
+
{
|
17
|
+
return element_ptr != nullptr;
|
18
|
+
}
|
19
|
+
|
20
|
+
IBindableView* get_element() const
|
21
|
+
{
|
22
|
+
return element_ptr;
|
23
|
+
}
|
24
|
+
|
25
|
+
void attach()
|
26
|
+
{
|
27
|
+
std::vector<Comet::Element*> element_list;
|
28
|
+
|
29
|
+
element_list.push_back(get_element());
|
30
|
+
attach_elements(element_list);
|
31
|
+
}
|
32
|
+
|
33
|
+
void set_element(IBindableView& el)
|
34
|
+
{
|
35
|
+
cleanup();
|
36
|
+
element_ptr = ⪙
|
37
|
+
if (is_anchorable())
|
38
|
+
attach();
|
39
|
+
}
|
40
|
+
|
41
|
+
template<typename ELEMENT>
|
42
|
+
void set_element(std::shared_ptr<ELEMENT> pointer)
|
43
|
+
{
|
44
|
+
cleanup();
|
45
|
+
element = std::dynamic_pointer_cast<IBindableView>(pointer);
|
46
|
+
element_ptr = element.get();
|
47
|
+
if (is_anchorable() && has_element())
|
48
|
+
attach();
|
49
|
+
}
|
50
|
+
private:
|
51
|
+
void cleanup()
|
52
|
+
{
|
53
|
+
if (has_element())
|
54
|
+
get_element()->destroy();
|
55
|
+
element = nullptr;
|
56
|
+
element_ptr = nullptr;
|
57
|
+
}
|
58
|
+
};
|
59
|
+
}
|
60
|
+
|
61
|
+
#endif
|
data/vendor/src/url.cpp
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
#include "url.hpp"
|
2
|
+
#include "globals.hpp"
|
3
|
+
|
4
|
+
using namespace std;
|
5
|
+
using namespace Comet;
|
6
|
+
|
7
|
+
string Url::encode(const string& src)
|
8
|
+
{
|
9
|
+
Comet::String js_string(src.c_str());
|
10
|
+
|
11
|
+
return window.apply("encodeURIComponent", js_string);
|
12
|
+
}
|
13
|
+
|
14
|
+
string Url::decode(const string& src)
|
15
|
+
{
|
16
|
+
Comet::String js_string(src.c_str());
|
17
|
+
|
18
|
+
return window.apply("decodeURIComponent", js_string);
|
19
|
+
}
|
data/vendor/src/url.hpp
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
#include "window.hpp"
|
2
|
+
#include "globals.hpp"
|
3
|
+
|
4
|
+
using namespace Comet;
|
5
|
+
using namespace std;
|
6
|
+
|
7
|
+
Comet::Window Comet::window;
|
8
|
+
|
9
|
+
Window::Window() : ObjectImpl((client::Window*)&client::window), events(make_shared<JavascriptEvents>((client::EventTarget*)&client::window))
|
10
|
+
{
|
11
|
+
events->on("resize", [this]() { resized.trigger(); });
|
12
|
+
}
|
13
|
+
|
14
|
+
void Window::set_timeout(function<void()> callback, double interval) const
|
15
|
+
{
|
16
|
+
client::window.setTimeout(cheerp::Callback(callback), interval);
|
17
|
+
}
|
18
|
+
|
19
|
+
void Window::set_interval(function<void()> callback, double interval) const
|
20
|
+
{
|
21
|
+
client::window.setInterval(cheerp::Callback(callback), interval);
|
22
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#ifndef CRAILS_FRONT_WINDOW_HPP
|
2
|
+
# define CRAILS_FRONT_WINDOW_HPP
|
3
|
+
|
4
|
+
# include "object.hpp"
|
5
|
+
# include "signal.hpp"
|
6
|
+
# include "events.hpp"
|
7
|
+
|
8
|
+
namespace Comet
|
9
|
+
{
|
10
|
+
class Window : public ObjectImpl<client::Window>
|
11
|
+
{
|
12
|
+
public:
|
13
|
+
std::shared_ptr<JavascriptEvents> events;
|
14
|
+
|
15
|
+
Signal<void> resized;
|
16
|
+
|
17
|
+
Window();
|
18
|
+
|
19
|
+
void set_timeout(std::function<void()>, double interval) const;
|
20
|
+
void set_interval(std::function<void()>, double interval) const;
|
21
|
+
};
|
22
|
+
}
|
23
|
+
|
24
|
+
#endif
|
metadata
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: comet-cpp
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Michael Martin Moro
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-03-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: nokogiri
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.10.8
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.10.8
|
27
|
+
description: ''
|
28
|
+
email: michael@unetresgrossebite.com
|
29
|
+
executables:
|
30
|
+
- comet-make
|
31
|
+
- comet-html
|
32
|
+
- comet-new
|
33
|
+
extensions: []
|
34
|
+
extra_rdoc_files: []
|
35
|
+
files:
|
36
|
+
- bin/comet-html
|
37
|
+
- bin/comet-make
|
38
|
+
- bin/comet-new
|
39
|
+
- bin/comet-web
|
40
|
+
- lib/comet-html/generator.rb
|
41
|
+
- lib/comet-html/header-generator.rb
|
42
|
+
- lib/comet-html/parser-binding.rb
|
43
|
+
- lib/comet-html/parser-class.rb
|
44
|
+
- lib/comet-html/parser-context.rb
|
45
|
+
- lib/comet-html/parser-reference.rb
|
46
|
+
- lib/comet-html/parser-repeater.rb
|
47
|
+
- lib/comet-html/parser-slot.rb
|
48
|
+
- lib/comet-html/source-generator.rb
|
49
|
+
- lib/comet-html/utils.rb
|
50
|
+
- lib/guard/comet-html.rb
|
51
|
+
- lib/guard/comet.rb
|
52
|
+
- vendor/project/Gemfile
|
53
|
+
- vendor/project/Guardfile
|
54
|
+
- vendor/project/app/application.hpp
|
55
|
+
- vendor/project/app/collections/.gitkeep
|
56
|
+
- vendor/project/app/controllers/.gitkeep
|
57
|
+
- vendor/project/app/main.cpp
|
58
|
+
- vendor/project/app/models/.gitkeep
|
59
|
+
- vendor/project/app/routes.cpp
|
60
|
+
- vendor/project/app/views/layouts/.gitkeep
|
61
|
+
- vendor/project/public/index.html
|
62
|
+
- vendor/src/anchorable_element.hpp
|
63
|
+
- vendor/src/append_semantics.hpp
|
64
|
+
- vendor/src/bindable.cpp
|
65
|
+
- vendor/src/bindable.hpp
|
66
|
+
- vendor/src/cheerp_parse_cookie_values.cpp
|
67
|
+
- vendor/src/comment_element.cpp
|
68
|
+
- vendor/src/comment_element.hpp
|
69
|
+
- vendor/src/cookies.cpp
|
70
|
+
- vendor/src/cookies.hpp
|
71
|
+
- vendor/src/custom_element.hpp
|
72
|
+
- vendor/src/datatree.cpp
|
73
|
+
- vendor/src/datatree.hpp
|
74
|
+
- vendor/src/document.cpp
|
75
|
+
- vendor/src/document.hpp
|
76
|
+
- vendor/src/element.cpp
|
77
|
+
- vendor/src/element.hpp
|
78
|
+
- vendor/src/events.hpp
|
79
|
+
- vendor/src/exception.cpp
|
80
|
+
- vendor/src/exception.hpp
|
81
|
+
- vendor/src/from_string.cpp
|
82
|
+
- vendor/src/from_string.hpp
|
83
|
+
- vendor/src/globals.cpp
|
84
|
+
- vendor/src/globals.hpp
|
85
|
+
- vendor/src/http.cpp
|
86
|
+
- vendor/src/http.hpp
|
87
|
+
- vendor/src/lexical_cast.hpp
|
88
|
+
- vendor/src/local_storage.cpp
|
89
|
+
- vendor/src/local_storage.hpp
|
90
|
+
- vendor/src/mvc/collection.hpp
|
91
|
+
- vendor/src/mvc/controller.hpp
|
92
|
+
- vendor/src/mvc/id_type.hpp
|
93
|
+
- vendor/src/mvc/layout.hpp
|
94
|
+
- vendor/src/mvc/model.cpp
|
95
|
+
- vendor/src/mvc/model.hpp
|
96
|
+
- vendor/src/object.cpp
|
97
|
+
- vendor/src/object.hpp
|
98
|
+
- vendor/src/parse_cookie_values.hpp
|
99
|
+
- vendor/src/promise.cpp
|
100
|
+
- vendor/src/promise.hpp
|
101
|
+
- vendor/src/repeater.hpp
|
102
|
+
- vendor/src/router.cpp
|
103
|
+
- vendor/src/router.hpp
|
104
|
+
- vendor/src/router_base.hpp
|
105
|
+
- vendor/src/signal.hpp
|
106
|
+
- vendor/src/slot_element.hpp
|
107
|
+
- vendor/src/url.cpp
|
108
|
+
- vendor/src/url.hpp
|
109
|
+
- vendor/src/window.cpp
|
110
|
+
- vendor/src/window.hpp
|
111
|
+
homepage: https://github.com/crails-framework/comet-cpp
|
112
|
+
licenses:
|
113
|
+
- BSD-3-Clause
|
114
|
+
metadata: {}
|
115
|
+
post_install_message:
|
116
|
+
rdoc_options: []
|
117
|
+
require_paths:
|
118
|
+
- lib
|
119
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - ">="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
129
|
+
requirements: []
|
130
|
+
rubygems_version: 3.3.7
|
131
|
+
signing_key:
|
132
|
+
specification_version: 4
|
133
|
+
summary: Comet.cpp is a JavaScript client framework
|
134
|
+
test_files: []
|