phlexible 3.0.0 → 3.1.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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +42 -8
  3. data/.ruby-version +1 -1
  4. data/Appraisals +18 -4
  5. data/README.md +71 -7
  6. data/Rakefile +4 -4
  7. data/gemfiles/phlex1_rails7.gemfile +24 -0
  8. data/gemfiles/phlex1_rails7.gemfile.lock +464 -0
  9. data/gemfiles/phlex1_rails8.gemfile +24 -0
  10. data/gemfiles/phlex1_rails8.gemfile.lock +463 -0
  11. data/gemfiles/phlex2_rails7.gemfile +24 -0
  12. data/gemfiles/phlex2_rails7.gemfile.lock +471 -0
  13. data/gemfiles/phlex2_rails8.gemfile +24 -0
  14. data/gemfiles/phlex2_rails8.gemfile.lock +470 -0
  15. data/lib/phlexible/page_title.rb +13 -13
  16. data/lib/phlexible/process_attributes.rb +58 -0
  17. data/lib/phlexible/rails/action_controller/implicit_render.rb +15 -7
  18. data/lib/phlexible/rails/button_to_concerns.rb +71 -70
  19. data/lib/phlexible/rails/controller_variables.rb +52 -49
  20. data/lib/phlexible/version.rb +1 -1
  21. metadata +13 -27
  22. data/Gemfile +0 -13
  23. data/Gemfile.lock +0 -257
  24. data/config/render_helper.rb +0 -27
  25. data/config/sus.rb +0 -8
  26. data/fixtures/dummy/app/controllers/articles_controller.rb +0 -4
  27. data/fixtures/dummy/app/views/articles/index.html.erb +0 -1
  28. data/fixtures/dummy/app/views/articles/link.rb +0 -9
  29. data/fixtures/dummy/app/views/articles/show.rb +0 -7
  30. data/fixtures/dummy/config/database.yml +0 -3
  31. data/fixtures/dummy/config/routes.rb +0 -5
  32. data/fixtures/dummy/config/storage.yml +0 -3
  33. data/fixtures/dummy/db/schema.rb +0 -6
  34. data/fixtures/dummy/log/.gitignore +0 -1
  35. data/fixtures/dummy/public/favicon.ico +0 -0
  36. data/fixtures/rails_helper.rb +0 -11
  37. data/gemfiles/phlex_1.gemfile +0 -14
  38. data/gemfiles/phlex_1.gemfile.lock +0 -253
  39. data/gemfiles/phlex_2.gemfile +0 -14
  40. data/gemfiles/phlex_2.gemfile.lock +0 -254
  41. data/phlexible.gemspec +0 -37
@@ -20,6 +20,7 @@ module Phlexible
20
20
 
21
21
  included do
22
22
  include Phlex::Rails::Helpers::URLFor
23
+
23
24
  register_value_helper :protect_against_forgery?
24
25
  register_value_helper :request_forgery_protection_token
25
26
  register_value_helper :form_authenticity_token
@@ -51,90 +52,90 @@ module Phlexible
51
52
 
52
53
  private
53
54
 
54
- def form_attributes
55
- {
56
- class: @options.delete(:form_class), # @deprecated
57
- **(@options.delete(:form_attributes) || {})
58
- }
59
- end
55
+ def form_attributes
56
+ {
57
+ class: @options.delete(:form_class), # @deprecated
58
+ **(@options.delete(:form_attributes) || {})
59
+ }
60
+ end
60
61
 
61
- def button_attrs
62
- {
63
- type: 'submit',
64
- **@options
65
- }
66
- end
62
+ def button_attrs
63
+ {
64
+ type: 'submit',
65
+ **@options
66
+ }
67
+ end
67
68
 
68
- def method_for_options(options)
69
- if options.is_a?(Array)
70
- method_for_options(options.last)
71
- elsif options.respond_to?(:persisted?)
72
- options.persisted? ? :patch : :post
73
- elsif options.respond_to?(:to_model)
74
- method_for_options(options.to_model)
69
+ def method_for_options(options)
70
+ if options.is_a?(Array)
71
+ method_for_options(options.last)
72
+ elsif options.respond_to?(:persisted?)
73
+ options.persisted? ? :patch : :post
74
+ elsif options.respond_to?(:to_model)
75
+ method_for_options(options.to_model)
76
+ end
75
77
  end
