phlexible 2.2.0 → 3.1.0

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +44 -12
  3. data/.ruby-version +1 -0
  4. data/Appraisals +25 -0
  5. data/README.md +85 -2
  6. data/Rakefile +4 -4
  7. data/gemfiles/.bundle/config +2 -0
  8. data/gemfiles/phlex1_rails7.gemfile +24 -0
  9. data/gemfiles/phlex1_rails7.gemfile.lock +464 -0
  10. data/gemfiles/phlex1_rails8.gemfile +24 -0
  11. data/gemfiles/phlex1_rails8.gemfile.lock +463 -0
  12. data/gemfiles/phlex2_rails7.gemfile +24 -0
  13. data/gemfiles/phlex2_rails7.gemfile.lock +471 -0
  14. data/gemfiles/phlex2_rails8.gemfile +24 -0
  15. data/gemfiles/phlex2_rails8.gemfile.lock +470 -0
  16. data/lib/phlexible/page_title.rb +13 -13
  17. data/lib/phlexible/process_attributes.rb +56 -0
  18. data/lib/phlexible/rails/a_element.rb +7 -1
  19. data/lib/phlexible/rails/action_controller/implicit_render.rb +15 -7
  20. data/lib/phlexible/rails/button_to.rb +0 -113
  21. data/lib/phlexible/rails/button_to_concerns.rb +141 -0
  22. data/lib/phlexible/rails/controller_variables.rb +52 -46
  23. data/lib/phlexible/rails/meta_tags_component.rb +3 -1
  24. data/lib/phlexible/rails/view_assigns.rb +17 -0
  25. data/lib/phlexible/version.rb +1 -1
  26. data/lib/phlexible.rb +6 -5
  27. metadata +58 -27
  28. data/Gemfile +0 -13
  29. data/Gemfile.lock +0 -169
  30. data/config/sus.rb +0 -8
  31. data/config/view_helper.rb +0 -16
  32. data/fixtures/dummy/app/controllers/articles_controller.rb +0 -4
  33. data/fixtures/dummy/app/views/articles/index.html.erb +0 -1
  34. data/fixtures/dummy/app/views/articles/link.rb +0 -9
  35. data/fixtures/dummy/app/views/articles/show.rb +0 -7
  36. data/fixtures/dummy/config/database.yml +0 -3
  37. data/fixtures/dummy/config/routes.rb +0 -5
  38. data/fixtures/dummy/config/storage.yml +0 -3
  39. data/fixtures/dummy/db/schema.rb +0 -6
  40. data/fixtures/dummy/log/.gitignore +0 -1
  41. data/fixtures/dummy/public/favicon.ico +0 -0
  42. data/fixtures/rails_helper.rb +0 -10
  43. data/lib/phlexible/rails.rb +0 -20
  44. data/phlexible.gemspec +0 -35
@@ -15,119 +15,6 @@
15
15
  # - :params - Hash of parameters to be rendered as hidden fields within the form.
16
16
  module Phlexible
17
17
  module Rails
