handlebarsjs 0.11.3 → 0.13.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/lib/handlebarsjs/base_helper.rb +21 -3
- data/lib/handlebarsjs/handlebars.rb +45 -3
- data/lib/handlebarsjs/handlebars_configuration_defaults.rb +1 -0
- data/lib/handlebarsjs/handlebars_snapshot.rb +11 -2
- data/lib/handlebarsjs/helpers/misc/safe.rb +1 -1
- data/lib/handlebarsjs/javascript/handlebars-helpers.js +12 -6
- data/lib/handlebarsjs/version.rb +1 -1
- data/lib/handlebarsjs.rb +1 -0
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f82a12060506efbddff4c69305414c8ad24cbecf14a897eae1805b6ae40a7fa5
|
|
4
|
+
data.tar.gz: 7d4b3aef04fd506d04fdcee4bcdc3256b6835ac92f856a1e9644ec77ff0cf194
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ed39a269924ab2d1794104373d6dbe38fd6ced1b77a32bf1982f5e7310f7929713b6005d3940ecbf57ea89db54d1709efca994f629ccf4c01f60c7ff6e2c0e36
|
|
7
|
+
data.tar.gz: 9c05a160e762f831cd667b8c4ac14e930eed9900507f66429ff25b9b6a71f1193fea05aa49bf43c9d9b8ccf8d3ed93ce97e21d01656b70410a96c3ba8c6652e0
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
# [0.12.0](https://github.com/klueless-io/handlebarsjs/compare/v0.11.3...v0.12.0) (2023-07-19)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* add omit ([cd516d1](https://github.com/klueless-io/handlebarsjs/commit/cd516d11c3f4e304952d6bbbcd31140c82edf11d))
|
|
7
|
+
* reset version ([dff1b8e](https://github.com/klueless-io/handlebarsjs/commit/dff1b8e710a9e433610f5a4326c8b4e9d4a927b9))
|
|
8
|
+
|
|
9
|
+
## [0.11.3](https://github.com/klueless-io/handlebarsjs/compare/v0.11.2...v0.11.3) (2023-07-19)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* remove omit config ([2e16f46](https://github.com/klueless-io/handlebarsjs/commit/2e16f46ba439606475174ec4ad96d873a5c380c6))
|
|
15
|
+
|
|
1
16
|
## [0.11.2](https://github.com/klueless-io/handlebarsjs/compare/v0.11.1...v0.11.2) (2023-07-19)
|
|
2
17
|
|
|
3
18
|
|
|
@@ -4,6 +4,7 @@ module Handlebarsjs
|
|
|
4
4
|
# Extend base helper for each of your custom handlebars-helpers
|
|
5
5
|
class BaseHelper
|
|
6
6
|
attr_reader :cmdlet
|
|
7
|
+
attr_reader :block
|
|
7
8
|
attr_reader :safe
|
|
8
9
|
attr_reader :parameter_names
|
|
9
10
|
|
|
@@ -13,23 +14,34 @@ module Handlebarsjs
|
|
|
13
14
|
def initialize(cmdlet = nil, safe: nil, parameter_names: nil)
|
|
14
15
|
initialize_cmdlet(cmdlet)
|
|
15
16
|
initialize_safe(safe)
|
|
17
|
+
initialize_block(block)
|
|
16
18
|
initialize_parameter_names(parameter_names)
|
|
17
19
|
end
|
|
18
20
|
|
|
19
21
|
class << self
|
|
20
22
|
attr_reader :cmdlet
|
|
23
|
+
attr_reader :block
|
|
21
24
|
attr_reader :safe
|
|
22
25
|
attr_reader :parameter_names
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
# Register the cmdlet to be used by the helper
|
|
28
|
+
#
|
|
29
|
+
# By default, it will register an function expression helper
|
|
30
|
+
# You can use HTML by setting safe to true
|
|
31
|
+
#
|
|
32
|
+
# @param cmdlet [Handlebarsjs::Cmdlet::Base] the cmdlet to be used by the helper
|
|
33
|
+
# @param block [Boolean] whether or not this is a wrapped block
|
|
34
|
+
# @param safe [Boolean] whether or not the cmdlet should return HTML
|
|
35
|
+
# @param parameter_names [Array] the parameter names to be used by the cmdlet
|
|
36
|
+
def register_cmdlet(cmdlet, block: false, safe: false, parameter_names: [])
|
|
25
37
|
@cmdlet = cmdlet
|
|
38
|
+
@block = block
|
|
26
39
|
@safe = safe
|
|
27
40
|
@parameter_names = parameter_names
|
|
28
41
|
end
|
|
29
42
|
end
|
|
30
43
|
|
|
31
|
-
# If you need to wrap the return value
|
|
32
|
-
# Handlebars Type, eg. SafeString, then you can override this method
|
|
44
|
+
# If you need to wrap the return value then you can override this method
|
|
33
45
|
def wrapper(value)
|
|
34
46
|
value
|
|
35
47
|
end
|
|
@@ -54,6 +66,12 @@ module Handlebarsjs
|
|
|
54
66
|
@safe = false if @safe.nil?
|
|
55
67
|
end
|
|
56
68
|
|
|
69
|
+
def initialize_block(block)
|
|
70
|
+
@block = block
|
|
71
|
+
@block = self.class.block if @block.nil? && self.class.block
|
|
72
|
+
@block = false if @block.nil?
|
|
73
|
+
end
|
|
74
|
+
|
|
57
75
|
def initialize_parameter_names(parameter_names)
|
|
58
76
|
@parameter_names = parameter_names
|
|
59
77
|
@parameter_names = self.class.parameter_names if parameter_names.nil? && self.class.parameter_names
|
|
@@ -11,13 +11,29 @@ module Handlebarsjs
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
class << self
|
|
14
|
-
def register_helper_script(name)
|
|
14
|
+
def register_helper_script(name, parameter_names = [], safe: false, block: false)
|
|
15
|
+
if safe && block
|
|
16
|
+
block_helper_safe(name, parameter_names)
|
|
17
|
+
elsif safe
|
|
18
|
+
# register_safe_string_helper_script(name, parameter_names)
|
|
19
|
+
function_helper_safe(name, parameter_names)
|
|
20
|
+
elsif block
|
|
21
|
+
block_helper(name, parameter_names)
|
|
22
|
+
else
|
|
23
|
+
function_helper(name)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# In handlebars, this is a simple function expression
|
|
28
|
+
def function_helper(name)
|
|
29
|
+
# Not sure why I am not using paramater names, but currently it works for the existing use cases
|
|
15
30
|
<<-JAVASCRIPT
|
|
16
31
|
Handlebars.registerHelper('#{name}', ruby_#{name})
|
|
17
32
|
JAVASCRIPT
|
|
18
33
|
end
|
|
19
34
|
|
|
20
|
-
|
|
35
|
+
# In handlebars, this is also a simple function expression that returns a SafeString when HTML is desired
|
|
36
|
+
def function_helper_safe(name, parameter_names)
|
|
21
37
|
parameters = (parameter_names + ['_opts']).join(', ')
|
|
22
38
|
|
|
23
39
|
<<-JAVASCRIPT
|
|
@@ -26,6 +42,28 @@ module Handlebarsjs
|
|
|
26
42
|
})
|
|
27
43
|
JAVASCRIPT
|
|
28
44
|
end
|
|
45
|
+
|
|
46
|
+
def block_helper(name, parameter_names)
|
|
47
|
+
parameters = (parameter_names + ['opts']).join(', ')
|
|
48
|
+
ruby_parameters = parameters.length.positive? ? ", #{parameters}" : ''
|
|
49
|
+
|
|
50
|
+
<<-JAVASCRIPT
|
|
51
|
+
Handlebars.registerHelper('#{name}', function (#{parameters}) {
|
|
52
|
+
return ruby_#{name}(opts.fn(this)#{ruby_parameters});
|
|
53
|
+
})
|
|
54
|
+
JAVASCRIPT
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def block_helper_safe(name, parameter_names)
|
|
58
|
+
parameters = (parameter_names + ['opts']).join(', ')
|
|
59
|
+
ruby_parameters = parameters.length.positive? ? ", #{parameters}" : ''
|
|
60
|
+
|
|
61
|
+
<<-JAVASCRIPT
|
|
62
|
+
Handlebars.registerHelper('#{name}', function (#{parameters}) {
|
|
63
|
+
return new Handlebars.SafeString(ruby_#{name}(opts.fn(this)#{ruby_parameters}));
|
|
64
|
+
})
|
|
65
|
+
JAVASCRIPT
|
|
66
|
+
end
|
|
29
67
|
end
|
|
30
68
|
|
|
31
69
|
def process_template(template, options = {})
|
|
@@ -41,11 +79,15 @@ module Handlebarsjs
|
|
|
41
79
|
|
|
42
80
|
handlebars_lib_path = File.join(gem_path, Handlebarsjs::HANDLEBARS_LIBRARY_PATH)
|
|
43
81
|
handlebars_api_path = File.join(gem_path, Handlebarsjs::HANDLEBARS_API_PATH)
|
|
82
|
+
handlebars_helpers_path = File.join(gem_path, Handlebarsjs::HANDLEBARS_HELPERS_PATH)
|
|
44
83
|
|
|
45
84
|
handlebars_snapshot.add_library('handlebars', path: handlebars_lib_path)
|
|
46
85
|
|
|
47
|
-
# Support functions
|
|
86
|
+
# Support my custom functions from handlebars-api
|
|
48
87
|
handlebars_snapshot.add_library('handlebars-api', path: handlebars_api_path)
|
|
88
|
+
|
|
89
|
+
# I have not been able to get block helpers working through ruby and so if I just need some custom JS only helpers, such as block then this is the place to do it
|
|
90
|
+
handlebars_snapshot.add_library('handlebars-helper', path: handlebars_helpers_path)
|
|
49
91
|
end
|
|
50
92
|
|
|
51
93
|
def add_configured_helpers
|
|
@@ -66,6 +66,7 @@ module Handlebarsjs
|
|
|
66
66
|
def add_misc_defaults
|
|
67
67
|
KConfig.configure do |config|
|
|
68
68
|
config.handlebars.helper(:format_json, Handlebarsjs::Helpers::Misc::FormatJson.new)
|
|
69
|
+
config.handlebars.helper(:omit, Handlebarsjs::Helpers::Misc::Omit.new, aliases: %i[ignore comment_out])
|
|
69
70
|
config.handlebars.helper(:safe, Handlebarsjs::Helpers::Misc::Safe.new)
|
|
70
71
|
end
|
|
71
72
|
end
|
|
@@ -139,9 +139,18 @@ module Handlebarsjs
|
|
|
139
139
|
end
|
|
140
140
|
|
|
141
141
|
def build_register_helper_script(helper_entry)
|
|
142
|
-
|
|
142
|
+
# When registering a helper, set the safe flag to true when you want a HTML Safe String
|
|
143
|
+
# register_cmdlet(Cmdlet::SomeHtmlCommand, safe: true, parameter_names: %i[value])
|
|
144
|
+
name = helper_entry[:name]
|
|
145
|
+
safe = helper_entry[:safe] || false
|
|
146
|
+
block = helper_entry[:block] || false
|
|
147
|
+
parameter_names = helper_entry[:parameters] || []
|
|
148
|
+
|
|
149
|
+
Handlebarsjs::Handlebars.register_helper_script(name, parameter_names, safe: safe, block: block)
|
|
150
|
+
|
|
151
|
+
# return Handlebarsjs::Handlebars.register_safe_string_helper_script(helper_entry[:name], helper_entry[:parameters]) if helper_entry[:safe]
|
|
143
152
|
|
|
144
|
-
Handlebarsjs::Handlebars.register_helper_script(helper_entry[:name])
|
|
153
|
+
# Handlebarsjs::Handlebars.register_helper_script(helper_entry[:name])
|
|
145
154
|
end
|
|
146
155
|
end
|
|
147
156
|
end
|
|
@@ -6,7 +6,7 @@ module Handlebarsjs
|
|
|
6
6
|
module Misc
|
|
7
7
|
# Safe: pass through the value with <> and single and double quotes left as is
|
|
8
8
|
class Safe < Handlebarsjs::BaseHelper
|
|
9
|
-
register_cmdlet(Cmdlet::Misc::Safe, safe: true, parameter_names: [
|
|
9
|
+
register_cmdlet(Cmdlet::Misc::Safe, safe: true, parameter_names: %i[value])
|
|
10
10
|
|
|
11
11
|
def to_proc
|
|
12
12
|
->(value, _opts) { wrapper(cmdlet.call(value)) }
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
// Put any custom helper that you can't get to work directly with Ruby in here.
|
|
2
|
+
// Exampe: I have had a lot of trouble getting the block helpers to work with Ruby
|
|
3
|
+
// Handlebars.registerHelper('loud', function (input) {
|
|
4
|
+
// return input.toUpperCase()
|
|
5
|
+
// })
|
|
4
6
|
|
|
5
|
-
Handlebars.registerHelper('allow_html', function (some_html) {
|
|
6
|
-
|
|
7
|
-
})
|
|
7
|
+
// Handlebars.registerHelper('allow_html', function (some_html) {
|
|
8
|
+
// return new Handlebars.SafeString(some_html);
|
|
9
|
+
// })
|
|
8
10
|
|
|
11
|
+
Handlebars.registerHelper('omit', function (_options) {
|
|
12
|
+
// return options.fn(this)
|
|
13
|
+
return ''
|
|
14
|
+
})
|
data/lib/handlebarsjs/version.rb
CHANGED
data/lib/handlebarsjs.rb
CHANGED
|
@@ -16,6 +16,7 @@ require_relative '_'
|
|
|
16
16
|
module Handlebarsjs
|
|
17
17
|
HANDLEBARS_LIBRARY_PATH = 'lib/handlebarsjs/javascript/handlebars-4.7.7.js'
|
|
18
18
|
HANDLEBARS_API_PATH = 'lib/handlebarsjs/javascript/handlebars-api.js'
|
|
19
|
+
HANDLEBARS_HELPERS_PATH = 'lib/handlebarsjs/javascript/handlebars-helpers.js'
|
|
19
20
|
|
|
20
21
|
# raise Handlebarsjs::Error, 'Sample message'
|
|
21
22
|
Error = Class.new(StandardError)
|
data/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "handlebarsjs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "handlebarsjs",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.13.0",
|
|
10
10
|
"devDependencies": {
|
|
11
11
|
"@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
|
|
12
12
|
"@semantic-release/changelog": "^6.0.1",
|
data/package.json
CHANGED