action_component 0.1.1 → 0.2.0

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
- SHA1:
3
- metadata.gz: 255003a7f08bfb6d27d4994f5bcbd598ed1c12ad
4
- data.tar.gz: 096cf23179c4f7c49f6168d484b6af4f4396ca97
2
+ SHA256:
3
+ metadata.gz: b62740fabb047d12511ea452f934c17219d5f3ad7576cd6b30285b9bb4165931
4
+ data.tar.gz: 325d11efdc3f2a5462647c778b8b67558174e19d5e8bf7b1e0b4d24f6b10c83e
5
5
  SHA512:
6
- metadata.gz: 9c676138c609aec84ff3b027377d086e1e1d9d60b8b7a88f82a614927eed75878d5321c0269a2391dc90cda53bb1a85576c707016ac725e40849add50b2e002b
7
- data.tar.gz: 9c3a1f61257e06e780412d2d319c83a55bb82285e2e70ddf59522a3c50058592fefbcf0eccc10b3ab74dc538de2aa53af6f97d71758cea7af574352038ada8d6
6
+ metadata.gz: 4dd0655be2c7ab277216d7eb9faf91b390b5b0a5f9e2541754af5121de6680aba924648419ea5189641ce88ad62fb5867facf0373900750ed012f82ffee478c2
7
+ data.tar.gz: 61a9808b49e1ebff6b3ddb7a1c50f6c53df135190d23de2c5d926bbc264965e2cf2393f74025ea2f35519e7549d7d659ffc4fa48160f198117f13714dc5c3e67
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  *.gem
2
2
  vendor/
3
3
  .bundle/
4
+ spec/examples.txt
data/Gemfile.lock CHANGED
@@ -1,83 +1,89 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- action_component (0.1.1)
5
- actionpack (>= 4)
6
- activesupport (>= 4)
7
- railties (>= 4)
4
+ action_component (0.1.4)
5
+ actionpack (>= 4, < 7)
6
+ activesupport (>= 4, < 7)
7
+ railties (>= 4, < 7)
8
8
 
9
9
  GEM
10
10
  remote: http://rubygems.org/
11
11
  specs:
12
- actionpack (5.0.0.1)
13
- actionview (= 5.0.0.1)
14
- activesupport (= 5.0.0.1)
15
- rack (~> 2.0)
16
- rack-test (~> 0.6.3)
12
+ actionpack (6.1.4.1)
13
+ actionview (= 6.1.4.1)
14
+ activesupport (= 6.1.4.1)
15
+ rack (~> 2.0, >= 2.0.9)
16
+ rack-test (>= 0.6.3)
17
17
  rails-dom-testing (~> 2.0)
18
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
19
- actionview (5.0.0.1)
20
- activesupport (= 5.0.0.1)
18
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
19
+ actionview (6.1.4.1)
20
+ activesupport (= 6.1.4.1)
21
21
  builder (~> 3.1)
22
- erubis (~> 2.7.0)
22
+ erubi (~> 1.4)
23
23
  rails-dom-testing (~> 2.0)
24
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
25
- activesupport (5.0.0.1)
24
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
25
+ activesupport (6.1.4.1)
26
26
  concurrent-ruby (~> 1.0, >= 1.0.2)
27
- i18n (~> 0.7)
28
- minitest (~> 5.1)
29
- tzinfo (~> 1.1)
30
- builder (3.2.2)
31
- concurrent-ruby (1.0.2)
32
- diff-lcs (1.2.5)
33
- erubis (2.7.0)
34
- i18n (0.7.0)
35
- loofah (2.0.3)
27
+ i18n (>= 1.6, < 2)
28
+ minitest (>= 5.1)
29
+ tzinfo (~> 2.0)
30
+ zeitwerk (~> 2.3)
31
+ builder (3.2.4)
32
+ concurrent-ruby (1.1.9)
33
+ crass (1.0.6)
34
+ diff-lcs (1.4.4)
35
+ erubi (1.10.0)
36
+ i18n (1.8.10)
37
+ concurrent-ruby (~> 1.0)
38
+ loofah (2.12.0)
39
+ crass (~> 1.0.2)
36
40
  nokogiri (>= 1.5.9)
