phlex-rails 0.7.0 → 0.8.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
2
  SHA256:
3
- metadata.gz: 90e5d36afb3e649892cc3e9c72fb4f5f9e7b6638ae50c95a0791ede0afe4355b
4
- data.tar.gz: 22ae3aecb60afc9e72be8bc5e7b13736e9901ccb0ada86d5a2dbfa5a69319166
3
+ metadata.gz: 00fc3d53f19d10aee8a5a0c3aac7c77d5a753caa641dd92524acf1327a3e6a4f
4
+ data.tar.gz: b5574038403fbdf9aba3de312446c3fd027f6f2a98c7bffe50f36ee8ab44f09c
5
5
  SHA512:
6
- metadata.gz: 833b460794df4a260a766ebbf226b62d8b482e6c62a0c847499c9f59ce2a6b620e626885a8bd0ace726046ee095d32d95673c0fa5ad2a62d0c929520c6989710
7
- data.tar.gz: 995bce4e399888efb0c35fd3f6a0d5c8c6fab5a7b230b613b4c61e71946c4380643dae8273e1ad4cab86a61c04f7a1d43b7229b86c4c0817e42b84a7db8f06fe
6
+ metadata.gz: 68e1dd45327362c06b9cc7b07efcbba51916c34cf3de4e8b42891dee24f20f98a12dec011fe35d7cc6067f5b610339020de43ed6c4ffbc817671a5f1ff8305b1
7
+ data.tar.gz: f671b7275caf0bb733d385cd7310388ab5a82475131bb08d937692f3ed57aeba7bd8788d2bd23856a5e08435cc21924c733238d5c391b82bf2bee9d281453ce1
data/.rubocop.yml CHANGED
@@ -6,31 +6,7 @@ AllCops:
6
6
  TargetRubyVersion: 2.7
7
7
  Exclude:
8
8
  - "lib/phlex-rails.rb"
9
+ SuggestExtensions: false
9
10
 
10
- Style/PercentLiteralDelimiters:
11
- Enabled: false
12
-
13
- Layout/CaseIndentation:
14
- Enabled: false
15
-
16
- Style/StringConcatenation:
17
- Enabled: false
18
-
19
- Layout/MultilineMethodCallBraceLayout:
20
- Enabled: false
21
-
22
-
23
- Security/Eval:
24
- Enabled: false
25
-
26
- Style/MethodCallWithoutArgsParentheses:
27
- Enabled: false
28
-
29
- Style/MixinUsage:
30
- Enabled: false
31
-
32
- Style/ConditionalAssignment:
33
- Enabled: false
34
-
35
- Lint/UnderscorePrefixedVariableName:
11
+ Style/MissingRespondToMissing:
36
12
  Enabled: false
data/Appraisals CHANGED
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  appraise "rails-6" do
4
- gem "rails", "~> 6.1"
4
+ gem "rails", "~> 6"
5
5
  end
6
6
 
7
7
  appraise "rails-7" do
8
- gem "rails"
8
+ gem "rails", "~> 7"
9
9
  end
10
10
 
11
11
  appraise "rails-edge" do
