inesita 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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 [![Gem Version](https://badge.fury.io/rb/inesita.svg)](http://badge.fury.io/rb/inesita) [![Code Climate](https://codeclimate.com/github/fazibear/opal-virtual-dom/badges/gpa.svg)](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: {}
|