18
- module ButtonToConcerns
19
- BUTTON_TAG_METHOD_VERBS = %w[patch put delete].freeze
20
- DEFAULT_OPTIONS = { method: 'post', form_class: 'button_to', params: {} }.freeze
21
-
22
- def initialize(url, options = nil)
23
- @url = url
24
- @options = options
25
- end
26
-
27
- def view_template(&block) # rubocop:disable Metrics/AbcSize
28
- action = helpers.url_for(@url)
29
- @options = DEFAULT_OPTIONS.merge((@options || {}).symbolize_keys)
30
-
31
- method = (@options.delete(:method).presence || method_for_options(@options)).to_s
32
- form_method = method == 'get' ? 'get' : 'post'
33
-
34
- form action: action, method: form_method, **form_attributes do
35
- method_tag method
36
- form_method == 'post' && token_input(action, method.empty? ? 'post' : method)
37
- param_inputs
38
-
39
- block_given? ? button(**button_attrs, &block) : button(**button_attrs) { @name }
40
- end
41
- end
42
-
43
- private
44
-
45
- def form_attributes
46
- {
47
- class: @options.delete(:form_class), # @deprecated
48
- **(@options.delete(:form_attributes) || {})
49
- }
50
- end
51
-
52
- def button_attrs
53
- {
54
- type: 'submit',
55
- **@options
56
- }
57
- end
58
-
59
- def method_for_options(options)
60
- if options.is_a?(Array)
61
- method_for_options(options.last)
62
- elsif options.respond_to?(:persisted?)
63
- options.persisted? ? :patch : :post
64
- elsif options.respond_to?(:to_model)
65
- method_for_options(options.to_model)
66
- end
67
- end
68
-
69
- def token_input(action, method)
70
- return unless helpers.protect_against_forgery?
71
-
72
- name = helpers.request_forgery_protection_token.to_s
73
- value = helpers.form_authenticity_token(form_options: { action: action, method: method })
74
-
75
- input type: 'hidden', name: name, value: value, autocomplete: 'off'
76
- end
77
-
78
- def method_tag(method)
79
- return unless BUTTON_TAG_METHOD_VERBS.include?(method)
80
-
81
- input type: 'hidden', name: '_method', value: method.to_s, autocomplete: 'off'
82
- end
83
-
84
- def param_inputs
85
- return unless (params = @options.delete(:params))
86
-
87
- to_form_params(params).each do |param|
88
- input type: 'hidden', name: param[:name], value: param[:value], autocomplete: 'off'
89
- end
90
- end
91
-
92
- # Returns an array of hashes each containing :name and :value keys suitable for use as the
93
- # names and values of form input fields:
94
- #
95
- # to_form_params(name: 'David', nationality: 'Danish')
96
- # # => [{name: 'name', value: 'David'}, {name: 'nationality', value: 'Danish'}]
97
- #
98
- # to_form_params(country: { name: 'Denmark' })
99
- # # => [{name: 'country[name]', value: 'Denmark'}]
100
- #
101
- # to_form_params(countries: ['Denmark', 'Sweden']})
102
- # # => [{name: 'countries[]', value: 'Denmark'}, {name: 'countries[]', value: 'Sweden'}]
103
- #
104
- # An optional namespace can be passed to enclose key names:
105
- #
106
- # to_form_params({ name: 'Denmark' }, 'country')
107
- # # => [{name: 'country[name]', value: 'Denmark'}]
108
- def to_form_params(attribute, namespace = nil)
109
- attribute = attribute.to_h if attribute.respond_to?(:permitted?)
110
-
111
- params = []
112
- case attribute
113
- when Hash
114
- attribute.each do |key, value|
115
- prefix = namespace ? "#{namespace}[#{key}]" : key
116
- params.push(*to_form_params(value, prefix))
117
- end
118
- when Array
119
- array_prefix = "#{namespace}[]"
120
- attribute.each do |value|
121
- params.push(*to_form_params(value, array_prefix))
122
- end
123
- else
124
- params << { name: namespace.to_s, value: attribute.to_param }
125
- end
126
-
127
- params.sort_by { |pair| pair[:name] }
128
- end
129
- end
130
-
131
18
  class ButtonTo < Phlex::HTML
132
19
  include ButtonToConcerns
133
20
  end
