handlebars-helpers 0.0.5 → 0.0.73

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +2 -3
  3. data/.gitignore +1 -0
  4. data/.handlebars_helpers.json +956 -0
  5. data/.handlebars_string_formatters.json +137 -0
  6. data/.rubocop.yml +4 -2
  7. data/.vscode/settings.json +6 -0
  8. data/Gemfile +3 -0
  9. data/README.md +31 -3
  10. data/Rakefile +1 -0
  11. data/STORIES.md +55 -7
  12. data/USAGE.md +1 -1
  13. data/bin/console +1 -1
  14. data/handlebars-helpers.gemspec +10 -1
  15. data/lib/handlebars/helpers.rb +2 -0
  16. data/lib/handlebars/helpers/base_helper.rb +36 -0
  17. data/lib/handlebars/helpers/base_safe_string_helper.rb +17 -0
  18. data/lib/handlebars/helpers/code_ruby/classify.rb +40 -0
  19. data/lib/handlebars/helpers/code_ruby/deconstantize.rb +48 -0
  20. data/lib/handlebars/helpers/code_ruby/demodulize.rb +58 -0
  21. data/lib/handlebars/helpers/code_ruby/foreign_key.rb +49 -0
  22. data/lib/handlebars/helpers/code_ruby/tableize.rb +35 -0
  23. data/lib/handlebars/helpers/comparison/and.rb +44 -0
  24. data/lib/handlebars/helpers/comparison/default.rb +66 -0
  25. data/lib/handlebars/helpers/comparison/eq.rb +35 -0
  26. data/lib/handlebars/helpers/comparison/gt.rb +35 -0
  27. data/lib/handlebars/helpers/comparison/gte.rb +43 -0
  28. data/lib/handlebars/helpers/comparison/lt.rb +35 -0
  29. data/lib/handlebars/helpers/comparison/lte.rb +43 -0
  30. data/lib/handlebars/helpers/comparison/ne.rb +35 -0
  31. data/lib/handlebars/helpers/comparison/or.rb +56 -0
  32. data/lib/handlebars/helpers/configuration.rb +72 -0
  33. data/lib/handlebars/helpers/inflection/ordinal.rb +58 -0
  34. data/lib/handlebars/helpers/inflection/ordinalize.rb +59 -0
  35. data/lib/handlebars/helpers/inflection/pluralize.rb +36 -0
  36. data/lib/handlebars/helpers/inflection/pluralize_by_number.rb +60 -0
  37. data/lib/handlebars/helpers/inflection/singularize.rb +35 -0
  38. data/lib/handlebars/helpers/misc/noop.rb +36 -0
  39. data/lib/handlebars/helpers/misc/safe.rb +37 -0
  40. data/lib/handlebars/helpers/register_helpers.rb +73 -0
  41. data/lib/handlebars/helpers/string_formatting/append_if.rb +42 -0
  42. data/lib/handlebars/helpers/string_formatting/back_slash.rb +33 -0
  43. data/lib/handlebars/helpers/string_formatting/camel.rb +29 -0
  44. data/lib/handlebars/helpers/string_formatting/constantize.rb +29 -0
  45. data/lib/handlebars/helpers/string_formatting/dasherize.rb +33 -0
  46. data/lib/handlebars/helpers/string_formatting/dotirize.rb +33 -0
  47. data/lib/handlebars/helpers/string_formatting/double_colon.rb +33 -0
  48. data/lib/handlebars/helpers/string_formatting/downcase.rb +31 -0
  49. data/lib/handlebars/helpers/string_formatting/format_as.rb +57 -0
  50. data/lib/handlebars/helpers/string_formatting/humanize.rb +39 -0
  51. data/lib/handlebars/helpers/string_formatting/lamel.rb +29 -0
  52. data/lib/handlebars/helpers/string_formatting/padl.rb +58 -0
  53. data/lib/handlebars/helpers/string_formatting/padr.rb +59 -0
  54. data/lib/handlebars/helpers/string_formatting/pluserize.rb +29 -0
  55. data/lib/handlebars/helpers/string_formatting/prepend_if.rb +42 -0
  56. data/lib/handlebars/helpers/string_formatting/singularize.rb +35 -0
  57. data/lib/handlebars/helpers/string_formatting/slash.rb +33 -0
  58. data/lib/handlebars/helpers/string_formatting/snake.rb +33 -0
  59. data/lib/handlebars/helpers/string_formatting/string.js +511 -0
  60. data/lib/handlebars/helpers/string_formatting/surround.rb +49 -0
  61. data/lib/handlebars/helpers/string_formatting/surround_if.rb +43 -0
  62. data/lib/handlebars/helpers/string_formatting/titleize.rb +39 -0
  63. data/lib/handlebars/helpers/string_formatting/upcase.rb +31 -0
  64. data/lib/handlebars/helpers/string_tokenizer.rb +43 -0
  65. data/lib/handlebars/helpers/template.rb +68 -0
  66. data/lib/handlebars/helpers/version.rb +1 -1
  67. metadata +97 -6
