handlebars-helpers 0.0.71 → 0.0.77

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 850126b36a61132bcd5cdf6fb48145c15be4c02af696cb2fe5f24e44d65f4549
4
- data.tar.gz: 131a12e91ce05cf333df327edfca64827d9bc869be7c7b7acf625f72b0773dc1
3
+ metadata.gz: ef6712aacb680e54f0ef3127506c404319ce38bec06bf00f7f1a7d082cfc7d87
4
+ data.tar.gz: 181568f89da2c8c78121d8e8e2777906dacd3c714bef1af165cc006022fdacc3
5
5
  SHA512:
6
- metadata.gz: 46324180caaeb0b651bdfa2cb02b1a36939fce1cb81e40ad882f84e76df9c88c3061586624fb15e7a16b66d67c9cf1d65a3f8d580beeaefbfa8b1016ca9e6e2f
7
- data.tar.gz: c49ff649824921f0b5908d434d6c2b3eaf159b6167edd65265e6464cd6448848cbdb49ed4c70cda194f501d96b691a9c270fc79d0fb7a826a319dbec6c8025e3
6
+ metadata.gz: ff8f9e14297e84a9b42e2c020de73ac1e65ff4d69d3eb6a72f11bad76d3d66eb914cb6a05ac8767f537055d552161dba053ee0ae75b3a62e1d3449a11396347a
7
+ data.tar.gz: 25c0733abc52e39a5d46b1234b2d07226f5fdad40e2499d7b2acfc2271260ef6642561e41175edf2ce58e402306ec4984bc8fc5e48458d6b058ef2bcac419178
@@ -364,6 +364,26 @@
364
364
  "https://github.com/helpers/handlebars-helpers/blob/master/test/misc.js"
365
365
  ],
