phlex 1.3.1 → 1.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.
Potentially problematic release.
This version of phlex might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -24
- data/.ruby-version +1 -1
- data/Gemfile +1 -0
- data/README.md +1 -0
- data/fixtures/view_helper.rb +6 -0
- data/lib/phlex/black_hole.rb +7 -9
- data/lib/phlex/callable.rb +3 -5
- data/lib/phlex/deferred_render.rb +2 -4
- data/lib/phlex/elements.rb +56 -50
- data/lib/phlex/helpers.rb +5 -2
- data/lib/phlex/html/standard_elements.rb +590 -0
- data/lib/phlex/html/void_elements.rb +79 -0
- data/lib/phlex/html.rb +14 -410
- data/lib/{overrides → phlex/overrides}/symbol/name.rb +1 -1
- data/lib/phlex/sgml.rb +315 -0
- data/lib/phlex/svg/standard_elements.rb +391 -0
- data/lib/phlex/svg.rb +11 -0
- data/lib/phlex/testing/view_helper.rb +10 -8
- data/lib/phlex/unbuffered.rb +34 -36
- data/lib/phlex/version.rb +1 -1
- data/lib/phlex.rb +5 -1
- metadata +9 -5
- data/lib/phlex/buffered.rb +0 -19
data/lib/phlex/svg.rb
ADDED
@@ -1,15 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module Phlex
|
4
|
-
module
|
5
|
-
|
6
|
-
|
7
|
-
view
|
3
|
+
module Phlex::Testing
|
4
|
+
module ViewHelper
|
5
|
+
def render(view, &block)
|
6
|
+
if view.is_a?(Class) && view < Phlex::SGML
|
7
|
+
view = view.new
|
8
8
|
end
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
view.call(view_context: view_context, &block)
|
11
|
+
end
|
12
|
+
|
13
|
+
def view_context
|
14
|
+
nil
|
13
15
|
end
|
14
16
|
end
|
15
17
|
end
|
data/lib/phlex/unbuffered.rb
CHANGED
@@ -1,51 +1,49 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
def inspect
|
10
|
-
"Unbuffered(#{@object.class.name})[object: #{@object.inspect}]"
|
11
|
-
end
|
3
|
+
class Phlex::Unbuffered < BasicObject
|
4
|
+
def initialize(object)
|
5
|
+
@object = object
|
6
|
+
end
|
12
7
|
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
def inspect
|
9
|
+
"Unbuffered(#{@object.class.name})[object: #{@object.inspect}]"
|
10
|
+
end
|
16
11
|
|
17
|
-
|
18
|
-
|
12
|
+
# Borrow some important methods from Object
|
13
|
+
define_method :__class__,
|
14
|
+
::Object.instance_method(:class)
|
19
15
|
|
20
|
-
|
21
|
-
|
22
|
-
end
|
16
|
+
define_method :__public_send__,
|
17
|
+
::Object.instance_method(:public_send)
|
23
18
|
|
24
|
-
|
25
|
-
|
19
|
+
def respond_to_missing?(...)
|
20
|
+
@object.respond_to?(...)
|
21
|
+
end
|
26
22
|
|
27
|
-
|
28
|
-
|
29
|
-
end
|
23
|
+
def method_missing(name, *args, **kwargs, &block)
|
24
|
+
if @object.respond_to?(name)
|
30
25
|
|
31
|
-
|
32
|
-
|
33
|
-
else
|
34
|
-
super
|
26
|
+
__class__.define_method(name) do |*a, **k, &b|
|
27
|
+
@object.capture { @object.public_send(name, *a, **k, &b) }
|
35
28
|
end
|
36
|
-
end
|
37
29
|
|
38
|
-
|
39
|
-
|
40
|
-
|
30
|
+
# Now we've defined this missing method, we can call it.
|
31
|
+
__public_send__(name, *args, **kwargs, &block)
|
32
|
+
else
|
33
|
+
super
|
41
34
|
end
|
35
|
+
end
|
42
36
|
|
43
|
-
|
44
|
-
|
45
|
-
|
37
|
+
# Forward some methods to the original underlying method
|
38
|
+
def call(...)
|
39
|
+
@object.call(...)
|
40
|
+
end
|
46
41
|
|
47
|
-
|
48
|
-
|
49
|
-
|
42
|
+
def send(...)
|
43
|
+
@object.send(...)
|
44
|
+
end
|
45
|
+
|
46
|
+
def public_send(...)
|
47
|
+
@object.public_send(...)
|
50
48
|
end
|
51
49
|
end
|
data/lib/phlex/version.rb
CHANGED
data/lib/phlex.rb
CHANGED
@@ -6,7 +6,11 @@ require "concurrent"
|
|
6
6
|
|
7
7
|
module Phlex
|
8
8
|
Loader = Zeitwerk::Loader.for_gem(warn_on_extra_files: false).tap do |loader|
|
9
|
-
loader.inflector.inflect(
|
9
|
+
loader.inflector.inflect(
|
10
|
+
"html" => "HTML",
|
11
|
+
"svg" => "SVG",
|
12
|
+
"sgml" => "SGML"
|
13
|
+
)
|
10
14
|
loader.ignore("#{__dir__}/phlex/testing")
|
11
15
|
loader.setup
|
12
16
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phlex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.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: 2023-
|
11
|
+
date: 2023-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -59,15 +59,19 @@ files:
|
|
59
59
|
- fixtures/layout.rb
|
60
60
|
- fixtures/page.rb
|
61
61
|
- fixtures/view_helper.rb
|
62
|
-
- lib/overrides/symbol/name.rb
|
63
62
|
- lib/phlex.rb
|
64
63
|
- lib/phlex/black_hole.rb
|
65
|
-
- lib/phlex/buffered.rb
|
66
64
|
- lib/phlex/callable.rb
|
67
65
|
- lib/phlex/deferred_render.rb
|
68
66
|
- lib/phlex/elements.rb
|
69
67
|
- lib/phlex/helpers.rb
|
70
68
|
- lib/phlex/html.rb
|
69
|
+
- lib/phlex/html/standard_elements.rb
|
70
|
+
- lib/phlex/html/void_elements.rb
|
71
|
+
- lib/phlex/overrides/symbol/name.rb
|
72
|
+
- lib/phlex/sgml.rb
|
73
|
+
- lib/phlex/svg.rb
|
74
|
+
- lib/phlex/svg/standard_elements.rb
|
71
75
|
- lib/phlex/testing/view_helper.rb
|
72
76
|
- lib/phlex/unbuffered.rb
|
73
77
|
- lib/phlex/version.rb
|
@@ -97,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
101
|
- !ruby/object:Gem::Version
|
98
102
|
version: '0'
|
99
103
|
requirements: []
|
100
|
-
rubygems_version: 3.4.
|
104
|
+
rubygems_version: 3.4.6
|
101
105
|
signing_key:
|
102
106
|
specification_version: 4
|
103
107
|
summary: A framework for building views in Ruby.
|
data/lib/phlex/buffered.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "delegate"
|
4
|
-
|
5
|
-
module Phlex
|
6
|
-
class Buffered < SimpleDelegator
|
7
|
-
def initialize(object, buffer:)
|
8
|
-
super(object)
|
9
|
-
@buffer = buffer
|
10
|
-
end
|
11
|
-
|
12
|
-
# Alias output methods to this
|
13
|
-
def __output_method__(...)
|
14
|
-
output = __getobj__.public_send(__callee__, ...)
|
15
|
-
@buffer << output if output.is_a? String
|
16
|
-
nil
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|