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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd5fc0d1b3139d2bd78b59d9bff60dcf5a2adf87
4
- data.tar.gz: e89019c01cebcbacd647cea8a294a8fd67c5518b
3
+ metadata.gz: 77fb4373eccfb01f3ebd6c6f169db4d72e081c57
4
+ data.tar.gz: 684259ad775ef36f9a9c8436de679bca534d3198
5
5
  SHA512:
6
- metadata.gz: 8316791756d264b39e3d058355016e111ff376824c8571a6b6ca01516836b1d3fa4c25d825c3cff42d01e5b207367161d4801ae1879a16993f6547cbdf71a61a
7
- data.tar.gz: f3d4de169e0978f85fec78f8fe5594d6745a8b2d5cc36389efc400881424970aba7b6d48fd2042900d95e8d8afff25aa1cc641fb89b913ff2cd6190f371126b0
6
+ metadata.gz: a87e3f22b92b0b69a802977c79cde3e6ca1f070eba1f2d7a4805a6ba26d3d92e8062f1d5fe06c3b6d106966a5e4fba1e80b55da4686c697687c973dc6b8af52d
7
+ data.tar.gz: b5c7707cf43ee54b59133fd1628de239f6dc88e17f755c0c66a219f52befb07d899bf56012ad11fbb4e7b8eeb3dddf3a0b118e53f0194b7f2aaeea2f5dd81b1a
@@ -0,0 +1,3 @@
1
+ pkg/
2
+ *.gem
3
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "https://rubygems.org"
2
+ gemspec
@@ -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
+ ```
@@ -0,0 +1,3 @@
1
+ require 'bundler'
2
+ Bundler.require
3
+ Bundler::GemHelper.install_tasks
@@ -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
@@ -0,0 +1,4 @@
1
+ require 'opal'
2
+
3
+ Opal.append_path File.expand_path('../../opal', __FILE__)
4
+ Opal.use_gem 'opal-virtual-dom'
@@ -0,0 +1,2 @@
1
+ require 'virtual_dom'
2
+ require 'inesita/component'
@@ -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.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: {}