rblade 1.2.1 → 2.0.2
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/.github/workflows/ruby.yml +2 -5
- data/CHANGELOG.md +17 -0
- data/README.md +1 -1
- data/docker-compose.yml +1 -1
- data/lib/rblade/compiler/compiles_components.rb +32 -39
- data/lib/rblade/compiler/compiles_prints.rb +18 -16
- data/lib/rblade/compiler/compiles_ruby.rb +1 -7
- data/lib/rblade/compiler/compiles_statements.rb +2 -8
- data/lib/rblade/compiler/statements/compiles_component_helpers.rb +5 -5
- data/lib/rblade/compiler/statements/compiles_conditionals.rb +23 -23
- data/lib/rblade/compiler/statements/compiles_form.rb +7 -7
- data/lib/rblade/compiler/statements/compiles_html_attributes.rb +4 -4
- data/lib/rblade/compiler/statements/compiles_inline_ruby.rb +1 -1
- data/lib/rblade/compiler/statements/compiles_loops.rb +15 -15
- data/lib/rblade/compiler/statements/compiles_once.rb +6 -24
- data/lib/rblade/compiler/statements/compiles_stacks.rb +10 -54
- data/lib/rblade/compiler/tokenizes_components.rb +21 -11
- data/lib/rblade/compiler/tokenizes_statements.rb +10 -4
- data/lib/rblade/compiler.rb +23 -14
- data/lib/rblade/component_store.rb +35 -35
- data/lib/rblade/helpers/attributes_manager.rb +11 -9
- data/lib/rblade/helpers/slot_manager.rb +7 -4
- data/lib/rblade/helpers/stack_manager.rb +18 -18
- data/lib/rblade/rails_template.rb +4 -9
- data/rblade.gemspec +3 -3
- metadata +6 -7
- data/lib/rblade/helpers/html_string.rb +0 -6
@@ -1,21 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "rblade/helpers/attributes_manager"
|
4
|
-
require "rblade/helpers/html_string"
|
5
4
|
|
6
5
|
module RBlade
|
7
|
-
class SlotManager
|
6
|
+
class SlotManager
|
8
7
|
def initialize content, attributes = nil
|
9
8
|
@content = content
|
10
9
|
@attributes = attributes && AttributesManager.new(attributes)
|
11
10
|
end
|
12
11
|
|
12
|
+
def html_safe?
|
13
|
+
true
|
14
|
+
end
|
15
|
+
|
13
16
|
def to_s
|
14
|
-
|
17
|
+
self
|
15
18
|
end
|
16
19
|
|
17
20
|
def to_str
|
18
|
-
|
21
|
+
@content
|
19
22
|
end
|
20
23
|
|
21
24
|
def method_missing(method, *)
|
@@ -2,38 +2,38 @@
|
|
2
2
|
|
3
3
|
module RBlade
|
4
4
|
class StackManager
|
5
|
-
def
|
6
|
-
|
7
|
-
@@stacks[stack_name].set_before_stack before_stack
|
5
|
+
def initialize
|
6
|
+
@stacks = {}
|
8
7
|
end
|
9
8
|
|
10
|
-
def
|
11
|
-
|
9
|
+
def initialize_stack(stack_name, output_buffer)
|
10
|
+
@stacks[stack_name] ||= Stack.new
|
11
|
+
@stacks[stack_name].set_before_stack(-output_buffer.raw_buffer)
|
12
|
+
output_buffer.raw_buffer.clear
|
12
13
|
end
|
13
14
|
|
14
|
-
def
|
15
|
-
|
16
|
-
@@stacks[stack_name].push code.to_s
|
15
|
+
def clear
|
16
|
+
@stacks = {}
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
20
|
-
|
21
|
-
|
19
|
+
def push(stack_name, output_buffer, &)
|
20
|
+
@stacks[stack_name] ||= Stack.new
|
21
|
+
@stacks[stack_name].push output_buffer.capture(&)
|
22
22
|
end
|
23
23
|
|
24
|
-
def
|
25
|
-
stacks
|
26
|
-
|
27
|
-
|
24
|
+
def prepend(stack_name, output_buffer, &)
|
25
|
+
@stacks[stack_name] ||= Stack.new
|
26
|
+
@stacks[stack_name].prepend output_buffer.capture(&)
|
27
|
+
end
|
28
28
|
|
29
|
-
|
29
|
+
def get(stacks)
|
30
|
+
stacks.map do |name|
|
31
|
+
@stacks.delete(name).to_s
|
30
32
|
end.join
|
31
33
|
end
|
32
34
|
|
33
35
|
private
|
34
36
|
|
35
|
-
@@stacks = {}
|
36
|
-
|
37
37
|
class Stack
|
38
38
|
def initialize
|
39
39
|
@prepends = +""
|
@@ -12,8 +12,7 @@ require "rblade/helpers/style_manager"
|
|
12
12
|
module RBlade
|
13
13
|
class RailsTemplate
|
14
14
|
def call(template, source = nil)
|
15
|
-
RBlade::ComponentStore.
|
16
|
-
RBlade::StackManager.clear
|
15
|
+
component_store = RBlade::ComponentStore.new
|
17
16
|
|
18
17
|
unless template.nil?
|
19
18
|
view_name = template.short_identifier
|
@@ -23,14 +22,10 @@ module RBlade
|
|
23
22
|
.tr("/", ".")
|
24
23
|
|
25
24
|
# Let the component store know about the current view for relative components
|
26
|
-
|
27
|
-
"view::#{view_name}"
|
28
|
-
)
|
25
|
+
component_store.view_name("view::#{view_name}")
|
29
26
|
end
|
30
|
-
|
31
|
-
|
32
|
-
setdown = "RBlade::StackManager.get(_stacks) + _out"
|
33
|
-
setup + ComponentStore.get + code + setdown
|
27
|
+
|
28
|
+
-"_stacks=[];@_rblade_once_tokens=[];@_rblade_stack_manager=RBlade::StackManager.new;#{component_store.get}#{RBlade::Compiler.compileString(source, component_store)}@output_buffer.raw_buffer.prepend(@_rblade_stack_manager.get(_stacks))"
|
34
29
|
end
|
35
30
|
end
|
36
31
|
end
|
data/rblade.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "rblade"
|
3
|
-
s.version = "
|
3
|
+
s.version = "2.0.2"
|
4
4
|
s.summary = "A component-first templating engine for Rails"
|
5
5
|
s.description = "RBlade is a simple, yet powerful templating engine for Ruby on Rails, inspired by Laravel Blade."
|
6
6
|
s.authors = ["Simon J"]
|
@@ -14,6 +14,6 @@ Gem::Specification.new do |s|
|
|
14
14
|
|
15
15
|
s.add_development_dependency "minitest", "~> 5.0"
|
16
16
|
s.add_development_dependency "minitest-reporters", "~> 1.1"
|
17
|
-
s.add_development_dependency "standard", "
|
18
|
-
s.add_development_dependency "rails", "
|
17
|
+
s.add_development_dependency "standard", ">= 1.3"
|
18
|
+
s.add_development_dependency "rails", ">= 7.0"
|
19
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rblade
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon J
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -42,28 +42,28 @@ dependencies:
|
|
42
42
|
name: standard
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.3'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.3'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rails
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '7.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '7.0'
|
69
69
|
description: RBlade is a simple, yet powerful templating engine for Ruby on Rails,
|
@@ -112,7 +112,6 @@ files:
|
|
112
112
|
- lib/rblade/component_store.rb
|
113
113
|
- lib/rblade/helpers/attributes_manager.rb
|
114
114
|
- lib/rblade/helpers/class_manager.rb
|
115
|
-
- lib/rblade/helpers/html_string.rb
|
116
115
|
- lib/rblade/helpers/slot_manager.rb
|
117
116
|
- lib/rblade/helpers/stack_manager.rb
|
118
117
|
- lib/rblade/helpers/style_manager.rb
|