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 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: {}