37
- method_source (0.8.2)
38
- mini_portile2 (2.1.0)
39
- minitest (5.9.1)
40
- nokogiri (1.6.8.1)
41
- mini_portile2 (~> 2.1.0)
42
- rack (2.0.1)
43
- rack-test (0.6.3)
44
- rack (>= 1.0)
45
- rails-dom-testing (2.0.1)
46
- activesupport (>= 4.2.0, < 6.0)
47
- nokogiri (~> 1.6.0)
48
- rails-html-sanitizer (1.0.3)
49
- loofah (~> 2.0)
50
- railties (5.0.0.1)
51
- actionpack (= 5.0.0.1)
52
- activesupport (= 5.0.0.1)
41
+ method_source (1.0.0)
42
+ mini_portile2 (2.6.1)
43
+ minitest (5.14.4)
44
+ nokogiri (1.12.4)
45
+ mini_portile2 (~> 2.6.1)
46
+ racc (~> 1.4)
47
+ racc (1.5.2)
48
+ rack (2.2.3)
49
+ rack-test (1.1.0)
50
+ rack (>= 1.0, < 3)
51
+ rails-dom-testing (2.0.3)
52
+ activesupport (>= 4.2.0)
53
+ nokogiri (>= 1.6)
54
+ rails-html-sanitizer (1.4.2)
55
+ loofah (~> 2.3)
56
+ railties (6.1.4.1)
57
+ actionpack (= 6.1.4.1)
58
+ activesupport (= 6.1.4.1)
53
59
  method_source
54
- rake (>= 0.8.7)
55
- thor (>= 0.18.1, < 2.0)
56
- rake (11.3.0)
57
- rspec (3.5.0)
58
- rspec-core (~> 3.5.0)
59
- rspec-expectations (~> 3.5.0)
60
- rspec-mocks (~> 3.5.0)
61
- rspec-core (3.5.4)
62
- rspec-support (~> 3.5.0)
63
- rspec-expectations (3.5.0)
60
+ rake (>= 0.13)
61
+ thor (~> 1.0)
62
+ rake (13.0.6)
63
+ rspec (3.10.0)
64
+ rspec-core (~> 3.10.0)
65
+ rspec-expectations (~> 3.10.0)
66
+ rspec-mocks (~> 3.10.0)
67
+ rspec-core (3.10.1)
68
+ rspec-support (~> 3.10.0)
69
+ rspec-expectations (3.10.1)
64
70
  diff-lcs (>= 1.2.0, < 2.0)
65
- rspec-support (~> 3.5.0)
66
- rspec-mocks (3.5.0)
71
+ rspec-support (~> 3.10.0)
72
+ rspec-mocks (3.10.2)
67
73
  diff-lcs (>= 1.2.0, < 2.0)
68
- rspec-support (~> 3.5.0)
69
- rspec-support (3.5.0)
70
- thor (0.19.3)
71
- thread_safe (0.3.5)
72
- tzinfo (1.2.2)
73
- thread_safe (~> 0.1)
74
+ rspec-support (~> 3.10.0)
75
+ rspec-support (3.10.2)
76
+ thor (1.1.0)
77
+ tzinfo (2.0.4)
78
+ concurrent-ruby (~> 1.0)
79
+ zeitwerk (2.4.2)
74
80
 
75
81
  PLATFORMS
76
82
  ruby
77
83
 
78
84
  DEPENDENCIES
79
85
  action_component!
80
- rspec
86
+ rspec (~> 3.5)
81
87
 
82
88
  BUNDLED WITH
83
- 1.12.5
89
+ 2.2.17
data/README.md CHANGED
@@ -86,6 +86,10 @@ class PostComponent < ActionComponent::Base
86
86
  div(class: 'post') do
87
87
  h2 @post.title
88
88
 
89
+ # This renders a div with a class of 'published-at'
90
+ # Note the underscore has been replaced with a dash.
91
+ e.div.published_at "Published at #{l @post.published_at}"
92
+
89
93
  component AuthorComponent, author: @post.author
90
94
 
91
95
  insert simple_format(@post.content)
@@ -97,7 +101,7 @@ end
97
101
  ## More documentation to come
98
102
 