@@ -0,0 +1,141 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generates a form containing a single button that submits to the URL created by the set of options.
4
+ # Similar to Rails `button_to` helper.
5
+ #
6
+ # The form submits a POST request by default. You can specify a different HTTP verb via the :method
7
+ # option.
8
+ #
9
+ # Additional arguments are passed through to the button element, with a few exceptions:
10
+ # - :method - Symbol of HTTP verb. Supported verbs are :post, :get, :delete, :patch, and :put.
11
+ # Default is :post.
12
+ # - :form_attributes - Hash of HTML attributes to be rendered on the form tag.
13
+ # - :form_class - This controls the class of the form within which the submit button will be placed.
14
+ # Default is 'button_to'. @deprecated: use :form_attributes instead if you want to override this.
15
+ # - :params - Hash of parameters to be rendered as hidden fields within the form.
16
+ module Phlexible
17
+ module Rails
18
+ module ButtonToConcerns
19
+ extend ActiveSupport::Concern
20
+
21
+ included do
22
+ include Phlex::Rails::Helpers::URLFor
23
+
24
+ register_value_helper :protect_against_forgery?
25
+ register_value_helper :request_forgery_protection_token
26
+ register_value_helper :form_authenticity_token
27
+ end
28
+
29
+ BUTTON_TAG_METHOD_VERBS = %w[patch put delete].freeze
30
+ DEFAULT_OPTIONS = { method: 'post', form_class: 'button_to', params: {} }.freeze
31
+
32
+ def initialize(url, options = nil)
33
+ @url = url
34
+ @options = options
35
+ end
36
+
37
+ def view_template(&block)
38
+ action = url_for(@url)
39
+ @options = DEFAULT_OPTIONS.merge((@options || {}).symbolize_keys)
40
+
41
+ method = (@options.delete(:method).presence || method_for_options(@options)).to_s
42
+ form_method = method == 'get' ? 'get' : 'post'
43
+
44
+ form action: action, method: form_method, **form_attributes do
45
+ method_tag method
46
+ form_method == 'post' && token_input(action, method.empty? ? 'post' : method)
47
+ param_inputs
48
+
49
+ block_given? ? button(**button_attrs, &block) : button(**button_attrs) { @name }
50
+ end
51
+ end
52
+
53
+ private
54
+
55
+ def form_attributes
56
+ {
57
+ class: @options.delete(:form_class), # @deprecated
58
+ **(@options.delete(:form_attributes) || {})
59
+ }
60
+ end
61
+
62
+ def button_attrs
63
+ {
64
+ type: 'submit',
65
+ **@options
66
+ }
67
+ end
68
+
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
77
+ end
78
+
79
+ def token_input(action, method)
80
+ return if !protect_against_forgery?
81
+
82
+ name = request_forgery_protection_token.to_s
83
+ value = form_authenticity_token(form_options: { action: action, method: method })
84
+
85
+ input type: 'hidden', name: name, value: value, autocomplete: 'off'
86
+ end
87
+
88
+ def method_tag(method)
89
+ return if BUTTON_TAG_METHOD_VERBS.exclude?(method)
90
+
91
+ input type: 'hidden', name: '_method', value: method.to_s, autocomplete: 'off'
92
+ end
93
+
94
+ def param_inputs
95
+ return if !(params = @options.delete(:params))
96
+
97
+ to_form_params(params).each do |param|
98
+ input type: 'hidden', name: param[:name], value: param[:value], autocomplete: 'off'
99
+ end
100
+ end
101
+
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 }
135
+ end
136
+
137
+ params.sort_by { |pair| pair[:name] }
138
+ end
139
+ end
140
+ end
141
+ end
@@ -23,6 +23,8 @@
23
23
  module Phlexible
24
24
  module Rails
25
25
  module ControllerVariables
26
+ include ViewAssigns
27
+
26
28
  def self.included(klass)
27
29
  klass.class_attribute :__controller_variables__, instance_predicate: false, default: Set.new
28
30
  klass.extend ClassMethods
@@ -40,67 +42,71 @@ module Phlexible
40
42
 
41
43
  private
42
44
 
43
- def define_controller_variables # rubocop:disable Metrics
44
- return unless respond_to?(:__controller_variables__)
45
-
46
- view_assigns = helpers.controller.view_assigns
47
- view = @view
45
+ def define_controller_variables
46
+ return if !respond_to?(:__controller_variables__)
48
47
 
49
- vars = (view&.__controller_variables__ || Set.new) + __controller_variables__
50
- vars.each do |k, v|
51
- allow_undefined = true
52
- if k.ends_with?('!')
53
- allow_undefined = false
54
- k = k.chop
55
- end
48
+ view_assigns = view_assigns()
49
+ view = @view
56
50
 
57
- raise ControllerVariables::UndefinedVariable, k if !allow_undefined && !view_assigns.key?(k)
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
- instance_variable_set(:"@#{v}", view_assigns[k])
60
- view&.instance_variable_set(:"@#{v}", view_assigns[k])
61
- end
62
- end
59
+ if !allow_undefined && !view_assigns.key?(k)
60
+ raise ControllerVariables::UndefinedVariable,
61
+ k
62
+ end
63
63
 