data/README.md CHANGED
@@ -8,7 +8,7 @@ Documentation can be found at [www.phlex.fun](https://www.phlex.fun).
8
8
 
9
9
  ### Support ✋
10
10
 
11
- If you run into any trouble, please [start a discussion](https://github.com/joeldrapper/phlex/discussions/new), or [open an issue](https://github.com/joeldrapper/phlex/issues/new) if you think you’ve found a bug.
11
+ If you run into any trouble, please [start a discussion](https://github.com/joeldrapper/phlex/discussions/new), or [open an issue](https://github.com/joeldrapper/phlex-rails/issues/new) if you think you’ve found a bug.
12
12
 
13
13
  ### Community 🙌
14
14
 
@@ -3,8 +3,10 @@
3
3
  # An adapter for Rails routing helpers, such as <code>article_path</code>.
4
4
  module Phlex::Rails::Helpers
5
5
  module Routes
6
+ # This must be included first because it defines `url_options` rather than delegating it to the view context.
7
+ include Rails.application.routes.url_helpers
8
+
6
9
  include URLOptions
7
10
  include DefaultURLOptions
8
- include Rails.application.routes.url_helpers
9
11
  end
10
12
  end
@@ -1306,6 +1306,13 @@ module Phlex::Rails::Helpers
1306
1306
  define_output_helper :url_field_tag
1307
1307
  end
1308
1308
 
1309
+ module URLFor
1310
+ extend Phlex::Rails::HelperMacros
1311
+
1312
+ # @!method url_for(...)
1313
+ define_value_helper :url_for
1314
+ end
1315
+
1309
1316
  module URLOptions
1310
1317
  extend Phlex::Rails::HelperMacros
1311
1318
 
@@ -28,92 +28,46 @@ module Phlex
28
28
  def render_in(view_context, &block)
29
29
  if block_given?
30
30
  call(view_context: view_context) do |*args|
31
- view_context.with_output_buffer(self) do
32
- original_length = @_target.length
33
-
34
- if args.length == 1 && Phlex::SGML === args[0]
35
- output = yield(
36
- args[0].unbuffered
37
- )
38
- else
39
- output = yield(*args)
40
- end
31
+ original_length = @_target.length
32
+
33
+ if args.length == 1 && Phlex::SGML === args[0]
34
+ output = view_context.capture(
35
+ args[0].unbuffered, &block
36
+ )
37
+ else
38
+ output = view_context.capture(*args, &block)
39
+ end
41
40
 
42
- unchanged = (original_length == @_target.length)
41
+ unchanged = (original_length == @_target.length)
43
42
 
44
- if unchanged
45
- if output.is_a?(ActiveSupport::SafeBuffer)
46
- unsafe_raw(output)
47
- else
48
- text(output)
49
- end
43
+ if unchanged
44
+ case output
45
+ when ActiveSupport::SafeBuffer
46
+ @_target << output
50
47
  end
51
48
  end
52
-
53
- nil
54
49
  end.html_safe
55
50
  else
56
51
  call(view_context: view_context).html_safe
57
52
  end
58
53
  end
59
54
 
60
- # @api private
61
- def safe_append=(value)
62
- return unless value
63
-
64
- @_target << case value
65
- when String then value
66
- when Symbol then value.name
67
- else value.to_s
68
- end
55
+ def capture
56
+ super&.html_safe
69
57
  end
70
58
 
71
- # @api private
72
- alias_method :safe_concat, :safe_append=
73
-
74
- # @api private
75
- def append=(value)
76
- case value
59
+ def plain(content)
60
+ case content
77
61
  when ActiveSupport::SafeBuffer
78
- @_target << value
62
+ @_target << content
79
63
  else
80
- @_target << case value
81
- when String then ERB::Util.html_escape(value)
82
- when Symbol then ERB::Util.html_escape(value.name)
83
- else ERB::Util.html_escape(value.to_s)
84
- end
64
+ super
85
65
  end
86
66
  end
87
67
 
88
- def capture
89
- super&.html_safe
90
- end
91
-
92
68
  # Trick ViewComponent into thinking we're a ViewComponent to fix rendering output
93
69
  def set_original_view_context(view_context)
94
70
  end
95
-
96
- private def yield_content(&block)
97
- return unless block
98
-
99
- case block.binding.receiver
100
- when Phlex::SGML
101
- super
102
- else
103
- @_view_context.with_output_buffer(self) { super }
104
- end
105
- end
106
-
107
- private def yield_content_with_args(*args, &block)
108
- return unless block
109
-
110
- case block.binding.receiver
111
- when Phlex::SGML
112
- super
113
- else
114
- @_view_context.with_output_buffer(self) { super }
115
- end
116
- end
117
71
  end
118
72
  end
119
73
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex::Rails::UnbufferedOverrides
4
+ def method_missing(name, *args, **kwargs, &block)
5
+ if @object.respond_to?(name)
6
+
7
+ __class__.define_method(name) do |*a, **k, &b|
8
+ @object.capture do
9
+ if b
10
+ @object.public_send(name, *a, **k) do |*aa|
11
+ @object.helpers.capture(*aa, &b)
12
+ end
13
+ else
14
+ @object.public_send(name, *a, **k)
15
+ end
16
+ end
17
+ end
18
+
19
+ # Now we've defined this missing method, we can call it.
20
+ __public_send__(name, *args, **kwargs, &block)
21
+ else
22
+ super
23
+ end
24
+ end
25
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Phlex
4
4
  module Rails
5
- VERSION = "0.7.0"
5
+ VERSION = "0.8.0"
6
6
  end
7
7
  end
data/lib/phlex/rails.rb CHANGED
@@ -18,7 +18,6 @@ module Phlex
18
18
 
19
19
  class SGML
20
20
  extend Phlex::Rails::SGML::ClassMethods
21
- extend Phlex::Rails::SGML::AppendMethodAddedWarning
22
21
 
23
22
  prepend Phlex::Rails::SGML::Overrides
24
23
  end
@@ -27,4 +26,8 @@ module Phlex
27
26
  extend Phlex::Rails::HTML::Format
28
27
  include Phlex::Rails::HTML::Format
29
28
  end
29
+
30
+ class Unbuffered
31
+ prepend ::Phlex::Rails::UnbufferedOverrides
32
+ end
30
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phlex-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Drapper
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-17 00:00:00.000000000 Z
11
+ date: 2023-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: phlex
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.4'
19
+ version: '1.5'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.4'
26
+ version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rails
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -111,9 +111,9 @@ files:
111
111
  - lib/phlex/rails/helpers/turbo_stream.rb
112
112
  - lib/phlex/rails/html/format.rb
113
113
  - lib/phlex/rails/layout.rb
114
- - lib/phlex/rails/sgml/append_method_added_warning.rb
115
114
  - lib/phlex/rails/sgml/class_methods.rb
116
115
  - lib/phlex/rails/sgml/overrides.rb
116
+ - lib/phlex/rails/unbuffered_overrides.rb
117
117
  - lib/phlex/rails/version.rb
118
118
  - lib/phlex/testing/rails/view_helper.rb
119
119
  - phlex_logo.png
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Phlex
4
- module Rails
5
- module SGML
6
- module AppendMethodAddedWarning
7
- def method_added(name)
8
- if name == :append || name == :safe_append= || name == :safe_concat
9
- raise Phlex::NameError, "You shouldn't redefine the #{name} method as it's required for safe HTML output."
10
- end
11
-
12
- super
13
- end
14
- end
15
- end
16
- end
17
- end