99
103
  ActionComponent is new. It works just fine, but at the moment if you need more information than is given above,
100
- please dive into the (very small) codebase to learn more.
104
+ please dive into the (small) codebase to learn more.
101
105
 
102
106
  ## Contributing
103
107
 
@@ -13,11 +13,13 @@ Gem::Specification.new do |s|
13
13
  s.summary = %q{React-style components for Rails}
14
14
  s.description = %q{React-style components for Rails, mixing together the controller and a DSL language for HTML views.}
15
15
 
16
- s.add_dependency "actionpack", ">= 4"
17
- s.add_dependency "activesupport", ">= 4"
18
- s.add_dependency "railties", ">= 4"
16
+ s.required_ruby_version = '>= 2.0'
19
17
 
20
- s.add_development_dependency "rspec"
18
+ s.add_dependency "actionpack", [">= 4", "< 7"]
19
+ s.add_dependency "activesupport", [">= 4", "< 7"]
20
+ s.add_dependency "railties", [">= 4", "< 7"]
21
+
22
+ s.add_development_dependency "rspec", "~> 3.5"
21
23
 
22
24
  s.files = `git ls-files`.split("\n")
23
25
  s.test_files = `git ls-files -- spec/*`.split("\n")
@@ -8,13 +8,14 @@ module ActionComponent
8
8
  class Base
9
9
  include ActionComponent::Constraints
10
10
  include ActionComponent::Elements
11
+ prepend ActionComponent::Callbacks
11
12
 
12
13
  delegate :concat, to: :@_view
13
14
 
14
15
  def self.render(view, opts = {})
15
16
  component = new(view, opts)
16
17
  component.load
17
- component.view
18
+ component.render_view
18
19
  nil
19
20
  end
20
21
 
@@ -35,6 +36,10 @@ module ActionComponent
35
36
  raise ActionComponent::ViewMissingError, "#{self.class.name} must define a view method to be a valid component"
36
37
  end
37
38
 
39
+ def render_view
40
+ view
41
+ end
42
+
38
43
  private
39
44
 
40
45
  def method_missing(method, *args, &block)
@@ -45,6 +50,15 @@ module ActionComponent
45
50
  end
46
51
  end
47
52
 
53
+ def text(content = nil, &block)
54
+ @_view.concat content if content
55
+ @_view.concat block.call if block
56
+ nil
57
+ end
58
+
59
+ alias_method :text_node, :text
60
+ alias_method :insert, :text
61
+
48
62
  def render(*args)
49
63
  @_view.concat(@_view.render(*args))
50
64
  end
@@ -54,5 +68,13 @@ module ActionComponent
54
68
  end
55
69
 
56
70
  alias_method :render_component, :component
71
+
72
+ def form_for(*args, &block)
73
+ text @_view.form_for(*args, &block)
74
+ end
75
+
76
+ def form_tag(*args, &block)
77
+ text @_view.form_tag(*args, &block)
78
+ end
57
79
  end
58
80
  end