76
- end
77
78
 
78
- def token_input(action, method)
79
- return unless protect_against_forgery?
79
+ def token_input(action, method)
80
+ return if !protect_against_forgery?
80
81
 
81
- name = request_forgery_protection_token.to_s
82
- value = form_authenticity_token(form_options: { action: action, method: method })
82
+ name = request_forgery_protection_token.to_s
83
+ value = form_authenticity_token(form_options: { action: action, method: method })
83
84
 
84
- input type: 'hidden', name: name, value: value, autocomplete: 'off'
85
- end
85
+ input type: 'hidden', name: name, value: value, autocomplete: 'off'
86
+ end
86
87
 
87
- def method_tag(method)
88
- return unless BUTTON_TAG_METHOD_VERBS.include?(method)
88
+ def method_tag(method)
89
+ return if BUTTON_TAG_METHOD_VERBS.exclude?(method)
89
90
 
90
- input type: 'hidden', name: '_method', value: method.to_s, autocomplete: 'off'
91
- end
91
+ input type: 'hidden', name: '_method', value: method.to_s, autocomplete: 'off'
92
+ end
92
93
 
93
- def param_inputs
94
- return unless (params = @options.delete(:params))
94
+ def param_inputs
95
+ return if !(params = @options.delete(:params))
95
96
 
96
- to_form_params(params).each do |param|
97
- input type: 'hidden', name: param[:name], value: param[:value], autocomplete: 'off'
97
+ to_form_params(params).each do |param|
98
+ input type: 'hidden', name: param[:name], value: param[:value], autocomplete: 'off'
99
+ end
98
100
  end
99
- end
100
101
 
101
- # Returns an array of hashes each containing :name and :value keys suitable for use as the
102
- # names and values of form input fields:
103
- #
104
- # to_form_params(name: 'David', nationality: 'Danish')
105
- # # => [{name: 'name', value: 'David'}, {name: 'nationality', value: 'Danish'}]
106
- #
107
- # to_form_params(country: { name: 'Denmark' })
108
- # # => [{name: 'country[name]', value: 'Denmark'}]
109
- #
110
- # to_form_params(countries: ['Denmark', 'Sweden']})
111
- # # => [{name: 'countries[]', value: 'Denmark'}, {name: 'countries[]', value: 'Sweden'}]
112
- #
113
- # An optional namespace can be passed to enclose key names:
114
- #
115
- # to_form_params({ name: 'Denmark' }, 'country')
116
- # # => [{name: 'country[name]', value: 'Denmark'}]
117
- def to_form_params(attribute, namespace = nil)
118
- attribute = attribute.to_h if attribute.respond_to?(:permitted?)
119
-
120
- params = []
121
- case attribute
122
- when Hash
123
- attribute.each do |key, value|
124
- prefix = namespace ? "#{namespace}[#{key}]" : key
125
- params.push(*to_form_params(value, prefix))
102
+ # Returns an array of hashes each containing :name and :value keys suitable for use as the
103
+ # names and values of form input fields:
104
+ #
105
+ # to_form_params(name: 'David', nationality: 'Danish')
106
+ # # => [{name: 'name', value: 'David'}, {name: 'nationality', value: 'Danish'}]
107
+ #
108
+ # to_form_params(country: { name: 'Denmark' })
109
+ # # => [{name: 'country[name]', value: 'Denmark'}]
110
+ #
111
+ # to_form_params(countries: ['Denmark', 'Sweden']})
112
+ # # => [{name: 'countries[]', value: 'Denmark'}, {name: 'countries[]', value: 'Sweden'}]
113
+ #
114
+ # An optional namespace can be passed to enclose key names:
115
+ #
116
+ # to_form_params({ name: 'Denmark' }, 'country')
117
+ # # => [{name: 'country[name]', value: 'Denmark'}]
118
+ def to_form_params(attribute, namespace = nil)
119
+ attribute = attribute.to_h if attribute.respond_to?(:permitted?)
120
+
121
+ params = []
122
+ case attribute
123
+ when Hash
124
+ attribute.each do |key, value|
125
+ prefix = namespace ? "#{namespace}[#{key}]" : key
126
+ params.push(*to_form_params(value, prefix))
127
+ end
128
+ when Array
129
+ array_prefix = "#{namespace}[]"
130
+ attribute.each do |value|
131
+ params.push(*to_form_params(value, array_prefix))
132
+ end
133
+ else
134
+ params << { name: namespace.to_s, value: attribute.to_param }
126
135
  end