@@ -0,0 +1,48 @@
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_helper'
7
+
8
+ module Handlebars
9
+ module Helpers
10
+ # Ruby code handling routines
11
+ module CodeRuby
12
+ # Deconstantize: Removes the rightmost segment from the constant expression in the string.
13
+ class Deconstantize < Handlebars::Helpers::BaseHelper
14
+ # Parse will deconstantize, remove the rightmost segment from the constant expression in the string.
15
+ #
16
+ # @example
17
+ #
18
+ # puts Deconstantize.new.parse('Net::HTTP')
19
+ #
20
+ # Net
21
+ #
22
+ # puts Deconstantize.new.parse('::Net::HTTP')
23
+ #
24
+ # ::Net
25
+ #
26
+ # puts Deconstantize.new.parse('String')
27
+ #
28
+ # ""
29
+ #
30
+ # puts Deconstantize.new.parse('::String')
31
+ #
32
+ # ""
33
+ #
34
+ # @param [String] value - name of the ruby constant expression
35
+ # @return [String] return constant without rightmost segment
36
+ def parse(value)
37
+ return '' if value.nil?
38
+
39
+ value.deconstantize
40
+ end
41
+
42
+ def handlebars_helper
43
+ proc { |_context, value| wrapper(parse(value)) }
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,58 @@
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_helper'
7
+
8
+ module Handlebars
9
+ module Helpers
10
+ # Ruby code handling routines
11
+ module CodeRuby
12
+ # Demodulize: Removes the module part from the expression in the string.
13
+ class Demodulize < Handlebars::Helpers::BaseHelper
14
+ # Parse will demodulize, aka remove the module part from the expression in the string.
15
+ #
16
+ # @example
17
+ #
18
+ # puts Demodulize.new.parse('ActiveSupport::Inflector::Inflections')
19
+ #
20
+ # Inflections
21
+ #
22
+ # @example
23
+ # demodulize('ActiveSupport::Inflector::Inflections') # => "Inflections"
24
+ # demodulize('Inflections') # => "Inflections"
25
+ # demodulize('::Inflections') # => "Inflections"
26
+ # demodulize('') # => ""
27
+ #
28
+ # puts Demodulize.new.parse('Inflections')
29
+ #
30
+ # Inflections
31
+ #
32
+ # @example
33
+ #
34
+ # puts Demodulize.new.parse('::Inflections')
35
+ #
36
+ # Inflections
37
+ #
38
+ # @example
39
+ #
40
+ # puts Demodulize.new.parse('')
41
+ #
42
+ # ""
43
+ #
44
+ # @param [String] value - name of the ruby module and class name separated by ::
45
+ # @return [String] value demodulize, aka class name without module
46
+ def parse(value)
47
+ return '' if value.nil?
48
+
49
+ value.demodulize
50
+ end
51
+
52
+ def handlebars_helper
53
+ proc { |_context, value| wrapper(parse(value)) }
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,49 @@
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_helper'
7
+
8
+ module Handlebars
9
+ module Helpers
10
+ # Ruby code handling routines
11
+ module CodeRuby
12
+ # Foreign Key: Creates a foreign key name from a class name
13
+ # +separate_class_name_and_id_with_underscore+ sets whether
14
+ # the method should put '_' between the name and 'id'.
15
+ class ForeignKey < Handlebars::Helpers::BaseHelper
16
+ # Parse will Creates a foreign key name from a class name
17
+ #
18
+ # @example
19
+ #
20
+ # puts ForeignKey.new.parse('Message')
21
+ #
22
+ # message_id
23
+ #
24
+ # @example
25
+ #
26
+ # puts ForeignKey.new.parse('Message', class_id_underscored: false)
27
+ #
28
+ # messageid
29
+ #
30
+ # @example
31
+ #
32
+ # puts ForeignKey.new.parse('Admin::Post')
33
+ #
34
+ # post_id
35
+ #
36
+ # @param [String] class_name - name of class
37
+ # @param [Boolean] class_id_underscored: - optional named value (defaults to true) - is the class and ID to be separated by underscore?
38
+ # @return [String] value converted to separate_class_name_and_id_with_underscore
39
+ def parse(class_name, class_id_underscored: true)
40
+ class_name.foreign_key(class_id_underscored)
41
+ end
42
+
43
+ def handlebars_helper
44
+ proc { |_context, class_name, class_id_underscored| wrapper(parse(class_name, class_id_underscored: class_id_underscored)) }
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,35 @@
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_helper'
7
+
8
+ module Handlebars
9
+ module Helpers
10
+ # Ruby code handling routines
11
+ module CodeRuby
12
+ # Tableize: Creates the name of a table like Rails does when converting models to table names
13
+ class Tableize < Handlebars::Helpers::BaseHelper
14
+ # Parse will creates the name of a table like Rails does when converting models to table names
15
+ #
16
+ # @example
17
+ #
18
+ # puts Tableize.new.parse('product category')
19
+ #
20
+ # product_categories
21
+ #
22
+ # @param [String] value - name of the table
23
+ # @return [String] value converted to table case with pluralization
24
+ def parse(value)
25
+ # tokenizer.parse(value, separator: '_', forced_separator: true).classify
26
+ tokenizer.parse(value).tableize
27
+ end
28
+
29
+ def handlebars_helper
30
+ proc { |_context, value| wrapper(parse(value)) }
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,44 @@
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_helper'
7
+
8
+ module Handlebars
9
+ module Helpers
10
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
11
+ module Comparison
12
+ # And: Block helper that renders a block if **all of** the given values are truthy. If an inverse block is specified it will be rendered when falsy.
13
+ class And < Handlebars::Helpers::BaseHelper
14
+ # Parse will And: Block helper that renders a block if **all of** the given values are truthy. If an inverse block is specified it will be rendered when falsy.
15
+ #
16
+ # @example
17
+ #
18
+ # {{#if (and p1 p2 p3 p4 p5)}}
19
+ # found
20
+ # {{/if}}
21
+ #
22
+ # @example
23
+ #
24
+ # @example
25
+ # {{#if (and name age)}}
26
+ # {{name}}-{{age}}
27
+ # {{else}}
28
+ # no name or age
29
+ # {{/if}}
30
+ #
31
+ # @param values list of values (via *splat) to be checked via AND condition
32
+ # @return [String] return block when every value is truthy
33
+ def parse(values)
34
+ values.all? { |value| value }
35
+ end
36
+
37
+ def handlebars_helper
38
+ # Exclude last paramater which is the context V8::Object
39
+ proc { |_context, *values| wrapper(parse(values[0..-2])) }
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,66 @@
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
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
11
+ module Comparison
12
+ # Default: Returns the first value that is not nil or undefined, otherwise the 'default' value is returned.
13
+ class Default < Handlebars::Helpers::BaseSafeStringHelper
14
+ # Parse will Default: Returns the first value that is not nil or undefined, otherwise the 'default' value is returned.
15
+ #
16
+ # @example
17
+ #
18
+ # emotion = nil
19
+ # puts Default.new.parse(emotion, 'happy')
20
+ #
21
+ # happy
22
+ #
23
+ # @example
24
+ #
25
+ # emotion = 'sad'
26
+ # puts Default.new.parse(emotion, 'happy')
27
+ #
28
+ # sad
29
+ #
30
+ # @example
31
+ #
32
+ # david = nil
33
+ # lisa = nil
34
+ # ben = nil
35
+ # puts Default.new.parse(david, lisa, ben, 'happy')
36
+ #
37
+ # happy
38
+ #
39
+ # @example
40
+ #
41
+ # david = nil
42
+ # lisa = sad
43
+ # ben = mad
44
+ # puts Default.new.parse(david, lisa, ben, 'happy')
45
+ #
46
+ # sad
47
+ #
48
+ # @param [Object] *values - one or more paramaters that may or may not contain nil
49
+ # @param [String] default_value - the last paramater will be the default value
50
+ # @return [String] value or default value
51
+ def parse(values)
52
+ default_value = values[-1]
53
+
54
+ find_value = values[0..-2].find { |value| !value.nil? }
55
+
56
+ find_value || default_value
57
+ end
58
+
59
+ def handlebars_helper
60
+ # Exclude last paramater which is the context V8::Object
61
+ proc { |_context, *values| wrapper(parse(values[0..-2])) }
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,35 @@
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_helper'
7
+
8
+ module Handlebars
9
+ module Helpers
10
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
11
+ module Comparison
12
+ # Eq: Block helper that renders a block if `a` is **equal to** `b`. If an inverse block is specified it will be rendered when falsy.
13
+ class Eq < Handlebars::Helpers::BaseHelper
14
+ # Parse will Eq: Block helper that renders a block if `a` is **equal to** `b`. If an inverse block is specified it will be rendered when falsy.
15
+ #
16
+ # @example
17
+ #
18
+ # puts Eq.new.parse('aaa', 'aaa')
19
+ #
20
+ # Truthy
21
+ #
22
+ # @param [String] lhs - left hand side value
23
+ # @param [String] rhs - right hand side value
24
+ # @return [String] truthy value if left hand side equals right hand side
25
+ def parse(lhs, rhs)
26
+ lhs == rhs
27
+ end
28
+
29
+ def handlebars_helper
30
+ proc { |_context, lhs, rhs| wrapper(parse(lhs, rhs)) }
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,35 @@
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_helper'
7
+
8
+ module Handlebars
9
+ module Helpers
10
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
11
+ module Comparison
12
+ # Gt: (greater than) Block helper that renders a block if `a` is **greater than** `b`. If an inverse block is specified it will be rendered when falsy.
13
+ class Gt < Handlebars::Helpers::BaseHelper
14
+ # Parse will Gt: (greater than) Block helper that renders a block if `a` is **greater than** `b`. If an inverse block is specified it will be rendered when falsy.
15
+ #
16
+ # @example
17
+ #
18
+ # puts Gt.new.parse(2, 1)
19
+ #
20
+ # Truthy
21
+ #
22
+ # @param [String] lhs - left hand side value
23
+ # @param [String] rhs - right hand side value
24
+ # @return [String] truthy value if left hand side GREATER THAN right hand side
25
+ def parse(lhs, rhs)
26
+ lhs > rhs
27
+ end
28
+
29
+ def handlebars_helper
30
+ proc { |_context, lhs, rhs| wrapper(parse(lhs, rhs)) }
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,43 @@
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_helper'
7
+
8
+ module Handlebars
9
+ module Helpers
10
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
11
+ module Comparison
12
+ # Gte: (greater than or equal to) Block helper that renders a block if `a` is **greater than** `b`. If an inverse block is specified it will be rendered when falsy.
13
+ class Gte < Handlebars::Helpers::BaseHelper
14
+ # Parse will Gte: (greater than or equal to) Block helper that renders a block if `a` is **greater than** `b`. If an inverse block is specified it will be rendered when falsy.
15
+ #
16
+ # @example
17
+ #
18
+ # puts Gte.new.parse(1, 2)
19
+ #
20
+ # Falsey
21
+ #
22
+ # puts Gte.new.parse(1, 1)
23
+ #
24
+ # Truthy
25
+ #
26
+ # puts Gte.new.parse(2, 1)
27
+ #
28
+ # Truthy
29
+ #
30
+ # @param [String] lhs - left hand side value
31
+ # @param [String] rhs - right hand side value
32
+ # @return [String] truthy value if left hand side GREATER THAN or EQUAL TO right hand side
33
+ def parse(lhs, rhs)
34
+ lhs >= rhs
35
+ end
36
+
37
+ def handlebars_helper
38
+ proc { |_context, lhs, rhs| wrapper(parse(lhs, rhs)) }
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,35 @@
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_helper'
7
+
8
+ module Handlebars
9
+ module Helpers
10
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
11
+ module Comparison
12
+ # Lt: (less than) Block helper that renders a block if `a` is **less than** `b`. If an inverse block is specified it will be rendered when falsy.
13
+ class Lt < Handlebars::Helpers::BaseHelper
14
+ # Parse will Lt: (less than) Block helper that renders a block if `a` is **less than** `b`. If an inverse block is specified it will be rendered when falsy.
15
+ #
16
+ # @example
17
+ #
18
+ # puts Lt.new.parse(1, 2)
19
+ #
20
+ # Truthy
21
+ #
22
+ # @param [String] lhs - left hand side value
23
+ # @param [String] rhs - right hand side value
24
+ # @return [String] truthy value if left hand side LESS THAN right hand side
25
+ def parse(lhs, rhs)
26
+ lhs < rhs
27
+ end
28
+
29
+ def handlebars_helper
30
+ proc { |_context, lhs, rhs| wrapper(parse(lhs, rhs)) }
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end