@@ -0,0 +1,29 @@
1
+ module ActionComponent
2
+ module Callbacks
3
+ def self.prepended(base)
4
+ base.class_attribute :before_render_callback_methods, :after_render_callback_methods
5
+
6
+ base.before_render_callback_methods = []
7
+ base.after_render_callback_methods = []
8
+
9
+ base.extend ClassMethods
10
+ end
11
+
12
+ module ClassMethods
13
+ def before_render(*methods)
14
+ self.before_render_callback_methods += methods
15
+ end
16
+
17
+ def after_render(*methods)
18
+ self.after_render_callback_methods += methods
19
+ end
20
+ end
21
+
22
+ def render_view
23
+ before_render_callback_methods.each { |method| send(method) }
24
+ result = super
25
+ after_render_callback_methods.each { |method| send(method) }
26
+ result
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,64 @@
1
+ module ActionComponent
2
+ class ElementBuilder
3
+ def initialize(base, element_name = nil, classes = nil, id = nil)
4
+ @base = base
5
+ @element_name = element_name
6
+ @classes = classes
7
+ @id = id
8
+ end
9
+
10
+ def method_missing(method, *args, &block)
11
+ element_name = @element_name
12
+ classes = @classes
13
+ id = @id
14
+
15
+ command = method.to_s
16
+
17
+ command = command[-1] == '?' ? command[0..-2] : command.gsub('_', '-')
18
+
19
+ if element_name
20
+ if command[-1] == '!'
21
+ id = command[0..-2]
22
+ else
23
+ classes = classes ? "#{classes} #{command}" : command
24
+ end
25
+ else
26
+ element_name = command
27
+ end
28
+
29
+ if !args.empty? || block
30
+ first, second = args
31
+
32
+ if second.is_a?(Hash)
33
+ build_options(classes, id, second)
34
+ elsif first.is_a?(Hash)
35
+ build_options(classes, id, first)
36
+ elsif first
37
+ second = build_options(classes, id)
38
+ else
39
+ first = build_options(classes, id)
40
+ end
41
+
42
+ @base.send(:element, element_name, first, second, &block)
43
+ else
44
+ self.class.new(@base, element_name, classes, id)
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ def build_options(classes, id, options = {})
51
+ if classes
52
+ if options[:class]
53
+ options[:class] = "#{options[:class]} #{classes}"
54
+ else
55
+ options[:class] = classes
56
+ end
57
+ end
58
+
59
+ options[:id] = id if id
60
+
61
+ options
62
+ end
63
+ end
64
+ end
@@ -21,9 +21,6 @@ module ActionComponent
21
21
 
22
22
  included do
23
23
  define_tags *ELEMENTS
24
-
25
- alias_method :text_node, :text
26
- alias_method :insert, :text
27
24
  end
28
25
 
29
26
  class_methods do
@@ -40,10 +37,6 @@ module ActionComponent
40
37
 
41
38
  private
42
39
 
43
- def text(content)
44
- @_view.concat content
45
- end
46
-
47
40
  def doctype(text = "html")
48
41
  @_view.concat("<!doctype #{h(text)}>".html_safe)
49
42
  end
@@ -51,6 +44,9 @@ module ActionComponent
51
44
  def element(name, first = nil, second = nil, &block)
52
45
  if first.is_a?(Hash)
53
46
  opts = first
47
+ elsif second.is_a?(String) || second.is_a?(Symbol)
48
+ opts = {class: second.to_s}
49
+ text = first
54
50
  else
55
51
  opts = second
56
52
  text = first
@@ -70,5 +66,9 @@ module ActionComponent
70
66
 
71
67
  nil
72
68
  end
69
+
70
+ def e
71
+ ElementBuilder.new(self)
72
+ end
73
73
  end
74
74
  end
@@ -1,3 +1,3 @@
1
1
  module ActionComponent
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -3,10 +3,19 @@ end
3
3
 
4
4
  require 'action_component/version'
5
5
 
6
+ # Rails integration
7
+
6
8
  require 'action_component/action_controller_rendering'
7
9
  require 'action_component/action_view_rendering'
10
+ require 'action_component/railtie'
11
+
12
+ # Base dependencies
13
+
14
+ require 'action_component/callbacks'
8
15
  require 'action_component/constraints'
9
16
  require 'action_component/elements'
17
+ require 'action_component/element_builder'
18
+
19
+ # Base
10
20
 
11
21
  require 'action_component/base'
12
- require 'action_component/railtie'
@@ -10,7 +10,7 @@ RSpec.describe ActionComponent::Base do
10
10
  it "makes a new component, then calls load and view, returning nil" do
11
11
  component = instance_double(ActionComponent::Base)
12
12
  expect(component).to receive(:load).ordered
13
- expect(component).to receive(:view).ordered
13
+ expect(component).to receive(:render_view).ordered
14
14
 
15
15
  expect(ActionComponent::Base).to receive(:new)
16
16
  .with(view, {option: 'value'})
@@ -47,6 +47,12 @@ RSpec.describe ActionComponent::Base do
47
47
 
48
48
  div datetime_formatter(@post.posted_at), class: "datetime"
49
49
 
50
+ text "!"
51
+
52
+ text do
53
+ "block return"
54
+ end
55
+
50
56
  render "some_view"
51
57
 
52
58
  component AuthorComponent, author: @post.author
