inesita 0.0.0 → 0.0.1
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/.gitignore +3 -0
- data/Gemfile +2 -0
- data/README.md +73 -0
- data/Rakefile +3 -0
- data/inesita.gemspec +18 -0
- data/lib/inesita.rb +4 -0
- data/opal/inesita.rb +2 -0
- data/opal/inesita/component.rb +19 -0
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77fb4373eccfb01f3ebd6c6f169db4d72e081c57
|
4
|
+
data.tar.gz: 684259ad775ef36f9a9c8436de679bca534d3198
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a87e3f22b92b0b69a802977c79cde3e6ca1f070eba1f2d7a4805a6ba26d3d92e8062f1d5fe06c3b6d106966a5e4fba1e80b55da4686c697687c973dc6b8af52d
|
7
|
+
data.tar.gz: b5c7707cf43ee54b59133fd1628de239f6dc88e17f755c0c66a219f52befb07d899bf56012ad11fbb4e7b8eeb3dddf3a0b118e53f0194b7f2aaeea2f5dd81b1a
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
# Inesita [](http://badge.fury.io/rb/inesita) [](https://codeclimate.com/github/fazibear/inesita)
|
2
|
+
|
3
|
+
Frontend web framework for Opal
|
4
|
+
|
5
|
+
## requiments
|
6
|
+
|
7
|
+
This wrapper require to load [virtual-dom](https://github.com/Matt-Esch/virtual-dom) first. For example you can use rails assets.
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
source 'https://rails-assets.org' do
|
11
|
+
gem 'rails-assets-virtual-dom'
|
12
|
+
end
|
13
|
+
```
|
14
|
+
|
15
|
+
## usage
|
16
|
+
|
17
|
+
Server side (config.ru, Rakefile, Rails, Sinatra, etc.)
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
require 'inesita'
|
21
|
+
```
|
22
|
+
|
23
|
+
Browser side
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
require 'opal'
|
27
|
+
require 'virtual-dom' # required by opal-virtual-dom javascript library
|
28
|
+
require 'browser' # not required
|
29
|
+
require 'inesita'
|
30
|
+
|
31
|
+
class Counter
|
32
|
+
include Inesita::Component
|
33
|
+
attr_reader :count
|
34
|
+
|
35
|
+
def initialize(elements)
|
36
|
+
@count = 0
|
37
|
+
end
|
38
|
+
|
39
|
+
def inc
|
40
|
+
@count += 1
|
41
|
+
update
|
42
|
+
end
|
43
|
+
|
44
|
+
def dec
|
45
|
+
@count -= 1
|
46
|
+
update
|
47
|
+
end
|
48
|
+
|
49
|
+
def random_style
|
50
|
+
{
|
51
|
+
color: %w(red green blue).sample
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
def render
|
56
|
+
div do
|
57
|
+
button onclick: -> { dec } do
|
58
|
+
text '-'
|
59
|
+
end
|
60
|
+
span style: random_style do
|
61
|
+
text count
|
62
|
+
end
|
63
|
+
button onclick: -> { inc } do
|
64
|
+
text '+'
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
$document.ready do
|
71
|
+
Counter.new.mount($document.body)
|
72
|
+
end
|
73
|
+
```
|
data/Rakefile
ADDED
data/inesita.gemspec
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'inesita'
|
3
|
+
s.version = '0.0.1'
|
4
|
+
s.authors = [ 'Michał Kalbarczyk' ]
|
5
|
+
s.email = 'fazibear@gmail.com'
|
6
|
+
s.homepage = 'http://github.com/fazibear/inesita'
|
7
|
+
s.summary = 'frontend framework for opal'
|
8
|
+
s.description = 'frontent framework for opal'
|
9
|
+
|
10
|
+
s.files = `git ls-files`.split("\n")
|
11
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
12
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
13
|
+
s.require_paths = ['lib']
|
14
|
+
|
15
|
+
s.add_dependency 'opal'
|
16
|
+
s.add_dependency 'opal-virtual-dom'
|
17
|
+
s.add_development_dependency 'rake'
|
18
|
+
end
|
data/lib/inesita.rb
ADDED
data/opal/inesita.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Inesita
|
2
|
+
module Component
|
3
|
+
include VirtualDOM
|
4
|
+
|
5
|
+
def mount(element)
|
6
|
+
@virtual_dom = NodeFactory.new(method(:render), self).nodes.first
|
7
|
+
@mount_point = VirtualDOM.create(@virtual_dom)
|
8
|
+
element.inner_dom = @mount_point
|
9
|
+
end
|
10
|
+
|
11
|
+
def update
|
12
|
+
return unless @virtual_dom && @mount_point
|
13
|
+
new_virtual_dom = NodeFactory.new(method(:render), self).nodes.first
|
14
|
+
diff = VirtualDOM.diff(@virtual_dom, new_virtual_dom)
|
15
|
+
VirtualDOM.patch(@mount_point, diff)
|
16
|
+
@virtual_dom = new_virtual_dom
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inesita
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michał Kalbarczyk
|
@@ -57,7 +57,15 @@ email: fazibear@gmail.com
|
|
57
57
|
executables: []
|
58
58
|
extensions: []
|
59
59
|
extra_rdoc_files: []
|
60
|
-
files:
|
60
|
+
files:
|
61
|
+
- ".gitignore"
|
62
|
+
- Gemfile
|
63
|
+
- README.md
|
64
|
+
- Rakefile
|
65
|
+
- inesita.gemspec
|
66
|
+
- lib/inesita.rb
|
67
|
+
- opal/inesita.rb
|
68
|
+
- opal/inesita/component.rb
|
61
69
|
homepage: http://github.com/fazibear/inesita
|
62
70
|
licenses: []
|
63
71
|
metadata: {}
|