handlebarsjs 0.12.0 → 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 +8 -0
- data/lib/_.rb +0 -1
- data/lib/handlebarsjs/base_helper.rb +21 -3
- data/lib/handlebarsjs/handlebars.rb +45 -3
- data/lib/handlebarsjs/handlebars_snapshot.rb +11 -2
- 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 -2
- data/lib/handlebarsjs/helpers/misc/omit.rb +0 -17
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,11 @@
|
|
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
|
+
|
1
9
|
## [0.11.3](https://github.com/klueless-io/handlebarsjs/compare/v0.11.2...v0.11.3) (2023-07-19)
|
2
10
|
|
3
11
|
|
data/lib/_.rb
CHANGED
@@ -32,7 +32,6 @@ require_relative 'handlebarsjs/helpers/inflection/pluralize_number'
|
|
32
32
|
require_relative 'handlebarsjs/helpers/inflection/pluralize_number_word'
|
33
33
|
require_relative 'handlebarsjs/helpers/inflection/singularize'
|
34
34
|
require_relative 'handlebarsjs/helpers/misc/format_json'
|
35
|
-
require_relative 'handlebarsjs/helpers/misc/omit'
|
36
35
|
require_relative 'handlebarsjs/helpers/misc/safe'
|
37
36
|
require_relative 'handlebarsjs/helpers/str/padl'
|
38
37
|
require_relative 'handlebarsjs/helpers/str/padr'
|
@@ -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
|
@@ -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
|
@@ -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
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: handlebarsjs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
@@ -128,7 +128,6 @@ files:
|
|
128
128
|
- lib/handlebarsjs/helpers/inflection/pluralize_number_word.rb
|
129
129
|
- lib/handlebarsjs/helpers/inflection/singularize.rb
|
130
130
|
- lib/handlebarsjs/helpers/misc/format_json.rb
|
131
|
-
- lib/handlebarsjs/helpers/misc/omit.rb
|
132
131
|
- lib/handlebarsjs/helpers/misc/safe.rb
|
133
132
|
- lib/handlebarsjs/helpers/str/padl.rb
|
134
133
|
- lib/handlebarsjs/helpers/str/padr.rb
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Handlebarsjs
|
4
|
-
module Helpers
|
5
|
-
# Miscellaneous cmdlets
|
6
|
-
module Misc
|
7
|
-
# Omit: this content will not get written out, useful for commenting out code
|
8
|
-
class Omit < Handlebarsjs::BaseHelper
|
9
|
-
register_cmdlet(Cmdlet::Misc::Omit)
|
10
|
-
|
11
|
-
def to_proc
|
12
|
-
->(value, _opts) { wrapper(cmdlet.call(value)) }
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|