@@ -58,7 +64,7 @@ RSpec.describe ActionComponent::Base do
58
64
  double(
59
65
  title: "Test Post",
60
66
  author: "Roger Nesbitt",
61
- posted_at: Time.parse("2016-11-28 11:09:20"),
67
+ posted_at: Time.new(2016, 11, 28, 11, 9, 20),
62
68
  )
63
69
  end
64
70
 
@@ -74,6 +80,8 @@ RSpec.describe ActionComponent::Base do
74
80
  [:concat, "content_tag [\"h2\", \"Test Post\", nil]"],
75
81
  [:content_tag, "div", "28 November 2016 11:09", {:class=>"datetime"}],
76
82
  [:concat, "content_tag [\"div\", \"28 November 2016 11:09\", {:class=>\"datetime\"}]"],
83
+ [:concat, "!"],
84
+ [:concat, "block return"],
77
85
  [:render, "some_view"],
78
86
  [:concat, "render [\"some_view\"]"],
79
87
  [:content_tag, "div", "Roger Nesbitt", nil],
@@ -82,4 +90,20 @@ RSpec.describe ActionComponent::Base do
82
90
  ]
83
91
  end
84
92
  end
93
+
94
+ describe "auto-inserting methods" do
95
+ let(:view) { double }
96
+
97
+ %w(form_for form_tag).each do |method|
98
+ it "forwards #{method} to the view and inserts its value" do
99
+ expect(view).to receive(method).with(1, 2).and_yield.and_return("result")
100
+ expect(view).to receive(:concat).with("result")
101
+
102
+ called = false
103
+ subject.send(method, 1, 2) { called = true }
104
+
105
+ expect(called).to be true
106
+ end
107
+ end
108
+ end
85
109
  end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe ActionComponent::Callbacks do
4
+ class FakeComponent
5
+ prepend ActionComponent::Callbacks
6
+
7
+ before_render :test1
8
+ before_render :test2
9
+ after_render :test3
10
+
11
+ def test1
12
+ end
13
+
14
+ def test2
15
+ end
16
+
17
+ def test3
18
+ end
19
+
20
+ def view
21
+ end
22
+
23
+ def render_view
24
+ view
25
+ end
26
+ end
27
+
28
+ subject { FakeComponent.new }
29
+
30
+ it "calls the before and after callbacks" do
31
+ expect(subject).to receive(:test1).ordered
32
+ expect(subject).to receive(:test2).ordered
33
+ expect(subject).to receive(:view).ordered.and_return('result')
34
+ expect(subject).to receive(:test3).ordered
35
+
36
+ expect(subject.render_view).to eq 'result'
37
+ end
38
+ end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe ActionComponent::ElementBuilder do
4
+ class FakeBase
5
+ def element(*args, &block)
6
+ [*args, block]
7
+ end
8
+ end
9
+
10
+ let(:base) { FakeBase.new }
11
+
12
+ subject { ActionComponent::ElementBuilder.new(base) }
13
+
14
+ it "builds a simple element" do
15
+ expect(subject.simple("test")).to eq ['simple', 'test', {}, nil]
16
+ end
17
+
18
+ it "builds an element with a class" do
19
+ expect(subject.simple.blue("test")).to eq ['simple', 'test', {class: 'blue'}, nil]
20
+ end
21
+
22
+ it "builds an element with two classes" do
23
+ expect(subject.simple.blue.loud("test")).to eq ['simple', 'test', {class: 'blue loud'}, nil]
24
+ end
25
+
26
+ it "builds an element with an id" do
27
+ expect(subject.simple.blue!("test")).to eq ['simple', 'test', {id: 'blue'}, nil]
28
+ end
29
+
30
+ it "converts underscores to dashes" do
31
+ expect(subject.simple.strong_blue("test")).to eq ['simple', 'test', {class: 'strong-blue'}, nil]
32
+ end
33
+
34
+ it "does not convert underscores to dashes if the method ends in a ?" do
35
+ expect(subject.simple.strong_blue?("test")).to eq ['simple', 'test', {class: 'strong_blue'}, nil]
36
+ end
37
+
38
+ it "merges classes with ones specified in the hash" do
39
+ expect(subject.simple.blue("test", testy: "very", class: "strong")).to eq ['simple', 'test', {testy: "very", class: 'strong blue'}, nil]
40
+ end
41
+
42
+ it "passes just a block" do
43
+ block = -> {}
44
+
45
+ expect(subject.simple.blue(&block)).to eq ['simple', {class: 'blue'}, nil, block]
46
+ end
47
+
48
+ it "passes a block with a hash" do
49
+ block = -> {}
50
+
51
+ expect(subject.simple.blue(testy: "very", &block)).to eq ['simple', {testy: "very", class: 'blue'}, nil, block]
52
+ end
53
+ end
@@ -23,14 +23,6 @@ RSpec.describe ActionComponent::Elements do
23
23
  end