64
- module ClassMethods
65
- def controller_variable(*names, **kwargs) # rubocop:disable Metrics/*
66
- if names.empty? && kwargs.empty?
67
- raise ArgumentError, 'You must provide at least one variable name and/or a hash of ' \
68
- 'variable names and options.'
64
+ instance_variable_set(:"@#{v}", view_assigns[k])
65
+ view&.instance_variable_set(:"@#{v}", view_assigns[k])
69
66
  end
67
+ end
70
68
 
71
- allow_undefined = kwargs.delete(:allow_undefined)
72
- as = kwargs.delete(:as)
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
- if names.count > 1 && as
75
- raise ArgumentError, 'You cannot provide the `as:` option when passing multiple ' \
76
- 'variable names.'
77
- end
77
+ allow_undefined = kwargs.delete(:allow_undefined)
78
+ as = kwargs.delete(:as)
78
79
 
79
- names.each do |name|
80
- name_as = as || name
81
- 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
82
84
 
83
- self.__controller_variables__ += { name.to_s => name_as.to_s }
84
- end
85
+ names.each do |name|
86
+ name_as = as || name
87
+ name = "#{name}!" if !allow_undefined
85
88
 
86
- kwargs.each do |k, v|
87
- if v.is_a?(Hash)
88
- name = v.key?(:as) ? v[:as].to_s : k.to_s
89
+ self.__controller_variables__ += { name.to_s => name_as.to_s }
90
+ end
89
91
 
90
- if v.key?(:allow_undefined)
91
- k = "#{k}!" unless v[:allow_undefined]
92
- elsif !allow_undefined
93
- 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
94
104
  end
95
- else
96
- name = v.to_s
97
- k = "#{k}!" unless allow_undefined
98
- end
99
105
 
100
- self.__controller_variables__ += { k.to_s => name }
106
+ self.__controller_variables__ += { k.to_s => name }
107
+ end
101
108
  end
102
109
  end
103
- end
104
110
  end
105
111
  end
106
112
  end
@@ -3,8 +3,10 @@
3
3
  module Phlexible
4
4
  module Rails
5
5
  class MetaTagsComponent < Phlex::HTML
6
+ include ViewAssigns
7
+
6
8
  def view_template
7
- helpers.controller.view_assigns['meta_tags']&.each do |name, content|
9
+ view_assigns['meta_tags']&.each do |name, content|
8
10
  meta name: name, content: content.is_a?(String) ? content : content.to_json
9
11
  end
10
12
  end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlexible
4
+ module Rails
5
+ module ViewAssigns
6
+ def view_assigns
7
+ if respond_to?(:view_context)
8
+ # Phlex 2
9
+ view_context.controller.view_assigns
10
+ else
11
+ # Phlex 1
12
+ helpers.controller.view_assigns
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Phlexible
4
- VERSION = '2.2.0'
4
+ VERSION = '3.1.0'
5
5
  end
data/lib/phlexible.rb CHANGED
@@ -1,11 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'phlexible/version'
4
- require 'phlex'
4
+ require 'zeitwerk'
5
+ require 'rails'
6
+ require 'phlex-rails'
7
+
8
+ loader = Zeitwerk::Loader.for_gem
9
+ loader.setup
5
10
 
6
11
  module Phlexible
7
- autoload :AliasView, 'phlexible/alias_view'
8
- autoload :PageTitle, 'phlexible/page_title'
9
- autoload :Callbacks, 'phlexible/callbacks'
10
- autoload :Rails, 'phlexible/rails'
11
12
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phlexible
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Moss
8
- bindir: exe
8
+ bindir: bin
9
9
  cert_chain: []
10
- date: 2025-02-11 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: phlex
@@ -18,7 +18,7 @@ dependencies:
18
18
  version: 1.10.0
19
19
  - - "<"
20
20
  - !ruby/object:Gem::Version
21
- version: 2.0.0
21
+ version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -28,27 +28,61 @@ dependencies:
28
28
  version: 1.10.0
29
29
  - - "<"
30
30
  - !ruby/object:Gem::Version
31
- version: 2.0.0
31
+ version: 3.0.0
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: phlex-rails
34
34
  requirement: !ruby/object:Gem::Requirement