366
366
  "helpers": [
367
+ {
368
+ "name": "json",
369
+ "description": "value as JSON string",
370
+ "test_in": null,
371
+ "test_out": null,
372
+ "tests": [
373
+ {
374
+ "alias": "json",
375
+ "expected_value": "{ \"david\": \"was here\" }",
376
+ "params": [
377
+ { "name": "value", "value": "{ \"david\": \"was here\" }" }
378
+ ],
379
+ "template": "{{json value}}"
380
+ }
381
+ ],
382
+ "aliases": ["json"],
383
+ "require_path": "handlebars/helpers/misc/json",
384
+ "class_namespace": "Handlebars::Helpers::Misc::Json",
385
+ "is_string_formatter": null
386
+ },
367
387
  {
368
388
  "name": "safe",
369
389
  "description": "value in safe string format",
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Handlebars Helpers
2
2
 
3
- > Handlebars Helpers is a library that provides <b>$HELPER_COUNT$</b> handlebars helpers across <b>$HELPER_CATEGORY_COUNT$</b> categories, it was built to complement [cowboyd/handlebars.rb](https://github.com/cowboyd/handlebars.rb) with Ruby helpers commonly found in the Javascript community
3
+ > Handlebars Helpers is a library that provides <b>42</b> handlebars helpers across <b>5</b> categories, it was built to complement [cowboyd/handlebars.rb](https://github.com/cowboyd/handlebars.rb) with Ruby helpers commonly found in the Javascript community
4
4
 
5
5
  This GEM is inspired by the Javascript Library [handlebars-helpers](https://github.com/helpers/handlebars-helpers).
6
6
 
@@ -76,6 +76,8 @@ To release a new version, update the version number in `version.rb`, build the g
76
76
  ```bash
77
77
  gem build
78
78
  gem push rspec-usecases-?.?.??.gem
79
+ # or push the latest gem
80
+ ls *.gem | sort -r | head -1 | xargs gem push
79
81
  ```
80
82
 
81
83
  ## Contributing
data/STORIES.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Handlebars Helpers
2
2
 
3
- > Handlebars Helpers is a library that provides <b>5</b> handlebars helpers across <b>42</b> categories, it was built to complement [cowboyd/handlebars.rb](https://github.com/cowboyd/handlebars.rb) with Ruby helpers commonly found in the Javascript community
3
+ > Handlebars Helpers is a library that provides <b>42</b> handlebars helpers across <b>5</b> categories, it was built to complement [cowboyd/handlebars.rb](https://github.com/cowboyd/handlebars.rb) with Ruby helpers commonly found in the Javascript community
4
4
 
5
5
  As a Ruby Developer, I want to use HandlebarsJS with useful helpers, so that I have a rich templating experience
6
6
 
data/USAGE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Handlebars Helpers
2
2
 
3
- > Handlebars Helpers is a library that provides <b>5</b> handlebars helpers across <b>42</b> categories, it was built to complement [cowboyd/handlebars.rb](https://github.com/cowboyd/handlebars.rb) with Ruby helpers commonly found in the Javascript community
3
+ > Handlebars Helpers is a library that provides <b>42</b> handlebars helpers across <b>5</b> categories, it was built to complement [cowboyd/handlebars.rb](https://github.com/cowboyd/handlebars.rb) with Ruby helpers commonly found in the Javascript community
4
4
 
5
5
  As a Ruby Developer, I want to use HandlebarsJS with useful helpers, so that I have a rich templating experience
6
6
 
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'lib/handlebars/helpers/version'
4
+ require_relative 'lib/handlebars/helpers/statistics'
4
5
 
5
6
  Gem::Specification.new do |spec|
7
+ description = "Handlebars Helpers provides (#{Handlebars::Helpers::HANDLER_COUNT}) handlebars helpers across (#{Handlebars::Helpers::CATEGORY_COUNT}) categories"
8
+
6
9
  spec.required_ruby_version = '>= 2.5'
7
10
  spec.name = 'handlebars-helpers'
8
11
  spec.version = Handlebars::Helpers::VERSION
9
12
  spec.authors = ['David Cruwys']
10
13
  spec.email = ['david@ideasmen.com.au']
11
14
 
12
- spec.summary = 'Handlebars Helpers provides (Nx) handlebars helpers across (Ny) categories'
13
- spec.description = <<-TEXT
14
- Handlebars Helpers provides (Nx) handlebars helpers across (Ny) categories
15
- TEXT
15
+ spec.summary = description
16
+ spec.description = description
16
17
  spec.homepage = 'http://appydave.com/gems/handlebars-helpers'
17
18
  spec.license = 'MIT'
18
19
 
@@ -25,6 +26,7 @@ Gem::Specification.new do |spec|
25
26
  spec.metadata['homepage_uri'] = spec.homepage
26
27
  spec.metadata['source_code_uri'] = 'https://github.com/klueless-io/handlebars-helpers'
27
28
  spec.metadata['changelog_uri'] = 'https://github.com/klueless-io/handlebars-helpers/commits/master'
29
+ spec.metadata['documentation_uri'] = 'https://rubydoc.info/github/klueless-io/handlebars-helpers/master'
28
30
 
29
31
  # Specify which files should be added to the gem when it is released.
30
32
  # The `git ls-files -z` loads the RubyGem files that have been added into git.
@@ -33,6 +35,10 @@ Gem::Specification.new do |spec|
33
35
  f.match(%r{^(test|spec|features)/})
34
36
  end
35
37
  end
38
+
39
+ # spec.files.each do |file|
40
+ # puts file
41
+ # end
36
42
  spec.bindir = 'exe'
37
43
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
38
44
  spec.require_paths = ['lib']
@@ -41,10 +47,10 @@ Gem::Specification.new do |spec|
41
47
  spec.rdoc_options += [
42
48
  '--title', 'handlebars-helpers by appydave.com',
43
49
  '--main', 'README.md',
44
- '--files', 'STORIES.MD USAGE.MD'
50
+ '--files STORIES.MD USAGE.MD'
45
51
  ]
46
52
 
47
53
  # spec.add_dependency 'tty-box', '~> 0.5.0'
48
- spec.add_dependency 'activesupport'
49
- spec.add_dependency 'handlebars'
54
+ spec.add_dependency 'activesupport' , '~> 6'
55
+ spec.add_dependency 'handlebars' , '~> 0.8.0'
50
56
  end
@@ -3,6 +3,8 @@
3
3
  require 'handlebars/helpers/version'
4
4
  require 'handlebars/helpers/template'
5
5
  require 'handlebars/helpers/register_helpers'
6
+ # ruby docs is not showing all classes because
7
+ # this gem dynamically loads the classes for performance reasons
6
8
 
7
9
  module Handlebars
8
10
  module Helpers
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ # reference: https://github.com/rails/rails/blob/master/activesupport/lib/active_support/inflector/methods.rb
4
+ require 'active_support/core_ext/string'
5
+
6
+ require 'handlebars/helpers/base_safe_string_helper'
7
+
8
+ module Handlebars
9
+ module Helpers
10
+ # Miscellaneous handling routines
11
+ module Misc
12
+ # Json will take handlebars object and write it out as JSON
13
+ class Json < Handlebars::Helpers::BaseSafeStringHelper
14
+ # Parse will take a ruby or handlebars object and write it out as JSON
15
+ #
16
+ # @example
17
+ #
18
+ # puts Json.new.parse({david: "was here", why: ['reason1', 'reason2', 'reason3']})
19
+ #
20
+ # { "david": "was here" }
21
+ #
22
+ # @param [Object] value - object to be converted to JSON string
23
+ # @return [String] value as JSON string
24
+ def parse(value)
25
+ value = '' if value.nil?
26
+
27
+ value = parse_json(value).to_json if value.is_a?(Hash) || value.is_a?(OpenStruct) || value.is_a?(V8::Object) || value.is_a?(V8::Array)
28
+
29
+ value
30
+ end
31
+
32
+ def handlebars_helper
33
+ proc do |_context, value|
34
+ # Handle optional: value
35
+ # value = nil if value.is_a?(V8::Object)
36
+ wrapper(parse(value))
37
+ end
38
+ end
39
+
40
+ private
41
+
42
+ # This needs to be in a data_helper
43
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Style/HashEachMethods
44
+ def parse_json(value, hash = {})
45
+ return value.map { |item| parse_json(item) } if value.is_a?(V8::Array)
46
+
47
+ return struct_to_hash(value) if value.is_a?(OpenStruct)
48
+
49
+ return value unless value.is_a?(V8::Object)
50
+
51
+ value.keys.each do |key|
52
+ hash[key] = case value[key]
53
+ when V8::Object
54
+ parse_json(value[key])
55
+ when V8::Array
56
+ value[key].map do |item|
57
+ case item
58
+ when V8::Object, V8::Array
59
+ parse_json(item)
60
+ when String
61
+ item
62
+ else
63
+ item.values
64
+ end
65
+ end
66
+ else
67
+ value[key]
68
+ end
69
+ end
70
+
71
+ hash
72
+ end
73
+ # rubocop:enable Metrics/PerceivedComplexity, Style/HashEachMethods
74
+
75
+ # Needs to move into a GEM and make sure I have consistency
76
+ def struct_to_hash(data)
77
+ # No test yet
78
+ if data.is_a?(Array)
79
+ return data.map { |v| v.is_a?(OpenStruct) ? struct_to_hash(v) : v }
80
+ end
81
+
82
+ data.each_pair.with_object({}) do |(key, value), hash|
83
+ case value
84
+ when OpenStruct
85
+ hash[key] = struct_to_hash(value)
86
+ when Array
87
+ # No test yet
88
+ values = value.map { |v| v.is_a?(OpenStruct) ? struct_to_hash(v) : v }
89
+ hash[key] = values
90
+ else
91
+ hash[key] = value
92
+ end
93
+ end
94
+ end
95
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Handlebars
4
+ module Helpers
5
+ HANDLER_COUNT = 42
6
+
7
+ CATEGORY_COUNT = 5
8
+ end
9
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Handlebars
4
4
  module Helpers
5
- VERSION = '0.0.71'
5
+ VERSION = '0.0.77'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,45 +1,44 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: handlebars-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.71
4
+ version: 0.0.77
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-14 00:00:00.000000000 Z
11
+ date: 2021-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: handlebars
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.8.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
41
- description: " Handlebars Helpers provides (Nx) handlebars helpers across (Ny)
42
- categories\n"
40
+ version: 0.8.0
41
+ description: Handlebars Helpers provides (42) handlebars helpers across (5) categories
43
42
  email:
44
43
  - david@ideasmen.com.au
45
44
  executables: []
@@ -96,9 +95,11 @@ files:
96
95
  - lib/handlebars/helpers/inflection/pluralize.rb
97
96
  - lib/handlebars/helpers/inflection/pluralize_by_number.rb
98
97
  - lib/handlebars/helpers/inflection/singularize.rb
98
+ - lib/handlebars/helpers/misc/json.rb
99
99
  - lib/handlebars/helpers/misc/noop.rb
100
100
  - lib/handlebars/helpers/misc/safe.rb
101
101
  - lib/handlebars/helpers/register_helpers.rb
102
+ - lib/handlebars/helpers/statistics.rb
102
103
  - lib/handlebars/helpers/string_formatting/append_if.rb
103
104
  - lib/handlebars/helpers/string_formatting/back_slash.rb
104
105
  - lib/handlebars/helpers/string_formatting/camel.rb
@@ -132,14 +133,14 @@ metadata:
132
133
  homepage_uri: http://appydave.com/gems/handlebars-helpers
133
134
  source_code_uri: https://github.com/klueless-io/handlebars-helpers
134
135
  changelog_uri: https://github.com/klueless-io/handlebars-helpers/commits/master
136
+ documentation_uri: https://rubydoc.info/github/klueless-io/handlebars-helpers/master
135
137
  post_install_message:
136
138
  rdoc_options:
137
139
  - "--title"
138
140
  - handlebars-helpers by appydave.com
139
141
  - "--main"
140
142
  - README.md
141
- - "--files"
142
- - STORIES.MD USAGE.MD
143
+ - "--files STORIES.MD USAGE.MD"
143
144
  require_paths:
144
145
  - lib
145
146
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -156,5 +157,5 @@ requirements: []
156
157
  rubygems_version: 3.2.7
157
158
  signing_key:
158
159
  specification_version: 4
159
- summary: Handlebars Helpers provides (Nx) handlebars helpers across (Ny) categories
160
+ summary: Handlebars Helpers provides (42) handlebars helpers across (5) categories
160
161
  test_files: []