handlebarsjs 0.5.4 → 0.5.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -0
- data/lib/handlebarsjs/configuration.rb +32 -0
- data/lib/handlebarsjs/handlebars.rb +23 -4
- data/lib/handlebarsjs/handlebars_snapshot.rb +4 -1
- data/lib/handlebarsjs/helpers/array/default_configuration.rb +7 -0
- data/lib/handlebarsjs/helpers/case/default_configuration.rb +17 -0
- data/lib/handlebarsjs/helpers/comparison/default_configuration.rb +13 -0
- data/lib/handlebarsjs/helpers/inflection/default_configuration.rb +10 -0
- data/lib/handlebarsjs/version.rb +1 -1
- data/lib/handlebarsjs.rb +23 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +7 -3
- data/lib/handlebarsjs/api.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 11fa1ae2d5651494b88fba96cffddf5fbf61a4a4bca2d558af4bf4c9bdab7051
|
4
|
+
data.tar.gz: ba0da5f90e25cb0d9aa93d3b0da33c1a7bd46051d194f37a6423831cad83e39b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c56cb2167139c856225497aa504d8bd4c3352b262427eeb812491a9dbe67d7a334c7034b48e16d55e7c455adff584e978894812971e75379e964fbc37880ad6
|
7
|
+
data.tar.gz: e3534532930b1ed409d34c8ab48444c7313016c01d928043650d2c84e5203ff34a5a7ada22ea2bf15c9525ca931c35712f31d331bf90af2758eef99dfb08f826
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
## [0.5.6](https://github.com/klueless-io/handlebarsjs/compare/v0.5.5...v0.5.6) (2022-07-13)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* add configuration capability to handlebars_snapshot ([06f7ca6](https://github.com/klueless-io/handlebarsjs/commit/06f7ca628018d4a89c9b068c8cae4565a624a3db))
|
7
|
+
|
8
|
+
## [0.5.5](https://github.com/klueless-io/handlebarsjs/compare/v0.5.4...v0.5.5) (2022-07-12)
|
9
|
+
|
10
|
+
|
11
|
+
### Bug Fixes
|
12
|
+
|
13
|
+
* add configuration ([ab16612](https://github.com/klueless-io/handlebarsjs/commit/ab16612500b1cf61094b128e14fcecbe1aacde5b))
|
14
|
+
|
15
|
+
## [0.5.4](https://github.com/klueless-io/handlebarsjs/compare/v0.5.3...v0.5.4) (2022-07-12)
|
16
|
+
|
17
|
+
|
18
|
+
### Bug Fixes
|
19
|
+
|
20
|
+
* add inflection: pluralize_number and pluralize_number_word ([33ba59a](https://github.com/klueless-io/handlebarsjs/commit/33ba59a7b0ec86e29ed8ddd5bfd3bb5e91d18123))
|
21
|
+
|
1
22
|
## [0.5.3](https://github.com/klueless-io/handlebarsjs/compare/v0.5.2...v0.5.3) (2022-07-12)
|
2
23
|
|
3
24
|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Handlebarsjs
|
4
|
+
# Register this configuration access extension for Handlebars configuration
|
5
|
+
module HandlebarsConfigurationExtension
|
6
|
+
def handlebars
|
7
|
+
return @handlebars if defined? @handlebars
|
8
|
+
|
9
|
+
@handlebars = HandlebarsConfiguration.new
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# handlebars.handlebars_snapshot.add_helper(helper_name, helper)
|
14
|
+
# Structure for storing Cmdlet configuration
|
15
|
+
class HandlebarsConfiguration
|
16
|
+
include KLog::Logging
|
17
|
+
|
18
|
+
attr_accessor :helpers
|
19
|
+
|
20
|
+
def initialize
|
21
|
+
@helpers = []
|
22
|
+
end
|
23
|
+
|
24
|
+
HelperConfig = Struct.new(:name, :helper)
|
25
|
+
|
26
|
+
def helper(name, helper)
|
27
|
+
@helpers << HelperConfig.new(name, helper)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
KConfig::Configuration.register(:handlebars, Handlebarsjs::HandlebarsConfigurationExtension)
|
@@ -5,16 +5,35 @@ module Handlebarsjs
|
|
5
5
|
class Handlebars < Handlebarsjs::Javascript
|
6
6
|
def initialize
|
7
7
|
super
|
8
|
-
# Handlebars 4.7.7
|
9
|
-
handlebars_snapshot.add_library('handlebars', path: Handlebarsjs::HANDLEBARS_LIBRARY_PATH)
|
10
8
|
|
11
|
-
|
12
|
-
|
9
|
+
add_libraries
|
10
|
+
add_configured_helpers
|
13
11
|
end
|
14
12
|
|
15
13
|
def process_template(template, options = {})
|
16
14
|
# TODO: process template function may be improved with some type of caching
|
17
15
|
context.call('process_template', template, options)
|
18
16
|
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def add_libraries
|
21
|
+
# Handlebars 4.7.7
|
22
|
+
gem_path = Gem.loaded_specs['handlebarsjs'].full_gem_path
|
23
|
+
|
24
|
+
handlebars_lib_path = File.join(gem_path, Handlebarsjs::HANDLEBARS_LIBRARY_PATH)
|
25
|
+
handlebars_api_path = File.join(gem_path, Handlebarsjs::HANDLEBARS_API_PATH)
|
26
|
+
|
27
|
+
handlebars_snapshot.add_library('handlebars', path: handlebars_lib_path)
|
28
|
+
|
29
|
+
# Support functions for working with
|
30
|
+
handlebars_snapshot.add_library('handlebars-api', path: handlebars_api_path)
|
31
|
+
end
|
32
|
+
|
33
|
+
def add_configured_helpers
|
34
|
+
KConfig.configuration.handlebars.helpers.each do |helper_config|
|
35
|
+
handlebars_snapshot.add_helper(helper_config.name, helper_config.helper)
|
36
|
+
end
|
37
|
+
end
|
19
38
|
end
|
20
39
|
end
|
@@ -6,6 +6,8 @@ module Handlebarsjs
|
|
6
6
|
# in the correct order. So that new contexts are preloaded
|
7
7
|
# with the handlebars library and the configured helpers.
|
8
8
|
class HandlebarsSnapshot
|
9
|
+
include KLog::Logging
|
10
|
+
|
9
11
|
attr_reader :scripts
|
10
12
|
attr_reader :helpers
|
11
13
|
|
@@ -60,7 +62,8 @@ module Handlebarsjs
|
|
60
62
|
end
|
61
63
|
|
62
64
|
def debug
|
63
|
-
|
65
|
+
data = { scripts: scripts, helpers: helpers }
|
66
|
+
log.structure(data)
|
64
67
|
end
|
65
68
|
|
66
69
|
private
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
KConfig.configure do |config|
|
4
|
+
config.handlebars.helper(:join, Handlebarsjs::Helpers::Array::Join.new)
|
5
|
+
config.handlebars.helper(:join_pre, Handlebarsjs::Helpers::Array::JoinPre.new)
|
6
|
+
config.handlebars.helper(:join_post, Handlebarsjs::Helpers::Array::JoinPost.new)
|
7
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
KConfig.configure do |config|
|
4
|
+
config.handlebars.helper(:back_slash, Handlebarsjs::Helpers::Case::BackSlash.new)
|
5
|
+
config.handlebars.helper(:camel, Handlebarsjs::Helpers::Case::Camel.new)
|
6
|
+
config.handlebars.helper(:constant, Handlebarsjs::Helpers::Case::Constant.new)
|
7
|
+
config.handlebars.helper(:dash, Handlebarsjs::Helpers::Case::Dash.new)
|
8
|
+
config.handlebars.helper(:dot, Handlebarsjs::Helpers::Case::Dot.new)
|
9
|
+
config.handlebars.helper(:double_colon, Handlebarsjs::Helpers::Case::DoubleColon.new)
|
10
|
+
config.handlebars.helper(:human, Handlebarsjs::Helpers::Case::Human.new)
|
11
|
+
config.handlebars.helper(:lamel, Handlebarsjs::Helpers::Case::Lamel.new)
|
12
|
+
config.handlebars.helper(:lower, Handlebarsjs::Helpers::Case::Lower.new)
|
13
|
+
config.handlebars.helper(:slash, Handlebarsjs::Helpers::Case::Slash.new)
|
14
|
+
config.handlebars.helper(:snake, Handlebarsjs::Helpers::Case::Snake.new)
|
15
|
+
config.handlebars.helper(:title, Handlebarsjs::Helpers::Case::Title.new)
|
16
|
+
config.handlebars.helper(:upper, Handlebarsjs::Helpers::Case::Upper.new)
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
KConfig.configure do |config|
|
4
|
+
config.handlebars.helper(:and, Handlebarsjs::Helpers::Comparison::And.new)
|
5
|
+
config.handlebars.helper(:default, Handlebarsjs::Helpers::Comparison::Default.new)
|
6
|
+
config.handlebars.helper(:eq, Handlebarsjs::Helpers::Comparison::Eq.new)
|
7
|
+
config.handlebars.helper(:gt, Handlebarsjs::Helpers::Comparison::Gt.new)
|
8
|
+
config.handlebars.helper(:gte, Handlebarsjs::Helpers::Comparison::Gte.new)
|
9
|
+
config.handlebars.helper(:lt, Handlebarsjs::Helpers::Comparison::Lt.new)
|
10
|
+
config.handlebars.helper(:lte, Handlebarsjs::Helpers::Comparison::Lte.new)
|
11
|
+
config.handlebars.helper(:ne, Handlebarsjs::Helpers::Comparison::Ne.new)
|
12
|
+
config.handlebars.helper(:or, Handlebarsjs::Helpers::Comparison::Or.new)
|
13
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
KConfig.configure do |config|
|
4
|
+
config.handlebars.helper(:ordinal, Handlebarsjs::Helpers::Inflection::Ordinal.new)
|
5
|
+
config.handlebars.helper(:ordinalize, Handlebarsjs::Helpers::Inflection::Ordinalize.new)
|
6
|
+
config.handlebars.helper(:pluralize, Handlebarsjs::Helpers::Inflection::Pluralize.new)
|
7
|
+
config.handlebars.helper(:pluralize_number, Handlebarsjs::Helpers::Inflection::PluralizeNumber.new)
|
8
|
+
config.handlebars.helper(:pluralize_number_word, Handlebarsjs::Helpers::Inflection::PluralizeNumberWord.new)
|
9
|
+
config.handlebars.helper(:singularize, Handlebarsjs::Helpers::Inflection::Singularize.new)
|
10
|
+
end
|
data/lib/handlebarsjs/version.rb
CHANGED
data/lib/handlebarsjs.rb
CHANGED
@@ -3,12 +3,14 @@
|
|
3
3
|
require 'mini_racer'
|
4
4
|
require 'cmdlet'
|
5
5
|
require_relative 'handlebarsjs/version'
|
6
|
+
require_relative 'handlebarsjs/configuration'
|
6
7
|
require_relative 'handlebarsjs/javascript'
|
7
8
|
require_relative 'handlebarsjs/handlebars_snapshot'
|
8
9
|
require_relative 'handlebarsjs/handlebars'
|
9
10
|
require_relative 'handlebarsjs/base_helper'
|
10
11
|
require_relative '_'
|
11
12
|
|
13
|
+
# Handlebarsjs is a Ruby wrapper for the Handlebars.js templating engine.
|
12
14
|
module Handlebarsjs
|
13
15
|
HANDLEBARS_LIBRARY_PATH = 'lib/handlebarsjs/javascript/handlebars-4.7.7.js'
|
14
16
|
HANDLEBARS_API_PATH = 'lib/handlebarsjs/javascript/handlebars-api.js'
|
@@ -16,7 +18,27 @@ module Handlebarsjs
|
|
16
18
|
# raise Handlebarsjs::Error, 'Sample message'
|
17
19
|
Error = Class.new(StandardError)
|
18
20
|
|
19
|
-
|
21
|
+
class << self
|
22
|
+
# Get a singleton instance of the Handlebars engine.
|
23
|
+
#
|
24
|
+
# The engine is exposed as a singleton and that means that if you
|
25
|
+
# alter the configuration after calling Handlebarsjs.engine,
|
26
|
+
# you will have old helper state attached to the engine.
|
27
|
+
#
|
28
|
+
# If you need to update your helper state, then run Handlebarsjs.reset
|
29
|
+
# to clear the singleton
|
30
|
+
def engine
|
31
|
+
@engine ||= Handlebarsjs::Handlebars.new
|
32
|
+
end
|
33
|
+
|
34
|
+
def reset
|
35
|
+
@engine = nil
|
36
|
+
end
|
37
|
+
|
38
|
+
def process_template(template, options = {})
|
39
|
+
@engine.process_template(template, options)
|
40
|
+
end
|
41
|
+
end
|
20
42
|
end
|
21
43
|
|
22
44
|
if ENV.fetch('KLUE_DEBUG', 'false').downcase == 'true'
|
data/package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "handlebarsjs",
|
3
|
-
"version": "0.5.
|
3
|
+
"version": "0.5.7",
|
4
4
|
"lockfileVersion": 2,
|
5
5
|
"requires": true,
|
6
6
|
"packages": {
|
7
7
|
"": {
|
8
8
|
"name": "handlebarsjs",
|
9
|
-
"version": "0.5.
|
9
|
+
"version": "0.5.7",
|
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,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: handlebarsjs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-07-
|
11
|
+
date: 2022-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cmdlet
|
@@ -91,10 +91,11 @@ files:
|
|
91
91
|
- docs/project-plan/project_in_progress.svg
|
92
92
|
- lib/_.rb
|
93
93
|
- lib/handlebarsjs.rb
|
94
|
-
- lib/handlebarsjs/api.rb
|
95
94
|
- lib/handlebarsjs/base_helper.rb
|
95
|
+
- lib/handlebarsjs/configuration.rb
|
96
96
|
- lib/handlebarsjs/handlebars.rb
|
97
97
|
- lib/handlebarsjs/handlebars_snapshot.rb
|
98
|
+
- lib/handlebarsjs/helpers/array/default_configuration.rb
|
98
99
|
- lib/handlebarsjs/helpers/array/join.rb
|
99
100
|
- lib/handlebarsjs/helpers/array/join_post.rb
|
100
101
|
- lib/handlebarsjs/helpers/array/join_pre.rb
|
@@ -102,6 +103,7 @@ files:
|
|
102
103
|
- lib/handlebarsjs/helpers/case/camel.rb
|
103
104
|
- lib/handlebarsjs/helpers/case/constant.rb
|
104
105
|
- lib/handlebarsjs/helpers/case/dash.rb
|
106
|
+
- lib/handlebarsjs/helpers/case/default_configuration.rb
|
105
107
|
- lib/handlebarsjs/helpers/case/dot.rb
|
106
108
|
- lib/handlebarsjs/helpers/case/double_colon.rb
|
107
109
|
- lib/handlebarsjs/helpers/case/human.rb
|
@@ -113,6 +115,7 @@ files:
|
|
113
115
|
- lib/handlebarsjs/helpers/case/upper.rb
|
114
116
|
- lib/handlebarsjs/helpers/comparison/and.rb
|
115
117
|
- lib/handlebarsjs/helpers/comparison/default.rb
|
118
|
+
- lib/handlebarsjs/helpers/comparison/default_configuration.rb
|
116
119
|
- lib/handlebarsjs/helpers/comparison/eq.rb
|
117
120
|
- lib/handlebarsjs/helpers/comparison/gt.rb
|
118
121
|
- lib/handlebarsjs/helpers/comparison/gte.rb
|
@@ -120,6 +123,7 @@ files:
|
|
120
123
|
- lib/handlebarsjs/helpers/comparison/lte.rb
|
121
124
|
- lib/handlebarsjs/helpers/comparison/ne.rb
|
122
125
|
- lib/handlebarsjs/helpers/comparison/or.rb
|
126
|
+
- lib/handlebarsjs/helpers/inflection/default_configuration.rb
|
123
127
|
- lib/handlebarsjs/helpers/inflection/ordinal.rb
|
124
128
|
- lib/handlebarsjs/helpers/inflection/ordinalize.rb
|
125
129
|
- lib/handlebarsjs/helpers/inflection/pluralize.rb
|