127
- when Array
128
- array_prefix = "#{namespace}[]"
129
- attribute.each do |value|
130
- params.push(*to_form_params(value, array_prefix))
131
- end
132
- else
133
- params << { name: namespace.to_s, value: attribute.to_param }
134
- end
135
136
 
136
- params.sort_by { |pair| pair[:name] }
137
- end
137
+ params.sort_by { |pair| pair[:name] }
138
+ end
138
139
  end
139
140
  end
140
141
  end
@@ -42,68 +42,71 @@ module Phlexible
42
42
 
43
43
  private
44
44
 
45
- def define_controller_variables
46
- return unless respond_to?(:__controller_variables__)
47
-
48
- view_assigns = view_assigns()
49
- view = @view
50
-
51
- vars = (view&.__controller_variables__ || Set.new) + __controller_variables__
52
- vars.each do |k, v|
53
- allow_undefined = true
54
- if k.ends_with?('!')
55
- allow_undefined = false
56
- k = k.chop
57
- end
45
+ def define_controller_variables
46
+ return if !respond_to?(:__controller_variables__)
47
+
48
+ view_assigns = view_assigns()
49
+ view = @view
50
+
51
+ vars = (view&.__controller_variables__ || Set.new) + __controller_variables__
52
+ vars.each do |k, v|
53
+ allow_undefined = true
54
+ if k.ends_with?('!')
55
+ allow_undefined = false
56
+ k = k.chop
57
+ end
58
58
 
59
- raise ControllerVariables::UndefinedVariable, k if !allow_undefined && !view_assigns.key?(k)
59
+ if !allow_undefined && !view_assigns.key?(k)
60
+ raise ControllerVariables::UndefinedVariable,
61
+ k
62
+ end
60
63
 
61
- instance_variable_set(:"@#{v}", view_assigns[k])
62
- view&.instance_variable_set(:"@#{v}", view_assigns[k])
64
+ instance_variable_set(:"@#{v}", view_assigns[k])
65
+ view&.instance_variable_set(:"@#{v}", view_assigns[k])
66
+ end
63
67
  end
64
- end
65
68
 
66
- module ClassMethods
67
- # /*
68
- def controller_variable(*names, **kwargs)
69
- if names.empty? && kwargs.empty?
70
- raise ArgumentError, 'You must provide at least one variable name and/or a hash of ' \
71
- 'variable names and options.'
72
- end
69
+ module ClassMethods
70
+ # /*
71
+ def controller_variable(*names, **kwargs)
72
+ if names.empty? && kwargs.empty?
73
+ raise ArgumentError, 'You must provide at least one variable name and/or a hash of ' \
74
+ 'variable names and options.'
75
+ end
73
76
 
74
- allow_undefined = kwargs.delete(:allow_undefined)
75
- as = kwargs.delete(:as)
77
+ allow_undefined = kwargs.delete(:allow_undefined)
78
+ as = kwargs.delete(:as)
76
79
 
77
- if names.count > 1 && as
78
- raise ArgumentError, 'You cannot provide the `as:` option when passing multiple ' \
79
- 'variable names.'
80
- end
81
-
82
- names.each do |name|
83
- name_as = as || name
84
- name = "#{name}!" unless allow_undefined
80
+ if names.many? && as
81
+ raise ArgumentError, 'You cannot provide the `as:` option when passing multiple ' \
82
+ 'variable names.'
83
+ end
85
84
 