35
35
  requirements:
36
36
  - - ">="
37
37
  - !ruby/object:Gem::Version
38
- version: 1.2.1
38
+ version: 1.2.0
39
39
  - - "<"
40
40
  - !ruby/object:Gem::Version
41
- version: 2.0.0
41
+ version: 3.0.0
42
42
  type: :runtime
43
43
  prerelease: false
44
44
  version_requirements: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: 1.2.1
48
+ version: 1.2.0
49
49
  - - "<"
50
50
  - !ruby/object:Gem::Version
51
- version: 2.0.0
51
+ version: 3.0.0
52
+ - !ruby/object:Gem::Dependency
53
+ name: rails
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: 7.2.0
59
+ - - "<"
60
+ - !ruby/object:Gem::Version
61
+ version: 9.0.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 7.2.0
69
+ - - "<"
70
+ - !ruby/object:Gem::Version
71
+ version: 9.0.0
72
+ - !ruby/object:Gem::Dependency
73
+ name: zeitwerk
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - "~>"
77
+ - !ruby/object:Gem::Version
78
+ version: 2.7.2
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - "~>"
84
+ - !ruby/object:Gem::Version
85
+ version: 2.7.2
52
86
  description: A bunch of helpers and goodies intended to make life with Phlex even
53
87
  easier!
54
88
  email:
@@ -58,39 +92,36 @@ extensions: []
58
92
  extra_rdoc_files: []
59
93
  files:
60
94
  - ".rubocop.yml"
95
+ - ".ruby-version"
96
+ - Appraisals
61
97
  - CODE_OF_CONDUCT.md
62
- - Gemfile
63
- - Gemfile.lock
64
98
  - LICENSE.txt
65
99
  - README.md
66
100
  - Rakefile
67
- - config/sus.rb
68
- - config/view_helper.rb
69
- - fixtures/dummy/app/controllers/articles_controller.rb
70
- - fixtures/dummy/app/views/articles/index.html.erb
71
- - fixtures/dummy/app/views/articles/link.rb
72
- - fixtures/dummy/app/views/articles/show.rb
73
- - fixtures/dummy/config/database.yml
74
- - fixtures/dummy/config/routes.rb
75
- - fixtures/dummy/config/storage.yml
76
- - fixtures/dummy/db/schema.rb
77
- - fixtures/dummy/log/.gitignore
78
- - fixtures/dummy/public/favicon.ico
79
- - fixtures/rails_helper.rb
101
+ - gemfiles/.bundle/config
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
80
110
  - lib/phlexible.rb
81
111
  - lib/phlexible/alias_view.rb
82
112
  - lib/phlexible/callbacks.rb
83
113
  - lib/phlexible/page_title.rb
84
- - lib/phlexible/rails.rb
114
+ - lib/phlexible/process_attributes.rb
85
115
  - lib/phlexible/rails/a_element.rb
86
116
  - lib/phlexible/rails/action_controller/implicit_render.rb
87
117
  - lib/phlexible/rails/action_controller/meta_tags.rb
88
118
  - lib/phlexible/rails/button_to.rb
119
+ - lib/phlexible/rails/button_to_concerns.rb
89
120
  - lib/phlexible/rails/controller_variables.rb
90
121
  - lib/phlexible/rails/meta_tags_component.rb
91
122
  - lib/phlexible/rails/responder.rb
123
+ - lib/phlexible/rails/view_assigns.rb
92
124
  - lib/phlexible/version.rb
93
- - phlexible.gemspec
94
125
  homepage: https://github.com/joelmoss/phlexible
95
126
  licenses:
96
127
  - MIT
@@ -113,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
144
  - !ruby/object:Gem::Version
114
145
  version: '0'
115
146
  requirements: []
116
- rubygems_version: 3.6.3
147
+ rubygems_version: 4.0.4
117
148
  specification_version: 4
118
149
  summary: A bunch of helpers and goodies intended to make life with Phlex even easier!
119
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 'combustion'
9
- gem 'debug'
10
- gem 'phlex-testing-nokogiri'
11
- gem 'rake', '~> 13.0'
12
- gem 'rubocop', '~> 1.55'
13
- gem 'sus'