phlex-rails 0.3.1 → 0.4.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/Gemfile +1 -1
- data/config/sus.rb +5 -0
- data/fixtures/dummy/app/views/articles/blog.html.erb +14 -0
- data/fixtures/dummy/app/views/blog.rb +27 -0
- data/lib/phlex/rails/helpers.rb +24 -0
- data/lib/phlex/rails/renderable.rb +29 -1
- data/lib/phlex/rails/version.rb +1 -1
- data/lib/phlex/rails.rb +2 -1
- data/lib/phlex/testing/{rails.rb → rails/view_helper.rb} +1 -1
- metadata +8 -6
- data/lib/phlex/rails/output_buffer.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c05b7f36804eb576eb2c017a8566e6e15e9dfdc96a80bffe566d6fe1bf90edf
|
4
|
+
data.tar.gz: 901dbd435636eb4823cacfef7b42b0281165ad7f4cae0553a070d8592270637b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 58dba0d9f85f66d2b0b8d9a72f211aa685e150bb62646330dcfce230d36fec088f4dd1b81125a23104bf2cfee9d80d1d01e23c240406478df0c15289e3189033
|
7
|
+
data.tar.gz: 1ca4bed35a09f31065fb08cf1905942a2f5e6ac468b7a66d5589666957a50361af6269efa2eaf20259fd861efac92884edb2455a111ca83076aa606af1e6f83e
|
data/Gemfile
CHANGED
data/config/sus.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
<%= render Views::Blog.new do |v| %>
|
2
|
+
|
3
|
+
hidden
|
4
|
+
|
5
|
+
<% v.with_post do %><%= link_to "First Post", "/posts/1" %><% end %>
|
6
|
+
|
7
|
+
content
|
8
|
+
|
9
|
+
<% v.with_header do %><%= link_to "My blog", "/" %><% end %>
|
10
|
+
|
11
|
+
here
|
12
|
+
|
13
|
+
<% v.with_post do %><%= link_to "Last Post", "/posts/2" %><% end %>
|
14
|
+
<% end %>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Views
|
4
|
+
class Blog < ApplicationView
|
5
|
+
def initialize
|
6
|
+
@posts = []
|
7
|
+
end
|
8
|
+
|
9
|
+
def template(&block)
|
10
|
+
capture(&block)
|
11
|
+
|
12
|
+
h3(class: "font-bold") { @header }
|
13
|
+
|
14
|
+
@posts.each do |post|
|
15
|
+
article(class: "drop-shadow p-5 rounded") { post }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def with_header(&block)
|
20
|
+
@header = capture(&block)
|
21
|
+
end
|
22
|
+
|
23
|
+
def with_post(&block)
|
24
|
+
@posts << capture(&block)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/phlex/rails/helpers.rb
CHANGED
@@ -92,6 +92,30 @@ module Phlex
|
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
|
+
module ImageTag
|
96
|
+
def image_tag(*args)
|
97
|
+
if (output = @_view_context.image_tag(*args))
|
98
|
+
@_target << output
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
module AudioTag
|
104
|
+
def audio_tag(*args)
|
105
|
+
if (output = @_view_context.audio_tag(*args))
|
106
|
+
@_target << output
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
module VideoTag
|
112
|
+
def video_tag(*args)
|
113
|
+
if (output = @_view_context.video_tag(*args))
|
114
|
+
@_target << output
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
95
119
|
module PreloadLinkTag
|
96
120
|
def preload_link_tag(*args)
|
97
121
|
if (output = @_view_context.preload_link_tag(*args))
|
@@ -19,7 +19,7 @@ module Phlex
|
|
19
19
|
def render_in(view_context, &block)
|
20
20
|
if block_given?
|
21
21
|
call(view_context: view_context) do |*args|
|
22
|
-
view_context.with_output_buffer(
|
22
|
+
view_context.with_output_buffer(self) do
|
23
23
|
original_length = @_target.length
|
24
24
|
output = yield(*args)
|
25
25
|
unchanged = (original_length == @_target.length)
|
@@ -37,6 +37,34 @@ module Phlex
|
|
37
37
|
call(view_context: view_context).html_safe
|
38
38
|
end
|
39
39
|
end
|
40
|
+
|
41
|
+
def safe_append=(value)
|
42
|
+
return unless value
|
43
|
+
|
44
|
+
@_target << case value
|
45
|
+
when String then value
|
46
|
+
when Symbol then value.name
|
47
|
+
else value.to_s
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def append=(value)
|
52
|
+
return unless value
|
53
|
+
|
54
|
+
if value.html_safe?
|
55
|
+
self.safe_append = value
|
56
|
+
else
|
57
|
+
@_target << case value
|
58
|
+
when String then ERB::Util.html_escape(value)
|
59
|
+
when Symbol then ERB::Util.html_escape(value.name)
|
60
|
+
else ERB::Util.html_escape(value.to_s)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def capture
|
66
|
+
super.html_safe
|
67
|
+
end
|
40
68
|
end
|
41
69
|
end
|
42
70
|
end
|
data/lib/phlex/rails/version.rb
CHANGED
data/lib/phlex/rails.rb
CHANGED
@@ -4,8 +4,9 @@ require "phlex"
|
|
4
4
|
require "phlex/rails/engine"
|
5
5
|
|
6
6
|
module Phlex::Rails
|
7
|
-
Loader = Zeitwerk::Loader.
|
7
|
+
Loader = Zeitwerk::Loader.new.tap do |loader|
|
8
8
|
loader.push_dir("#{__dir__}/rails", namespace: Phlex::Rails)
|
9
|
+
loader.inflector = Zeitwerk::GemInflector.new(__FILE__)
|
9
10
|
loader.setup
|
10
11
|
end
|
11
12
|
|
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.
|
4
|
+
version: 0.4.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: 2022-
|
11
|
+
date: 2022-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: phlex
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1
|
19
|
+
version: '1'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '2'
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1
|
29
|
+
version: '1'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '2'
|
@@ -80,6 +80,7 @@ files:
|
|
80
80
|
- LICENSE.txt
|
81
81
|
- README.md
|
82
82
|
- SECURITY.md
|
83
|
+
- config/sus.rb
|
83
84
|
- fixtures/dummy/app/assets/config/manifest.js
|
84
85
|
- fixtures/dummy/app/components/comment_component.html.erb
|
85
86
|
- fixtures/dummy/app/components/comment_component.rb
|
@@ -88,9 +89,11 @@ files:
|
|
88
89
|
- fixtures/dummy/app/controllers/articles_controller.rb
|
89
90
|
- fixtures/dummy/app/controllers/comments_controller.rb
|
90
91
|
- fixtures/dummy/app/views/application_view.rb
|
92
|
+
- fixtures/dummy/app/views/articles/blog.html.erb
|
91
93
|
- fixtures/dummy/app/views/articles/form.rb
|
92
94
|
- fixtures/dummy/app/views/articles/index.html.erb
|
93
95
|
- fixtures/dummy/app/views/articles/new.html.erb
|
96
|
+
- fixtures/dummy/app/views/blog.rb
|
94
97
|
- fixtures/dummy/app/views/card.rb
|
95
98
|
- fixtures/dummy/app/views/comments/comment.rb
|
96
99
|
- fixtures/dummy/app/views/comments/index.html.erb
|
@@ -135,10 +138,9 @@ files:
|
|
135
138
|
- lib/phlex/rails/form.rb
|
136
139
|
- lib/phlex/rails/helpers.rb
|
137
140
|
- lib/phlex/rails/layout.rb
|
138
|
-
- lib/phlex/rails/output_buffer.rb
|
139
141
|
- lib/phlex/rails/renderable.rb
|
140
142
|
- lib/phlex/rails/version.rb
|
141
|
-
- lib/phlex/testing/rails.rb
|
143
|
+
- lib/phlex/testing/rails/view_helper.rb
|
142
144
|
- lib/tasks/phlex_tasks.rake
|
143
145
|
- phlex_logo.png
|
144
146
|
homepage: https://www.phlex.fun
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "cgi"
|
4
|
-
|
5
|
-
module Phlex
|
6
|
-
module Rails
|
7
|
-
class OutputBuffer < SimpleDelegator
|
8
|
-
def safe_append=(value)
|
9
|
-
return unless value
|
10
|
-
|
11
|
-
self << case value
|
12
|
-
when String then value
|
13
|
-
when Symbol then value.name
|
14
|
-
else value.to_s
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def append=(value)
|
19
|
-
return unless value
|
20
|
-
|
21
|
-
if value.html_safe?
|
22
|
-
self.safe_append = value
|
23
|
-
else
|
24
|
-
self << case value
|
25
|
-
when String then CGI.escape_html(value)
|
26
|
-
when Symbol then CGI.escape_html(value.name)
|
27
|
-
else CGI.escape_html(value.to_s)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|