24
24
  end
25
25
 
26
- describe "#text" do
27
- it "concats the supplied text" do
28
- subject.send(:text, "some content")
29
-
30
- expect(view.calls).to eq [[:concat, 'some content']]
31
- end
32
- end
33
-
34
26
  describe "#doctype" do
35
27
  it "concats a doctype tag" do
36
28
  subject.send(:doctype)
@@ -112,5 +104,27 @@ RSpec.describe ActionComponent::Elements do
112
104
  }.to raise_error ActionComponent::RenderError
113
105
  end
114
106
  end
107
+
108
+ context "when the second argument is a string" do
109
+ it "converts the second argument into a hash with the class set" do
110
+ subject.send(:element, :name, 'text', 'blue')
111
+
112
+ expect(view.calls.first).to eq [:content_tag, :name, 'text', {class: 'blue'}]
113
+ end
114
+ end
115
+
116
+ context "when the second argument is a symbol" do
117
+ it "converts the second argument into a hash with the class set" do
118
+ subject.send(:element, :name, 'text', :blue)
119
+
120
+ expect(view.calls.first).to eq [:content_tag, :name, 'text', {class: 'blue'}]
121
+ end
122
+ end
123
+ end
124
+
125
+ describe "#e" do
126
+ it "returns an ElementBuilder" do
127
+ expect(subject.send(:e)).to be_a ActionComponent::ElementBuilder
128
+ end
115
129
  end
116
130
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_component
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roger Nesbitt
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-28 00:00:00.000000000 Z
11
+ date: 2021-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '7'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,9 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '4'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '7'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: activesupport
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -31,6 +37,9 @@ dependencies:
31
37
  - - ">="
32
38
  - !ruby/object:Gem::Version
33
39
  version: '4'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '7'
34
43
  type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -38,6 +47,9 @@ dependencies:
38
47
  - - ">="
39
48
  - !ruby/object:Gem::Version
40
49
  version: '4'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '7'
41
53
  - !ruby/object:Gem::Dependency
42
54
  name: railties
43
55
  requirement: !ruby/object:Gem::Requirement
@@ -45,6 +57,9 @@ dependencies:
45
57
  - - ">="
46
58
  - !ruby/object:Gem::Version
47
59
  version: '4'
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '7'
48
63
  type: :runtime
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -52,20 +67,23 @@ dependencies:
52
67
  - - ">="
53
68
  - !ruby/object:Gem::Version
54
69
  version: '4'
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '7'
55
73
  - !ruby/object:Gem::Dependency
56
74
  name: rspec
57
75
  requirement: !ruby/object:Gem::Requirement
58
76
  requirements:
59
- - - ">="
77
+ - - "~>"
60
78
  - !ruby/object:Gem::Version
61
- version: '0'
79
+ version: '3.5'
62
80
  type: :development
63
81
  prerelease: false
64
82
  version_requirements: !ruby/object:Gem::Requirement
65
83
  requirements:
66
- - - ">="
84
+ - - "~>"
67
85
  - !ruby/object:Gem::Version
68
- version: '0'
86
+ version: '3.5'
69
87
  description: React-style components for Rails, mixing together the controller and
70
88
  a DSL language for HTML views.
71
89
  email:
@@ -84,21 +102,24 @@ files:
84
102
  - lib/action_component/action_controller_rendering.rb
85
103
  - lib/action_component/action_view_rendering.rb
86
104
  - lib/action_component/base.rb
105
+ - lib/action_component/callbacks.rb
87
106
  - lib/action_component/constraints.rb
