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.
- checksums.yaml +4 -4
- data/.rubocop.yml +44 -12
- data/.ruby-version +1 -0
- data/Appraisals +25 -0
- data/README.md +85 -2
- data/Rakefile +4 -4
- data/gemfiles/.bundle/config +2 -0
- data/gemfiles/phlex1_rails7.gemfile +24 -0
- data/gemfiles/phlex1_rails7.gemfile.lock +464 -0
- data/gemfiles/phlex1_rails8.gemfile +24 -0
- data/gemfiles/phlex1_rails8.gemfile.lock +463 -0
- data/gemfiles/phlex2_rails7.gemfile +24 -0
- data/gemfiles/phlex2_rails7.gemfile.lock +471 -0
- data/gemfiles/phlex2_rails8.gemfile +24 -0
- data/gemfiles/phlex2_rails8.gemfile.lock +470 -0
- data/lib/phlexible/page_title.rb +13 -13
- data/lib/phlexible/process_attributes.rb +56 -0
- data/lib/phlexible/rails/a_element.rb +7 -1
- data/lib/phlexible/rails/action_controller/implicit_render.rb +15 -7
- data/lib/phlexible/rails/button_to.rb +0 -113
- data/lib/phlexible/rails/button_to_concerns.rb +141 -0
- data/lib/phlexible/rails/controller_variables.rb +52 -46
- data/lib/phlexible/rails/meta_tags_component.rb +3 -1
- data/lib/phlexible/rails/view_assigns.rb +17 -0
- data/lib/phlexible/version.rb +1 -1
- data/lib/phlexible.rb +6 -5
- metadata +58 -27
- data/Gemfile +0 -13
- data/Gemfile.lock +0 -169
- data/config/sus.rb +0 -8
- data/config/view_helper.rb +0 -16
- data/fixtures/dummy/app/controllers/articles_controller.rb +0 -4
- data/fixtures/dummy/app/views/articles/index.html.erb +0 -1
- data/fixtures/dummy/app/views/articles/link.rb +0 -9
- data/fixtures/dummy/app/views/articles/show.rb +0 -7
- data/fixtures/dummy/config/database.yml +0 -3
- data/fixtures/dummy/config/routes.rb +0 -5
- data/fixtures/dummy/config/storage.yml +0 -3
- data/fixtures/dummy/db/schema.rb +0 -6
- data/fixtures/dummy/log/.gitignore +0 -1
- data/fixtures/dummy/public/favicon.ico +0 -0
- data/fixtures/rails_helper.rb +0 -10
- data/lib/phlexible/rails.rb +0 -20
- 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
|
-
|
|
44
|
-
|
|
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
|
-
|
|
50
|
-
|
|
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
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
if !allow_undefined && !view_assigns.key?(k)
|
|
60
|
+
raise ControllerVariables::UndefinedVariable,
|
|
61
|
+
k
|
|
62
|
+
end
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
72
|
-
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
'variable names.'
|
|
77
|
-
end
|
|
77
|
+
allow_undefined = kwargs.delete(:allow_undefined)
|
|
78
|
+
as = kwargs.delete(:as)
|
|
78
79
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
+
names.each do |name|
|
|
86
|
+
name_as = as || name
|
|
87
|
+
name = "#{name}!" if !allow_undefined
|
|
85
88
|
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
data/lib/phlexible/version.rb
CHANGED
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 '
|
|
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:
|
|
4
|
+
version: 3.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Joel Moss
|
|
8
|
-
bindir:
|
|
8
|
+
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
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:
|
|
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:
|
|
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.
|
|
38
|
+
version: 1.2.0
|
|
39
39
|
- - "<"
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
|
-
version:
|
|
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.
|
|
48
|
+
version: 1.2.0
|
|
49
49
|
- - "<"
|
|
50
50
|
- !ruby/object:Gem::Version
|
|
51
|
-
version:
|
|
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
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
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/
|
|
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:
|
|
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'
|