serbea 0.3.0 → 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/serbea.rb +1 -1
- data/lib/serbea/helpers.rb +21 -0
- data/lib/serbea/pipeline.rb +14 -7
- data/lib/serbea/template_engine.rb +23 -7
- data/lib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3aedaea6776741f8b501ad554019405c093c28947b810d44a1647424206b6cd8
|
4
|
+
data.tar.gz: 95b6936d84b60f31cacccde7b4213623bb03789d97fc9b07afa0dc2e76e1d27b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd51862c6db8dc1bac37d6dded1e3f08d8f7cc9e8787011c4eddb44cc62799df80fb1fb16aafcab7a00f696b1fcd57f2872bb6dfc12a5104b3b34c2948d34955
|
7
|
+
data.tar.gz: f45b665cb6b684892ce792c91b1f14f59f7af33364875eddc7a4b0eb34f2b8e771cce1d1b0ad99aee06fc49dc3f1d6c8a2176118fc0685dde5d3892ce927d93b
|
data/lib/serbea.rb
CHANGED
@@ -3,9 +3,9 @@ require "tilt/erubi"
|
|
3
3
|
require "erubi/capture_end"
|
4
4
|
|
5
5
|
require "serbea/helpers"
|
6
|
-
require "serbea/component_renderer"
|
7
6
|
require "serbea/pipeline"
|
8
7
|
require "serbea/template_engine"
|
8
|
+
require "serbea/component_renderer"
|
9
9
|
|
10
10
|
module Tilt
|
11
11
|
class SerbeaTemplate < ErubiTemplate
|
data/lib/serbea/helpers.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
module Serbea
|
2
2
|
module Helpers
|
3
|
+
def self.included(mod)
|
4
|
+
Serbea::Pipeline.deny_value_method %i(escape h prepend append map assign_to)
|
5
|
+
end
|
6
|
+
|
3
7
|
def capture(obj=nil)
|
4
8
|
previous_buffer_state = @_erbout
|
5
9
|
@_erbout = +""
|
@@ -21,5 +25,22 @@ module Serbea
|
|
21
25
|
Erubi.h(input)
|
22
26
|
end
|
23
27
|
alias_method :escape, :h
|
28
|
+
|
29
|
+
def prepend(old_string, new_string)
|
30
|
+
"#{new_string}#{old_string}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def append(old_string, new_string)
|
34
|
+
"#{old_string}#{new_string}"
|
35
|
+
end
|
36
|
+
|
37
|
+
def map(input, block)
|
38
|
+
input.map(&block)
|
39
|
+
end
|
40
|
+
|
41
|
+
def assign_to(input, varname, preserve: false)
|
42
|
+
self.instance_variable_set("@#{varname}", input)
|
43
|
+
preserve ? input : nil
|
44
|
+
end
|
24
45
|
end
|
25
46
|
end
|
data/lib/serbea/pipeline.rb
CHANGED
@@ -10,19 +10,26 @@ module Serbea
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
+
def self.deny_value_method(name)
|
14
|
+
value_methods_denylist.merge Array(name)
|
15
|
+
end
|
16
|
+
def self.value_methods_denylist
|
17
|
+
@value_methods_denylist ||= Set.new
|
18
|
+
end
|
19
|
+
|
13
20
|
def initialize(context, value)
|
14
21
|
@context = context
|
15
22
|
@value = value
|
16
23
|
end
|
17
24
|
|
18
|
-
def filter(
|
19
|
-
if @value.respond_to?(
|
20
|
-
@value = @value.send(
|
21
|
-
elsif @context.respond_to?(
|
22
|
-
@value = @context.send(
|
25
|
+
def filter(name, *args)
|
26
|
+
if @value.respond_to?(name) && !self.class.value_methods_denylist.include?(name)
|
27
|
+
@value = @value.send(name, *args)
|
28
|
+
elsif @context.respond_to?(name)
|
29
|
+
@value = @context.send(name, @value, *args)
|
23
30
|
else
|
24
|
-
"Serbea warning: Filter not found: #{
|
25
|
-
raise_on_missing_filters ? raise(warning) : puts(warning)
|
31
|
+
"Serbea warning: Filter not found: #{name}".tap do |warning|
|
32
|
+
raise_on_missing_filters ? raise(warning) : STDERR.puts(warning)
|
26
33
|
end
|
27
34
|
end
|
28
35
|
|
@@ -35,8 +35,7 @@ module Serbea
|
|
35
35
|
string = template.dup
|
36
36
|
if properties[:strip_front_matter] && self.class.has_yaml_header?(string)
|
37
37
|
if string = string.match(FRONT_MATTER_REGEXP)
|
38
|
-
string = string.post_match
|
39
|
-
# yaml_data = SafeYAML.load(template.captures[0])
|
38
|
+
string = ("{%#%}\n" * string.to_s.lines.count) + string.post_match
|
40
39
|
end
|
41
40
|
end
|
42
41
|
|
@@ -56,7 +55,7 @@ module Serbea
|
|
56
55
|
end
|
57
56
|
end
|
58
57
|
|
59
|
-
# Process
|
58
|
+
# Process any pipelines
|
60
59
|
string = buff
|
61
60
|
buff = ""
|
62
61
|
until string.empty?
|
@@ -68,7 +67,7 @@ module Serbea
|
|
68
67
|
|
69
68
|
code = code.gsub('\|', "__PIPE_C__")
|
70
69
|
|
71
|
-
subs = code.gsub(/\s
|
70
|
+
subs = code.gsub(/\s*\|>?\s+(.*?)\s([^|}]*)/) do
|
72
71
|
args = $2
|
73
72
|
args = nil if args.strip == ""
|
74
73
|
prefix = processed_filters ? ")" : "))"
|
@@ -82,7 +81,15 @@ module Serbea
|
|
82
81
|
end
|
83
82
|
end
|
84
83
|
|
85
|
-
# Process
|
84
|
+
# Process any directives
|
85
|
+
#
|
86
|
+
# TODO: allow custom directives! aka
|
87
|
+
# {%@something whatever %}
|
88
|
+
# {%@script
|
89
|
+
# const foo = "really? #{really}!"
|
90
|
+
# alert(foo.toLowerCase())
|
91
|
+
# %}
|
92
|
+
# {%@preact AwesomeChart data={#{ruby_data.to_json}} %}
|
86
93
|
string = buff
|
87
94
|
buff = ""
|
88
95
|
until string.empty?
|
@@ -100,8 +107,17 @@ module Serbea
|
|
100
107
|
else # string or something else
|
101
108
|
pieces[0].prepend "("
|
102
109
|
end
|
103
|
-
|
104
|
-
|
110
|
+
|
111
|
+
includes_block = false
|
112
|
+
pieces.reverse.each do |piece|
|
113
|
+
if piece == "do" && (pieces.last == "do" || pieces.last.end_with?("|"))
|
114
|
+
piece.prepend(") ")
|
115
|
+
includes_block = true
|
116
|
+
break
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
if includes_block
|
105
121
|
buff << "{%:= #{self.class.render_directive}#{pieces.join(" ")} %}"
|
106
122
|
else
|
107
123
|
pieces.last << ")"
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: serbea
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bridgetown Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-09-
|
11
|
+
date: 2020-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: erubi
|