smolbars 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/smolbars/context.rb +23 -2
- data/lib/smolbars/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb5c650020d40b4cbb2eba845fd599113c44de878d58bb7015b1573248a3dba0
|
4
|
+
data.tar.gz: 00f4d9f37f81a1c081d1db373eb62819f2b852ea5b7f50b83884381f084ddd44
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba0bb6952537564b7c0d7324f3aef4444ba7c142d478d5d283c617fb0de2aa5aaa26797c6e23a9e76b62efdfce4b77751bf595c4eafa3639aa5776ef55d5f7aa
|
7
|
+
data.tar.gz: bfd01f873c70f5a71272f4ad55f2a2b20f500a0396028d07d615df7cfe1f614e30ba1ef33e63bd199543b544f88a5078b74e7b4ada199e8d6c66b0e04eff8499
|
data/lib/smolbars/context.rb
CHANGED
@@ -4,6 +4,18 @@ require 'securerandom'
|
|
4
4
|
|
5
5
|
module Smolbars
|
6
6
|
class Context
|
7
|
+
JS_ESCAPE_MAP = {
|
8
|
+
'\\' => '\\\\',
|
9
|
+
"</" => '<\/',
|
10
|
+
"\r\n" => '\n',
|
11
|
+
"\n" => '\n',
|
12
|
+
"\r" => '\n',
|
13
|
+
'"' => '\\"',
|
14
|
+
"'" => "\\'",
|
15
|
+
"`" => "\\`",
|
16
|
+
"$" => "\\$"
|
17
|
+
}.freeze
|
18
|
+
|
7
19
|
def initialize(**kwargs)
|
8
20
|
@js = MiniRacer::Context.new(kwargs)
|
9
21
|
@js.load(Handlebars::Source.bundled_path)
|
@@ -14,7 +26,7 @@ module Smolbars
|
|
14
26
|
# manually escaping them
|
15
27
|
def compile(template)
|
16
28
|
handle = fn_handle
|
17
|
-
invocation = %
|
29
|
+
invocation = %{var #{handle} = Handlebars.compile("#{escape_javascript(template)}");}
|
18
30
|
@js.eval(invocation)
|
19
31
|
::Smolbars::Template.new(self, handle)
|
20
32
|
end
|
@@ -24,7 +36,7 @@ module Smolbars
|
|
24
36
|
end
|
25
37
|
|
26
38
|
def load_pattern(pattern)
|
27
|
-
Dir[pattern].each{ |path| load(path) }
|
39
|
+
Dir[pattern].each { |path| load(path) }
|
28
40
|
end
|
29
41
|
|
30
42
|
def load(path)
|
@@ -36,5 +48,14 @@ module Smolbars
|
|
36
48
|
def fn_handle
|
37
49
|
"js_fn_#{SecureRandom.hex}"
|
38
50
|
end
|
51
|
+
|
52
|
+
def escape_javascript(javascript)
|
53
|
+
javascript = javascript.to_s
|
54
|
+
if javascript.empty?
|
55
|
+
''
|
56
|
+
else
|
57
|
+
javascript.gsub(/(\\|<\/|\r\n|\342\200\250|\342\200\251|[\n\r"']|[`]|[$])/u, JS_ESCAPE_MAP)
|
58
|
+
end
|
59
|
+
end
|
39
60
|
end
|
40
61
|
end
|
data/lib/smolbars/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smolbars
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Charles Lowell
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-
|
12
|
+
date: 2022-08-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mini_racer
|
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
98
|
- !ruby/object:Gem::Version
|
99
99
|
version: '0'
|
100
100
|
requirements: []
|
101
|
-
rubygems_version: 3.
|
101
|
+
rubygems_version: 3.1.6
|
102
102
|
signing_key:
|
103
103
|
specification_version: 4
|
104
104
|
summary: Ruby bindings for the smolbars.js templating library
|