86
- self.__controller_variables__ += { name.to_s => name_as.to_s }
87
- end
85
+ names.each do |name|
86
+ name_as = as || name
87
+ name = "#{name}!" if !allow_undefined
88
88
 
89
- kwargs.each do |k, v|
90
- if v.is_a?(Hash)
91
- name = v.key?(:as) ? v[:as].to_s : k.to_s
89
+ self.__controller_variables__ += { name.to_s => name_as.to_s }
90
+ end
92
91
 
93
- if v.key?(:allow_undefined)
94
- k = "#{k}!" unless v[:allow_undefined]
95
- elsif !allow_undefined
96
- k = "#{k}!"
92
+ kwargs.each do |k, v|
93
+ if v.is_a?(Hash)
94
+ name = v.key?(:as) ? v[:as].to_s : k.to_s
95
+
96
+ if v.key?(:allow_undefined)
97
+ k = "#{k}!" if !v[:allow_undefined]
98
+ elsif !allow_undefined
99
+ k = "#{k}!"
100
+ end
101
+ else
102
+ name = v.to_s
103
+ k = "#{k}!" if !allow_undefined
97
104
  end
98
- else
99
- name = v.to_s
100
- k = "#{k}!" unless allow_undefined
101
- end
102
105
 
103
- self.__controller_variables__ += { k.to_s => name }
106
+ self.__controller_variables__ += { k.to_s => name }
107
+ end
104
108
  end
105
109
  end
106
- end
107
110
  end
108
111
  end
109
112
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Phlexible
4
- VERSION = '3.0.0'
4
+ VERSION = '3.1.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phlexible
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Moss
8
- autorequire:
9
- bindir: exe
8
+ bindir: bin
10
9
  cert_chain: []
11
- date: 2025-04-22 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: phlex
@@ -96,33 +95,23 @@ files:
96
95
  - ".ruby-version"
97
96
  - Appraisals
98
97
  - CODE_OF_CONDUCT.md
99
- - Gemfile
100
- - Gemfile.lock
101
98
  - LICENSE.txt
102
99
  - README.md
103
100
  - Rakefile
104
- - config/render_helper.rb
105
- - config/sus.rb
106
- - fixtures/dummy/app/controllers/articles_controller.rb
107
- - fixtures/dummy/app/views/articles/index.html.erb
108
- - fixtures/dummy/app/views/articles/link.rb
109
- - fixtures/dummy/app/views/articles/show.rb
110
- - fixtures/dummy/config/database.yml
111
- - fixtures/dummy/config/routes.rb
112
- - fixtures/dummy/config/storage.yml
113
- - fixtures/dummy/db/schema.rb
114
- - fixtures/dummy/log/.gitignore
115
- - fixtures/dummy/public/favicon.ico
116
- - fixtures/rails_helper.rb
117
101
  - gemfiles/.bundle/config
118
- - gemfiles/phlex_1.gemfile
119
- - gemfiles/phlex_1.gemfile.lock
120
- - gemfiles/phlex_2.gemfile
121
- - gemfiles/phlex_2.gemfile.lock
102
+ - gemfiles/phlex1_rails7.gemfile
103
+ - gemfiles/phlex1_rails7.gemfile.lock
104
+ - gemfiles/phlex1_rails8.gemfile
105
+ - gemfiles/phlex1_rails8.gemfile.lock
106
+ - gemfiles/phlex2_rails7.gemfile
107
+ - gemfiles/phlex2_rails7.gemfile.lock
108
+ - gemfiles/phlex2_rails8.gemfile
109
+ - gemfiles/phlex2_rails8.gemfile.lock
122
110
  - lib/phlexible.rb
123
111
  - lib/phlexible/alias_view.rb
124
112
  - lib/phlexible/callbacks.rb
125
113
  - lib/phlexible/page_title.rb
114
+ - lib/phlexible/process_attributes.rb
126
115
  - lib/phlexible/rails/a_element.rb
127
116
  - lib/phlexible/rails/action_controller/implicit_render.rb
