browserio 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/LICENSE.txt +1 -1
- data/README.md +23 -5
- data/Rakefile +8 -1
- data/browserio.gemspec +14 -6
- data/lib/browserio.rb +183 -3
- data/lib/browserio/component.rb +269 -0
- data/lib/browserio/config.rb +113 -0
- data/lib/browserio/dom.rb +139 -0
- data/lib/browserio/events.rb +136 -0
- data/lib/browserio/html.rb +29 -0
- data/lib/browserio/opal.rb +18 -0
- data/lib/browserio/plugins/form.rb +343 -0
- data/lib/browserio/plugins/history.rb +92 -0
- data/lib/browserio/plugins/location.rb +78 -0
- data/lib/browserio/plugins/pjax.rb +65 -0
- data/lib/browserio/plugins/validations.rb +251 -0
- data/lib/browserio/utilis/blank.rb +133 -0
- data/lib/browserio/utilis/hash.rb +77 -0
- data/lib/browserio/utilis/indifferent_hash.rb +209 -0
- data/lib/browserio/utilis/methods.rb +25 -0
- data/lib/browserio/utilis/titleize.rb +97 -0
- data/lib/browserio/utilis/try.rb +106 -0
- data/lib/browserio/version.rb +1 -1
- data/lib/roda/plugins/browserio.rb +63 -0
- data/test/dummy/app.rb +34 -0
- data/test/dummy/components/bar.rb +16 -0
- data/test/dummy/components/root.rb +39 -0
- data/test/dummy/config.ru +6 -0
- data/test/dummy/forms/foo.rb +6 -0
- data/test/test.js +59 -0
- data/test/test_basic_component.rb +34 -0
- data/test/test_browserio.rb +13 -0
- data/test/test_helper.rb +38 -0
- metadata +152 -17
@@ -0,0 +1,106 @@
|
|
1
|
+
class Object
|
2
|
+
# Invokes the public method whose name goes as first argument just like
|
3
|
+
# +public_send+ does, except that if the receiver does not respond to it the
|
4
|
+
# call returns +nil+ rather than raising an exception.
|
5
|
+
#
|
6
|
+
# This method is defined to be able to write
|
7
|
+
#
|
8
|
+
# @person.try(:name)
|
9
|
+
#
|
10
|
+
# instead of
|
11
|
+
#
|
12
|
+
# @person.name if @person
|
13
|
+
#
|
14
|
+
# +try+ calls can be chained:
|
15
|
+
#
|
16
|
+
# @person.try(:spouse).try(:name)
|
17
|
+
#
|
18
|
+
# instead of
|
19
|
+
#
|
20
|
+
# @person.spouse.name if @person && @person.spouse
|
21
|
+
#
|
22
|
+
# +try+ will also return +nil+ if the receiver does not respond to the method:
|
23
|
+
#
|
24
|
+
# @person.try(:non_existing_method) # => nil
|
25
|
+
#
|
26
|
+
# instead of
|
27
|
+
#
|
28
|
+
# @person.non_existing_method if @person.respond_to?(:non_existing_method) # => nil
|
29
|
+
#
|
30
|
+
# +try+ returns +nil+ when called on +nil+ regardless of whether it responds
|
31
|
+
# to the method:
|
32
|
+
#
|
33
|
+
# nil.try(:to_i) # => nil, rather than 0
|
34
|
+
#
|
35
|
+
# Arguments and blocks are forwarded to the method if invoked:
|
36
|
+
#
|
37
|
+
# @posts.try(:each_slice, 2) do |a, b|
|
38
|
+
# ...
|
39
|
+
# end
|
40
|
+
#
|
41
|
+
# The number of arguments in the signature must match. If the object responds
|
42
|
+
# to the method the call is attempted and +ArgumentError+ is still raised
|
43
|
+
# in case of argument mismatch.
|
44
|
+
#
|
45
|
+
# If +try+ is called without arguments it yields the receiver to a given
|
46
|
+
# block unless it is +nil+:
|
47
|
+
#
|
48
|
+
# @person.try do |p|
|
49
|
+
# ...
|
50
|
+
# end
|
51
|
+
#
|
52
|
+
# You can also call try with a block without accepting an argument, and the block
|
53
|
+
# will be instance_eval'ed instead:
|
54
|
+
#
|
55
|
+
# @person.try { upcase.truncate(50) }
|
56
|
+
#
|
57
|
+
# Please also note that +try+ is defined on +Object+. Therefore, it won't work
|
58
|
+
# with instances of classes that do not have +Object+ among their ancestors,
|
59
|
+
# like direct subclasses of +BasicObject+. For example, using +try+ with
|
60
|
+
# +SimpleDelegator+ will delegate +try+ to the target instead of calling it on
|
61
|
+
# the delegator itself.
|
62
|
+
def try(*a, &b)
|
63
|
+
try!(*a, &b) if a.empty? || respond_to?(a.first)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Same as #try, but raises a NoMethodError exception if the receiver is
|
67
|
+
# not +nil+ and does not implement the tried method.
|
68
|
+
#
|
69
|
+
# "a".try!(:upcase) # => "A"
|
70
|
+
# nil.try!(:upcase) # => nil
|
71
|
+
# 123.try!(:upcase) # => NoMethodError: undefined method `upcase' for 123:Fixnum
|
72
|
+
def try!(*a, &b)
|
73
|
+
if a.empty? && block_given?
|
74
|
+
if b.arity.zero?
|
75
|
+
instance_eval(&b)
|
76
|
+
else
|
77
|
+
yield self
|
78
|
+
end
|
79
|
+
else
|
80
|
+
public_send(*a, &b)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
class NilClass
|
86
|
+
# Calling +try+ on +nil+ always returns +nil+.
|
87
|
+
# It becomes especially helpful when navigating through associations that may return +nil+.
|
88
|
+
#
|
89
|
+
# nil.try(:name) # => nil
|
90
|
+
#
|
91
|
+
# Without +try+
|
92
|
+
# @person && @person.children.any? && @person.children.first.name
|
93
|
+
#
|
94
|
+
# With +try+
|
95
|
+
# @person.try(:children).try(:first).try(:name)
|
96
|
+
def try(*args)
|
97
|
+
nil
|
98
|
+
end
|
99
|
+
|
100
|
+
# Calling +try!+ on +nil+ always returns +nil+.
|
101
|
+
#
|
102
|
+
# nil.try!(:name) # => nil
|
103
|
+
def try!(*args)
|
104
|
+
nil
|
105
|
+
end
|
106
|
+
end
|
data/lib/browserio/version.rb
CHANGED
@@ -0,0 +1,63 @@
|
|
1
|
+
class Roda
|
2
|
+
module RodaPlugins
|
3
|
+
module BrowserIO
|
4
|
+
def self.configure(app, opts = {})
|
5
|
+
if app.opts[:browserio]
|
6
|
+
app.opts[:browserio].merge!(opts)
|
7
|
+
else
|
8
|
+
app.opts[:browserio] = opts.dup
|
9
|
+
end
|
10
|
+
|
11
|
+
opts = app.opts[:browserio]
|
12
|
+
|
13
|
+
opts.each do |k, v|
|
14
|
+
case k.to_s
|
15
|
+
when 'plugins'
|
16
|
+
v.each { |p| ::BrowserIO.config.plugin p }
|
17
|
+
when 'scope'
|
18
|
+
::BrowserIO.config.scope v.new('')
|
19
|
+
else
|
20
|
+
::BrowserIO.config.send(k, v)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
module InstanceMethods
|
26
|
+
def bio(*args)
|
27
|
+
args << { scope: self }
|
28
|
+
::BrowserIO[*args]
|
29
|
+
end
|
30
|
+
alias_method :comp, :bio unless defined? comp
|
31
|
+
alias_method :component, :bio unless defined? component
|
32
|
+
end
|
33
|
+
|
34
|
+
module RequestClassMethods
|
35
|
+
def bio_route_regex
|
36
|
+
%r{#{roda_class.opts[:browserio][:assets_url]}/(.*)\.(.*)$}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
module RequestMethods
|
41
|
+
def browserio
|
42
|
+
on self.class.bio_route_regex do |component, ext|
|
43
|
+
case ext
|
44
|
+
when 'map'
|
45
|
+
::BrowserIO.source_map component
|
46
|
+
when 'rb'
|
47
|
+
if component =~ /^browserio/
|
48
|
+
path = ::BrowserIO.opts.file_path.gsub(/\/browserio.rb$/, '')
|
49
|
+
File.read("#{path}/#{component}.rb")
|
50
|
+
else
|
51
|
+
File.read("#{ROOT_PATH}/#{component}.rb")
|
52
|
+
end
|
53
|
+
else
|
54
|
+
"#{::BrowserIO.javascript(component)}\n//# sourceMappingURL=/assets/bio/#{component}.map"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
register_plugin(:browserio, BrowserIO)
|
62
|
+
end
|
63
|
+
end
|
data/test/dummy/app.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'browserio'
|
2
|
+
require 'roda'
|
3
|
+
|
4
|
+
require 'pry'
|
5
|
+
require 'awesome_print'
|
6
|
+
|
7
|
+
ROOT_PATH = File.dirname(__FILE__)
|
8
|
+
|
9
|
+
class DummyApp < Roda
|
10
|
+
plugin :assets, {
|
11
|
+
group_subdirs: false,
|
12
|
+
path: ROOT_PATH,
|
13
|
+
css_dir: '',
|
14
|
+
js_dir: '',
|
15
|
+
js: [ 'bio/browserio.js' ]
|
16
|
+
}
|
17
|
+
|
18
|
+
plugin :browserio, {
|
19
|
+
scope: self,
|
20
|
+
assets_url: 'assets/bio',
|
21
|
+
plugins: [:form]
|
22
|
+
}
|
23
|
+
|
24
|
+
route do |r|
|
25
|
+
r.browserio
|
26
|
+
|
27
|
+
r.root do
|
28
|
+
bio(:root, :js).display
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
Dir["#{ROOT_PATH}/forms/*.rb"].sort.each { |file| require file }
|
34
|
+
Dir["#{ROOT_PATH}/components/*.rb"].sort.each { |file| require file }
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'root' unless RUBY_ENGINE == 'opal'
|
2
|
+
|
3
|
+
class DummyApp
|
4
|
+
class BarComponent < BrowserIO::Component
|
5
|
+
config.name :bar
|
6
|
+
config.requires :root
|
7
|
+
|
8
|
+
def moo
|
9
|
+
'cow'
|
10
|
+
end
|
11
|
+
|
12
|
+
on :clicked_foo, for: :root do
|
13
|
+
dom.find('body').append moo
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
class DummyApp
|
2
|
+
class RootComponent < BrowserIO::Component
|
3
|
+
config.name :root
|
4
|
+
config.html <<-HTML
|
5
|
+
<!DOCTYPE html>
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<script src="//code.jquery.com/jquery-1.11.2.js"></script>
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
<div id='foo'>bar</div>
|
12
|
+
</body>
|
13
|
+
</html>
|
14
|
+
HTML
|
15
|
+
config.dom do
|
16
|
+
dom.find('body') << assets(:js)
|
17
|
+
end
|
18
|
+
config.requires :bar, :foo_form
|
19
|
+
|
20
|
+
def display
|
21
|
+
if server?
|
22
|
+
dom
|
23
|
+
else
|
24
|
+
el = Element['<div>']
|
25
|
+
el.html 'foo'
|
26
|
+
dom.find('#foo').before el
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
on :ready do
|
31
|
+
puts 'dom ready'
|
32
|
+
end
|
33
|
+
|
34
|
+
on :click, '#foo' do |el|
|
35
|
+
el.after '<div>bar</div>'
|
36
|
+
trigger :clicked_foo
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/test/test.js
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
var page = require('webpage').create();
|
2
|
+
page.settings.localToRemoteUrlAccessEnabled = true;
|
3
|
+
page.settings.resourceTimeout = 1000;
|
4
|
+
// page.content = "<!doctype html>\n<html>\n<head>\new<script type=\"text/javascript\" src=\"https://code.jquery.com/jquery-1.11.2.min.js\"></script>\n</head>\n<body>\n<div id=\"foo\">bar<div>\n</body>\n</html>";
|
5
|
+
var content = '<!doctype html>';
|
6
|
+
content += '<html><head>';
|
7
|
+
content += '<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.2.min.js"></script>';
|
8
|
+
content += '</head><body>';
|
9
|
+
content += '<h1 id="foo">bar</h1>';
|
10
|
+
content += '</body></html>';
|
11
|
+
|
12
|
+
// page.content = "<div id='foo'>bar</div>";
|
13
|
+
|
14
|
+
page.onConsoleMessage = function(msg) {
|
15
|
+
console.log(msg);
|
16
|
+
};
|
17
|
+
|
18
|
+
page.onResourceTimeout = function(a) {
|
19
|
+
phantom.exit(1);
|
20
|
+
};
|
21
|
+
|
22
|
+
page.onError = function(msg, trace) {
|
23
|
+
|
24
|
+
var msgStack = ['ERROR: ' + msg];
|
25
|
+
|
26
|
+
if (trace && trace.length) {
|
27
|
+
msgStack.push('TRACE:');
|
28
|
+
trace.forEach(function(t) {
|
29
|
+
msgStack.push(' -> ' + t.file + ': ' + t.line + (t.function ? ' (in function "' + t.function +'")' : ''));
|
30
|
+
});
|
31
|
+
}
|
32
|
+
|
33
|
+
console.log(msgStack.join('\n'));
|
34
|
+
phantom.exit();
|
35
|
+
};
|
36
|
+
|
37
|
+
phantom.onError = function(msg, trace) {
|
38
|
+
var msgStack = ['PHANTOM ERROR: ' + msg];
|
39
|
+
if (trace && trace.length) {
|
40
|
+
msgStack.push('TRACE:');
|
41
|
+
trace.forEach(function(t) {
|
42
|
+
msgStack.push(' -> ' + (t.file || t.sourceURL) + ': ' + t.line + (t.function ? ' (in function ' + t.function +')' : ''));
|
43
|
+
});
|
44
|
+
}
|
45
|
+
console.log(msgStack.join('\n'));
|
46
|
+
phantom.exit();
|
47
|
+
};
|
48
|
+
|
49
|
+
page.content = content
|
50
|
+
|
51
|
+
page.onLoadFinished = function() {
|
52
|
+
page.evaluate(function() {
|
53
|
+
console.log($('#foo').html());
|
54
|
+
});
|
55
|
+
phantom.exit();
|
56
|
+
};
|
57
|
+
|
58
|
+
// page.includeJs("http://code.jquery.com/jquery-1.11.2.min.js", function(){
|
59
|
+
// });
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
class BasicComponent < BrowserIO::Component
|
4
|
+
config.name :basic
|
5
|
+
config.html <<-HTML
|
6
|
+
<!DOCTYPE html>
|
7
|
+
<html>
|
8
|
+
<body>
|
9
|
+
<div id='foo'>bar</div>
|
10
|
+
</body>
|
11
|
+
</html>
|
12
|
+
HTML
|
13
|
+
config.dom do
|
14
|
+
tmpl :foo, dom.find('#foo')
|
15
|
+
end
|
16
|
+
|
17
|
+
def foo
|
18
|
+
'bar'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class TestComponent < Minitest::Test
|
23
|
+
def test_calling_basic_component
|
24
|
+
assert_equal 'bar', bio(:basic).foo
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_parsing_html
|
28
|
+
assert_equal '<div id="foo">bar</div>', bio(:basic).tmpl(:foo).to_html
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_returning_js
|
32
|
+
assert bio(:basic, :js).foo[/Opal/]
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'phantomjs'
|
2
|
+
require_relative 'test_helper'
|
3
|
+
|
4
|
+
class TestBrowserIO < Minitest::Test
|
5
|
+
def test_javascript_and_source_maps
|
6
|
+
assert BrowserIO.javascript[/Opal/]
|
7
|
+
assert BrowserIO.source_map[/mappings/]
|
8
|
+
end
|
9
|
+
|
10
|
+
# def test_moo
|
11
|
+
# Phantomjs.run('./test/test.js')
|
12
|
+
# end
|
13
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler.setup :default, ENV.fetch('RACK_ENV') { 'development' }
|
3
|
+
|
4
|
+
require 'minitest/autorun'
|
5
|
+
require 'minitest/reporters'
|
6
|
+
require 'browserio'
|
7
|
+
|
8
|
+
require 'pry'
|
9
|
+
require 'awesome_print'
|
10
|
+
|
11
|
+
Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new # spec-like progress
|
12
|
+
|
13
|
+
module Minitest
|
14
|
+
class Test
|
15
|
+
extend Minitest::Spec::DSL
|
16
|
+
|
17
|
+
def session
|
18
|
+
@_session ||= OpenStruct.new
|
19
|
+
end
|
20
|
+
|
21
|
+
def bio(*args)
|
22
|
+
BrowserIO[*args]
|
23
|
+
end
|
24
|
+
|
25
|
+
# def app(*args)
|
26
|
+
# a = Class.new(PropertyLink).new
|
27
|
+
#
|
28
|
+
# a.instance_variable_set(:@_request, OpenStruct.new(
|
29
|
+
# session: session,
|
30
|
+
# env: {
|
31
|
+
# 'rack.session' => {}
|
32
|
+
# }
|
33
|
+
# ))
|
34
|
+
#
|
35
|
+
# a.component(*args)
|
36
|
+
# end
|
37
|
+
end
|
38
|
+
end
|
metadata
CHANGED
@@ -1,23 +1,65 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browserio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cj
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: opal
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.7.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.7.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: opal-jquery
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.3.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.3.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: nokogiri
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.6.6.2
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.6.6.2
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
15
57
|
requirement: !ruby/object:Gem::Requirement
|
16
58
|
requirements:
|
17
59
|
- - ">="
|
18
60
|
- !ruby/object:Gem::Version
|
19
61
|
version: '0'
|
20
|
-
type: :
|
62
|
+
type: :development
|
21
63
|
prerelease: false
|
22
64
|
version_requirements: !ruby/object:Gem::Requirement
|
23
65
|
requirements:
|
@@ -25,34 +67,90 @@ dependencies:
|
|
25
67
|
- !ruby/object:Gem::Version
|
26
68
|
version: '0'
|
27
69
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
70
|
+
name: awesome_print
|
29
71
|
requirement: !ruby/object:Gem::Requirement
|
30
72
|
requirements:
|
31
|
-
- - "
|
73
|
+
- - ">="
|
32
74
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
75
|
+
version: '0'
|
34
76
|
type: :development
|
35
77
|
prerelease: false
|
36
78
|
version_requirements: !ruby/object:Gem::Requirement
|
37
79
|
requirements:
|
38
|
-
- - "
|
80
|
+
- - ">="
|
39
81
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
82
|
+
version: '0'
|
41
83
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
84
|
+
name: yard
|
43
85
|
requirement: !ruby/object:Gem::Requirement
|
44
86
|
requirements:
|
45
|
-
- - "
|
87
|
+
- - ">="
|
46
88
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
89
|
+
version: '0'
|
48
90
|
type: :development
|
49
91
|
prerelease: false
|
50
92
|
version_requirements: !ruby/object:Gem::Requirement
|
51
93
|
requirements:
|
52
|
-
- - "
|
94
|
+
- - ">="
|
53
95
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
55
|
-
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: phantomjs.rb
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: minitest-line
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: minitest-reporters
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: roda
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description: Components for the Browser and Server
|
56
154
|
email:
|
57
155
|
- cjlazell@gmail.com
|
58
156
|
executables: []
|
@@ -66,7 +164,34 @@ files:
|
|
66
164
|
- Rakefile
|
67
165
|
- browserio.gemspec
|
68
166
|
- lib/browserio.rb
|
167
|
+
- lib/browserio/component.rb
|
168
|
+
- lib/browserio/config.rb
|
169
|
+
- lib/browserio/dom.rb
|
170
|
+
- lib/browserio/events.rb
|
171
|
+
- lib/browserio/html.rb
|
172
|
+
- lib/browserio/opal.rb
|
173
|
+
- lib/browserio/plugins/form.rb
|
174
|
+
- lib/browserio/plugins/history.rb
|
175
|
+
- lib/browserio/plugins/location.rb
|
176
|
+
- lib/browserio/plugins/pjax.rb
|
177
|
+
- lib/browserio/plugins/validations.rb
|
178
|
+
- lib/browserio/utilis/blank.rb
|
179
|
+
- lib/browserio/utilis/hash.rb
|
180
|
+
- lib/browserio/utilis/indifferent_hash.rb
|
181
|
+
- lib/browserio/utilis/methods.rb
|
182
|
+
- lib/browserio/utilis/titleize.rb
|
183
|
+
- lib/browserio/utilis/try.rb
|
69
184
|
- lib/browserio/version.rb
|
185
|
+
- lib/roda/plugins/browserio.rb
|
186
|
+
- test/dummy/app.rb
|
187
|
+
- test/dummy/components/bar.rb
|
188
|
+
- test/dummy/components/root.rb
|
189
|
+
- test/dummy/config.ru
|
190
|
+
- test/dummy/forms/foo.rb
|
191
|
+
- test/test.js
|
192
|
+
- test/test_basic_component.rb
|
193
|
+
- test/test_browserio.rb
|
194
|
+
- test/test_helper.rb
|
70
195
|
homepage: ''
|
71
196
|
licenses:
|
72
197
|
- MIT
|
@@ -90,5 +215,15 @@ rubyforge_project:
|
|
90
215
|
rubygems_version: 2.2.2
|
91
216
|
signing_key:
|
92
217
|
specification_version: 4
|
93
|
-
summary:
|
94
|
-
test_files:
|
218
|
+
summary: Components for the Browser and Server
|
219
|
+
test_files:
|
220
|
+
- test/dummy/app.rb
|
221
|
+
- test/dummy/components/bar.rb
|
222
|
+
- test/dummy/components/root.rb
|
223
|
+
- test/dummy/config.ru
|
224
|
+
- test/dummy/forms/foo.rb
|
225
|
+
- test/test.js
|
226
|
+
- test/test_basic_component.rb
|
227
|
+
- test/test_browserio.rb
|
228
|
+
- test/test_helper.rb
|
229
|
+
has_rdoc:
|