107
+ - lib/action_component/element_builder.rb
88
108
  - lib/action_component/elements.rb
89
109
  - lib/action_component/railtie.rb
90
110
  - lib/action_component/version.rb
91
111
  - spec/action_component/base_spec.rb
112
+ - spec/action_component/callbacks_spec.rb
92
113
  - spec/action_component/constraints_spec.rb
114
+ - spec/action_component/element_builder_spec.rb
93
115
  - spec/action_component/elements_spec.rb
94
- - spec/examples.txt
95
116
  - spec/fake_view.rb
96
117
  - spec/spec_helper.rb
97
118
  homepage: https://github.com/mogest/action_component
98
119
  licenses:
99
120
  - MIT
100
121
  metadata: {}
101
- post_install_message:
122
+ post_install_message:
102
123
  rdoc_options: []
103
124
  require_paths:
104
125
  - lib
@@ -106,22 +127,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
127
  requirements:
107
128
  - - ">="
108
129
  - !ruby/object:Gem::Version
109
- version: '0'
130
+ version: '2.0'
110
131
  required_rubygems_version: !ruby/object:Gem::Requirement
111
132
  requirements:
112
133
  - - ">="
113
134
  - !ruby/object:Gem::Version
114
135
  version: '0'
115
136
  requirements: []
116
- rubyforge_project:
117
- rubygems_version: 2.5.1
118
- signing_key:
137
+ rubygems_version: 3.1.6
138
+ signing_key:
119
139
  specification_version: 4
120
140
  summary: React-style components for Rails
121
141
  test_files:
122
142
  - spec/action_component/base_spec.rb
143
+ - spec/action_component/callbacks_spec.rb
123
144
  - spec/action_component/constraints_spec.rb
145
+ - spec/action_component/element_builder_spec.rb
124
146
  - spec/action_component/elements_spec.rb
125
- - spec/examples.txt
126
147
  - spec/fake_view.rb
127
148
  - spec/spec_helper.rb
data/spec/examples.txt DELETED
@@ -1,21 +0,0 @@
1
- example_id | status | run_time |
2
- ------------------------------------------------- | ------ | --------------- |
3
- ./spec/action_component/base_spec.rb[1:1:1] | passed | 0.01317 seconds |
4
- ./spec/action_component/base_spec.rb[1:2:1] | passed | 0.00018 seconds |
5
- ./spec/action_component/base_spec.rb[1:3:1] | passed | 0.00012 seconds |
6
- ./spec/action_component/base_spec.rb[1:4:1] | passed | 0.00139 seconds |
7
- ./spec/action_component/constraints_spec.rb[1:1] | passed | 0.00006 seconds |
8
- ./spec/action_component/constraints_spec.rb[1:2] | passed | 0.00012 seconds |
9
- ./spec/action_component/constraints_spec.rb[1:3] | passed | 0.00017 seconds |
10
- ./spec/action_component/constraints_spec.rb[1:4] | passed | 0.00202 seconds |
11
- ./spec/action_component/elements_spec.rb[1:1:1] | passed | 0.00017 seconds |
12
- ./spec/action_component/elements_spec.rb[1:2:1] | passed | 0.00009 seconds |
13
- ./spec/action_component/elements_spec.rb[1:3:1] | passed | 0.00015 seconds |
14
- ./spec/action_component/elements_spec.rb[1:3:2] | passed | 0.00448 seconds |
15
- ./spec/action_component/elements_spec.rb[1:4:1] | passed | 0.00014 seconds |
16
- ./spec/action_component/elements_spec.rb[1:5:1:1] | passed | 0.00015 seconds |
17
- ./spec/action_component/elements_spec.rb[1:5:2:1] | passed | 0.0001 seconds |
18
- ./spec/action_component/elements_spec.rb[1:5:3:1] | passed | 0.00019 seconds |
19
- ./spec/action_component/elements_spec.rb[1:5:4:1] | passed | 0.00014 seconds |
20
- ./spec/action_component/elements_spec.rb[1:5:5:1] | passed | 0.00148 seconds |
21
- ./spec/action_component/elements_spec.rb[1:5:6:1] | passed | 0.00024 seconds |