128
117
  - lib/phlexible/rails/action_controller/meta_tags.rb
@@ -133,7 +122,6 @@ files:
133
122
  - lib/phlexible/rails/responder.rb
134
123
  - lib/phlexible/rails/view_assigns.rb
135
124
  - lib/phlexible/version.rb
136
- - phlexible.gemspec
137
125
  homepage: https://github.com/joelmoss/phlexible
138
126
  licenses:
139
127
  - MIT
@@ -142,7 +130,6 @@ metadata:
142
130
  source_code_uri: https://github.com/joelmoss/phlexible
143
131
  changelog_uri: https://github.com/joelmoss/phlexible/releases
144
132
  rubygems_mfa_required: 'true'
145
- post_install_message:
146
133
  rdoc_options: []
147
134
  require_paths:
148
135
  - lib
@@ -157,8 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
144
  - !ruby/object:Gem::Version
158
145
  version: '0'
159
146
  requirements: []
160
- rubygems_version: 3.5.22
161
- signing_key:
147
+ rubygems_version: 4.0.4
162
148
  specification_version: 4
163
149
  summary: A bunch of helpers and goodies intended to make life with Phlex even easier!
164
150
  test_files: []
data/Gemfile DELETED
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- # Specify your gem's dependencies in phlexible.gemspec
6
- gemspec
7
-
8
- gem 'appraisal'
9
- gem 'combustion'
10
- gem 'debug'
11
- gem 'rake', '~> 13.0'
12
- gem 'rubocop', '~> 1.55'
13
- gem 'sus'
data/Gemfile.lock DELETED
@@ -1,257 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- phlexible (3.0.0)
5
- phlex (>= 1.10.0, < 3.0.0)
6
- phlex-rails (>= 1.2.0, < 3.0.0)
7
- rails (>= 7.2.0, < 9.0.0)
8
- zeitwerk (~> 2.7.2)
9
-
10
- GEM
11
- remote: https://rubygems.org/
12
- specs:
13
- actioncable (8.0.2)
14
- actionpack (= 8.0.2)
15
- activesupport (= 8.0.2)
16
- nio4r (~> 2.0)
17
- websocket-driver (>= 0.6.1)
18
- zeitwerk (~> 2.6)
19
- actionmailbox (8.0.2)
20
- actionpack (= 8.0.2)
21
- activejob (= 8.0.2)
22
- activerecord (= 8.0.2)
23
- activestorage (= 8.0.2)
24
- activesupport (= 8.0.2)
25
- mail (>= 2.8.0)
26
- actionmailer (8.0.2)
27
- actionpack (= 8.0.2)
28
- actionview (= 8.0.2)
29
- activejob (= 8.0.2)
30
- activesupport (= 8.0.2)
31
- mail (>= 2.8.0)
32
- rails-dom-testing (~> 2.2)
33
- actionpack (8.0.2)
34
- actionview (= 8.0.2)
35
- activesupport (= 8.0.2)
36
- nokogiri (>= 1.8.5)
37
- rack (>= 2.2.4)
38
- rack-session (>= 1.0.1)
39
- rack-test (>= 0.6.3)
40
- rails-dom-testing (~> 2.2)
41
- rails-html-sanitizer (~> 1.6)
42
- useragent (~> 0.16)
43
- actiontext (8.0.2)
44
- actionpack (= 8.0.2)
45
- activerecord (= 8.0.2)
46
- activestorage (= 8.0.2)
47
- activesupport (= 8.0.2)
48
- globalid (>= 0.6.0)
49
- nokogiri (>= 1.8.5)
50
- actionview (8.0.2)
51
- activesupport (= 8.0.2)
52
- builder (~> 3.1)
53
- erubi (~> 1.11)
54
- rails-dom-testing (~> 2.2)
55
- rails-html-sanitizer (~> 1.6)
56
- activejob (8.0.2)
57
- activesupport (= 8.0.2)
58
- globalid (>= 0.3.6)
59
- activemodel (8.0.2)
60
- activesupport (= 8.0.2)
61
- activerecord (8.0.2)
62
- activemodel (= 8.0.2)
63
- activesupport (= 8.0.2)
64
- timeout (>= 0.4.0)
65
- activestorage (8.0.2)
66
- actionpack (= 8.0.2)
67
- activejob (= 8.0.2)
68
- activerecord (= 8.0.2)
69
- activesupport (= 8.0.2)
70
- marcel (~> 1.0)
71
- activesupport (8.0.2)
72
- base64
73
- benchmark (>= 0.3)
74
- bigdecimal
75
- concurrent-ruby (~> 1.0, >= 1.3.1)
76
- connection_pool (>= 2.2.5)
77
- drb
78
- i18n (>= 1.6, < 2)
79
- logger (>= 1.4.2)
80
- minitest (>= 5.1)
81
- securerandom (>= 0.3)
82
- tzinfo (~> 2.0, >= 2.0.5)
83
- uri (>= 0.13.1)
84
- appraisal (2.5.0)
85
- bundler
86
- rake
87
- thor (>= 0.14.0)
88
- ast (2.4.3)
89
- base64 (0.2.0)
90
- benchmark (0.4.0)
91
- bigdecimal (3.1.9)
92
- builder (3.3.0)
93
- combustion (1.5.0)
94
- activesupport (>= 3.0.0)
95
- railties (>= 3.0.0)
96
- thor (>= 0.14.6)
97
- concurrent-ruby (1.3.5)
98
- connection_pool (2.5.1)
99
- crass (1.0.6)
100
- date (3.4.1)
101
- debug (1.10.0)
102
- irb (~> 1.10)
103
- reline (>= 0.3.8)
104
- drb (2.2.1)
105
- erubi (1.13.1)
106
- globalid (1.2.1)
107
- activesupport (>= 6.1)
108
- i18n (1.14.7)
109
- concurrent-ruby (~> 1.0)
110
- io-console (0.8.0)
111
- irb (1.15.2)
112
- pp (>= 0.6.0)
113
- rdoc (>= 4.0.0)
114
- reline (>= 0.4.2)
115
- json (2.10.2)
116
- language_server-protocol (3.17.0.4)
117
- lint_roller (1.1.0)
118
- logger (1.7.0)
119
- loofah (2.24.0)
120
- crass (~> 1.0.2)
121
- nokogiri (>= 1.12.0)
122
- mail (2.8.1)
123
- mini_mime (>= 0.1.1)
124
- net-imap
125
- net-pop
126
- net-smtp
127
- marcel (1.0.4)
128
- mini_mime (1.1.5)
129
- minitest (5.25.5)
130
- net-imap (0.5.7)
131
- date
132
- net-protocol
133
- net-pop (0.1.2)
134
- net-protocol
135
- net-protocol (0.2.2)
136
- timeout
137
- net-smtp (0.5.1)
138
- net-protocol
139
- nio4r (2.7.4)
140
- nokogiri (1.18.8-arm64-darwin)
141
- racc (~> 1.4)
142
- nokogiri (1.18.8-x86_64-darwin)
143
- racc (~> 1.4)
144
- nokogiri (1.18.8-x86_64-linux-gnu)
145
- racc (~> 1.4)
146
- parallel (1.27.0)
147
- parser (3.3.8.0)
148
- ast (~> 2.4.1)
149
- racc
150
- phlex (2.2.1)
151
- zeitwerk (~> 2.7)
152
- phlex-rails (2.2.0)
153
- phlex (~> 2.2.1)
154
- railties (>= 7.1, < 9)
155
- pp (0.6.2)
156
- prettyprint
157
- prettyprint (0.2.0)
158
- prism (1.4.0)
159
- psych (5.2.3)
160
- date
161
- stringio
162
- racc (1.8.1)
163
- rack (3.1.13)
164
- rack-session (2.1.0)
165
- base64 (>= 0.1.0)
166
- rack (>= 3.0.0)
167
- rack-test (2.2.0)
168
- rack (>= 1.3)
169
- rackup (2.2.1)
170
- rack (>= 3)
171
- rails (8.0.2)
172
- actioncable (= 8.0.2)
173
- actionmailbox (= 8.0.2)
174
- actionmailer (= 8.0.2)
175
- actionpack (= 8.0.2)
176
- actiontext (= 8.0.2)
177
- actionview (= 8.0.2)
178
- activejob (= 8.0.2)
179
- activemodel (= 8.0.2)
180
- activerecord (= 8.0.2)
181
- activestorage (= 8.0.2)
182
- activesupport (= 8.0.2)
183
- bundler (>= 1.15.0)
184
- railties (= 8.0.2)
185
- rails-dom-testing (2.2.0)
186
- activesupport (>= 5.0.0)
187
- minitest
188
- nokogiri (>= 1.6)
189
- rails-html-sanitizer (1.6.2)
190
- loofah (~> 2.21)
191
- nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
192
- railties (8.0.2)
193
- actionpack (= 8.0.2)
194
- activesupport (= 8.0.2)
195
- irb (~> 1.13)
196
- rackup (>= 1.0.0)
197
- rake (>= 12.2)
198
- thor (~> 1.0, >= 1.2.2)
199
- zeitwerk (~> 2.6)
200
- rainbow (3.1.1)
201
- rake (13.2.1)
202
- rdoc (6.13.1)
203
- psych (>= 4.0.0)
204
- regexp_parser (2.10.0)
205
- reline (0.6.1)
206
- io-console (~> 0.5)
207
- rubocop (1.75.3)
208
- json (~> 2.3)
209
- language_server-protocol (~> 3.17.0.2)
210
- lint_roller (~> 1.1.0)
211
- parallel (~> 1.10)
212
- parser (>= 3.3.0.2)
213
- rainbow (>= 2.2.2, < 4.0)
214
- regexp_parser (>= 2.9.3, < 3.0)
215
- rubocop-ast (>= 1.44.0, < 2.0)
216
- ruby-progressbar (~> 1.7)
217
- unicode-display_width (>= 2.4.0, < 4.0)
218
- rubocop-ast (1.44.1)
219
- parser (>= 3.3.7.2)
220
- prism (~> 1.4)
221
- ruby-progressbar (1.13.0)
222
- securerandom (0.4.1)
223
- stringio (3.1.7)
224
- sus (0.32.0)
225
- thor (1.3.2)
226
- timeout (0.4.3)
227
- tzinfo (2.0.6)
228
- concurrent-ruby (~> 1.0)
229
- unicode-display_width (3.1.4)
230
- unicode-emoji (~> 4.0, >= 4.0.4)
231
- unicode-emoji (4.0.4)
232
- uri (1.0.3)
233
- useragent (0.16.11)
234
- websocket-driver (0.7.7)
235
- base64
236
- websocket-extensions (>= 0.1.0)
237
- websocket-extensions (0.1.5)
238
- zeitwerk (2.7.2)
239
-
240
- PLATFORMS
241
- arm64-darwin-22
242
- arm64-darwin-23
243
- arm64-darwin-24
244
- x86_64-darwin-19
245
- x86_64-linux
246
-
247
- DEPENDENCIES
248
- appraisal
249
- combustion
250
- debug
251
- phlexible!
252
- rake (~> 13.0)
253
- rubocop (~> 1.55)
254
- sus
255
-
256
- BUNDLED WITH
257
- 2.4.1
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RenderHelper
4
- def render_to_html(component)
5
- view_context.render(component)
6
- end
7
-
8
- def render_to_nokogiri_fragment(...)
9
- html = render_to_html(...)
10
- Nokogiri::HTML5.fragment(html)
11
- end
12
-
13
- def render_to_nokogiri_document(...)
14
- html = render_to_html(...)
15
- Nokogiri::HTML5(html)
16
- end
17
-
18
- private
19
-
20
- def view_context
21
- controller.view_context
22
- end
23
-
24
- def controller
25
- @controller ||= ActionView::TestCase::TestController.new
26
- end
27
- end
data/config/sus.rb DELETED
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'phlexible'
4
- require 'bundler'
5
-
6
- Bundler.require :test
7
-
8
- require_relative 'render_helper'