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.
@@ -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 < HtmlString
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
- @content
17
+ self
15
18
  end
16
19
 
17
20
  def to_str
18
- to_s
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 self.initialize stack_name, before_stack
6
- @@stacks[stack_name] ||= Stack.new
7
- @@stacks[stack_name].set_before_stack before_stack
5
+ def initialize
6
+ @stacks = {}
8
7
  end
9
8
 
10
- def self.clear
11
- @@stacks = {}
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 self.push stack_name, code
15
- @@stacks[stack_name] ||= Stack.new
16
- @@stacks[stack_name].push code.to_s
15
+ def clear
16
+ @stacks = {}
17
17
  end
18
18
 
19
- def self.prepend stack_name, code
20
- @@stacks[stack_name] ||= Stack.new
21
- @@stacks[stack_name].prepend code.to_s
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 self.get(stacks)
25
- stacks.map do |name|
26
- out = @@stacks[name].to_s
27
- @@stacks.delete name
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
- out
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.clear
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
- RBlade::ComponentStore.view_name(
27
- "view::#{view_name}"
28
- )
25
+ component_store.view_name("view::#{view_name}")
29
26
  end
30
- setup = "_out=+'';_stacks=[];$_once_tokens=[];"
31
- code = RBlade::Compiler.compileString(source || template.source)
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 = "1.2.1"
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", "~> 1.3"
18
- s.add_development_dependency "rails", "~> 7.0"
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: 1.2.1
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: 2024-10-31 00:00:00.000000000 Z
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
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RBlade
4
- class HtmlString
5
- end
6
- end