cmdlet 0.0.7 → 0.2.1

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.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/.templates/cmdlet.rb +26 -0
  3. data/.builders/.templates/{command_spec.rb → cmdlet_spec.rb} +4 -4
  4. data/.builders/.templates/require_all_cmdlets.rb +5 -0
  5. data/.builders/_.rb +7 -1
  6. data/.builders/boot.rb +2 -0
  7. data/.builders/data/categories.json +2 -10
  8. data/.builders/data/cmdlets/array.json +121 -0
  9. data/.builders/data/cmdlets/case.json +313 -0
  10. data/.builders/data/cmdlets/comparison.json +245 -0
  11. data/.builders/data/cmdlets/inflection.json +129 -0
  12. data/.builders/director/category_builder.rb +26 -0
  13. data/.builders/director/category_dao.rb +38 -0
  14. data/.builders/director/category_director.rb +24 -10
  15. data/.builders/director/cmdlet_builder.rb +27 -34
  16. data/.builders/director/cmdlet_child.rb +16 -44
  17. data/.builders/director/cmdlet_dao.rb +29 -0
  18. data/.builders/director/cmdlet_director.rb +37 -13
  19. data/.builders/director/dao.rb +16 -0
  20. data/.builders/documents/commands.rb +15 -16
  21. data/.builders/documents/use_cases.rb +32 -34
  22. data/.builders/documents/x_functions.rb +7 -10
  23. data/.builders/generators/01-bootstrap.rb +112 -112
  24. data/.builders/generators/20-categories.rb +16 -0
  25. data/.builders/generators/30-commands-bak.rb +53 -0
  26. data/.builders/generators/cmdlets/array.rb +71 -0
  27. data/.builders/generators/cmdlets/case.rb +184 -0
  28. data/.builders/generators/cmdlets/comparison.rb +126 -0
  29. data/.builders/generators/cmdlets/inflection.rb +93 -0
  30. data/CHANGELOG.md +37 -0
  31. data/Guardfile +1 -1
  32. data/lib/cmdlet/_.rb +33 -0
  33. data/lib/cmdlet/array/join.rb +8 -10
  34. data/lib/cmdlet/array/join_post.rb +22 -0
  35. data/lib/cmdlet/array/join_pre.rb +22 -0
  36. data/lib/cmdlet/base_cmdlet.rb +17 -0
  37. data/lib/cmdlet/case/back_slash.rb +16 -0
  38. data/lib/cmdlet/case/camel.rb +16 -0
  39. data/lib/cmdlet/case/constant.rb +16 -0
  40. data/lib/cmdlet/case/dash.rb +16 -0
  41. data/lib/cmdlet/case/dot.rb +16 -0
  42. data/lib/cmdlet/case/double_colon.rb +16 -0
  43. data/lib/cmdlet/case/human.rb +20 -0
  44. data/lib/cmdlet/case/lamel.rb +16 -0
  45. data/lib/cmdlet/case/lower.rb +18 -0
  46. data/lib/cmdlet/case/sentence.rb +20 -0
  47. data/lib/cmdlet/case/slash.rb +16 -0
  48. data/lib/cmdlet/case/snake.rb +16 -0
  49. data/lib/cmdlet/case/title.rb +21 -0
  50. data/lib/cmdlet/case/upper.rb +18 -0
  51. data/lib/cmdlet/comparison/and.rb +16 -0
  52. data/lib/cmdlet/comparison/default.rb +20 -0
  53. data/lib/cmdlet/comparison/eq.rb +20 -0
  54. data/lib/cmdlet/comparison/gt.rb +17 -0
  55. data/lib/cmdlet/comparison/gte.rb +17 -0
  56. data/lib/cmdlet/comparison/lt.rb +17 -0
  57. data/lib/cmdlet/comparison/lte.rb +17 -0
  58. data/lib/cmdlet/comparison/ne.rb +20 -0
  59. data/lib/cmdlet/comparison/or.rb +16 -0
  60. data/lib/cmdlet/inflection/ordinal.rb +20 -0
  61. data/lib/cmdlet/inflection/ordinalize.rb +20 -0
  62. data/lib/cmdlet/inflection/pluralize.rb +20 -0
  63. data/lib/cmdlet/inflection/pluralize_by_number.rb +28 -0
  64. data/lib/cmdlet/inflection/singularize.rb +20 -0
  65. data/lib/cmdlet/version.rb +1 -1
  66. data/lib/cmdlet.rb +5 -0
  67. data/package-lock.json +2 -2
  68. data/package.json +1 -1
  69. metadata +51 -9
  70. data/.builders/.templates/all_commands.rb +0 -5
  71. data/.builders/.templates/command.rb +0 -26
  72. data/.builders/documents/categories.rb +0 -24
  73. data/.builders/documents/cmdlets.rb +0 -30
  74. data/.builders/generators/20-commands.rb +0 -54
  75. data/.builders/generators/25-categories.rb +0 -20
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ KManager.action :commands_bak do
4
+ action do
5
+ puts commands.first.function_description
6
+ # Ruby Gem Bootstrap
7
+ director = KDirector::Dsls::BasicDsl
8
+ .init(k_builder,
9
+ template_base_folder: '',
10
+ on_exist: :skip, # %i[skip write compare]
11
+ on_action: :queue # %i[queue execute]
12
+ )
13
+ .blueprint(
14
+ active: true,
15
+ name: :build_commands,
16
+ description: 'Build Commandlets',
17
+ on_exist: :write
18
+ ) do
19
+ cd(:lib)
20
+
21
+ # builder
22
+ # .add_file('FUNCTIONS.md',
23
+ # template_file: 'FUNCTIONS.md',
24
+ # categories: categories.sort_by { |r| r.name },
25
+ # functions: functions.sort_by { |r| [r.category, r.name] },
26
+ # on_exist: :write)
27
+
28
+ add('all_commands.rb',
29
+ template_file: 'all_commands.rb',
30
+ commands: commands.sort_by { |r| [r.category, r.name] },
31
+ on_exist: :write)
32
+
33
+ cmdlets.each do |cmdlet|
34
+ add("#{cmdlet.category}/#{cmdlet.name}.rb",
35
+ cmdlet: cmdlet,
36
+ template_file: 'command.rb',
37
+ on_exist: :write)
38
+ end
39
+ end
40
+
41
+ director.play_actions
42
+ # director.builder.logit
43
+ end
44
+ end
45
+
46
+ KManager.opts.app_name = 'commands'
47
+ KManager.opts.sleep = 2
48
+ KManager.opts.reboot_on_kill = 0
49
+ KManager.opts.reboot_sleep = 4
50
+ KManager.opts.exception_style = :short
51
+ KManager.opts.show.time_taken = true
52
+ KManager.opts.show.finished = true
53
+ KManager.opts.show.finished_message = 'FINISHED :)'
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ KManager.action :array_commands do
4
+ action do
5
+ CmdletDirector
6
+ .init(k_builder, category: :array)
7
+ .cmdlet do
8
+ name :join
9
+ description 'join an array of values with separator as a string'
10
+ result 'new String formed by joining the array elements with seperator'
11
+
12
+ parameter :values, 'array of values to join', param_type: 'String|Int'
13
+ parameter :separator, 'separator between values, defaults to comma', default: "','"
14
+
15
+ ruby <<-RUBY
16
+ return false if values.nil? || values.length == 0
17
+ values = values.reject(&:blank?)
18
+ return '' if values.length.zero?
19
+
20
+ values.join(separator)
21
+ RUBY
22
+ end
23
+ .cmdlet do
24
+ name :join_pre
25
+ description 'join an array of values with separator as a string and using the separator at the beginning of string'
26
+
27
+ parameter :values, 'array of values to join', param_type: 'String|Int'
28
+ parameter :separator, 'separator between values, defaults to comma', default: "','"
29
+
30
+ ruby <<-'RUBY'
31
+ return '' if values.nil? || !values.is_a?(::Array)
32
+ values = values.reject(&:blank?)
33
+ return '' if values.length.zero?
34
+
35
+ "#{separator}#{values.join(separator)}"
36
+ RUBY
37
+ end
38
+ .cmdlet do
39
+ name :join_pre
40
+ description 'join an array of values with separator as a string and using the separator at the beginning of string'
41
+
42
+ parameter :values, 'array of values to join', param_type: 'String|Int'
43
+ parameter :separator, 'separator between values, defaults to comma', default: "','"
44
+
45
+ ruby <<-'RUBY'
46
+ return '' if values.nil? || !values.is_a?(::Array)
47
+ values = values.reject(&:blank?)
48
+ return '' if values.length.zero?
49
+
50
+ "#{separator}#{values.join(separator)}"
51
+ RUBY
52
+ end
53
+ .cmdlet do
54
+ name :join_post
55
+ description 'join an array of values with separator as a string and using the separator at the end of string'
56
+
57
+ parameter :values, 'array of values to join', param_type: 'String|Int'
58
+ parameter :separator, 'separator between values, defaults to comma', default: "','"
59
+
60
+ ruby <<-'RUBY'
61
+ return '' if values.nil? || !values.is_a?(::Array)
62
+ values = values.reject(&:blank?)
63
+ return '' if values.length.zero?
64
+
65
+ "#{values.join(separator)}#{separator}"
66
+ RUBY
67
+ end
68
+ .generate
69
+ .debug
70
+ end
71
+ end
@@ -0,0 +1,184 @@
1
+ # frozen_string_literal: true
2
+
3
+ KManager.action :case_commands do
4
+ action do
5
+ CmdletDirector
6
+ .init(k_builder, category: :case)
7
+ .cmdlet do
8
+ name :back_slash
9
+ description 'Convert to back slash notation'
10
+ result 'value converted to back_slash case'
11
+
12
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
13
+
14
+ ruby <<-'RUBY'
15
+ tokenizer.parse(value, preserve_case: true, separator: '\\')
16
+ RUBY
17
+ end
18
+ .cmdlet do
19
+ name :camel
20
+ description "Camel case the characters in the given 'string'"
21
+ result 'value converted to camel case'
22
+
23
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
24
+
25
+ ruby <<-'RUBY'
26
+ tokenizer.parse(value).underscore.camelize
27
+ RUBY
28
+ end
29
+ .cmdlet do
30
+ name :constant
31
+ description "Constant case the characters in the given 'string'"
32
+ result 'value converted to constant case'
33
+
34
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
35
+
36
+ ruby <<-'RUBY'
37
+ tokenizer.parse(value, separator: '_').upcase
38
+ RUBY
39
+ end
40
+ .cmdlet do
41
+ name :dash
42
+ description "Dash case the characters in the given 'string'"
43
+ result 'value converted to dash case'
44
+
45
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
46
+
47
+ ruby <<-'RUBY'
48
+ tokenizer.parse(value)
49
+ RUBY
50
+ end
51
+ .cmdlet do
52
+ name :dot
53
+ description "Dot case the characters in the given 'string'"
54
+ result 'value converted to dot case'
55
+
56
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
57
+
58
+ ruby <<-'RUBY'
59
+ tokenizer.parse(value, separator: '.')
60
+ RUBY
61
+ end
62
+ .cmdlet do
63
+ name :double_colon
64
+ description "Double colon case the characters in the given 'string'"
65
+ result 'value converted to double_colon case'
66
+
67
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
68
+
69
+ ruby <<-'RUBY'
70
+ tokenizer.parse(value, preserve_case: true, separator: '::')
71
+ RUBY
72
+ end
73
+ .cmdlet do
74
+ name :human
75
+ description "Human case the characters in the given 'string'"
76
+ result 'value converted to human case'
77
+
78
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
79
+
80
+ ruby <<-'RUBY'
81
+ tokenizer.parse(value,
82
+ separator: ' ',
83
+ preserve_case: true,
84
+ compress_prefix_numerals: false,
85
+ compress_suffix_numerals: false).humanize
86
+ RUBY
87
+ end
88
+ .cmdlet do
89
+ name :lamel
90
+ description "Lower camel case the characters in the given 'string'"
91
+ result 'value converted to lower camel case'
92
+
93
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
94
+
95
+ ruby <<-'RUBY'
96
+ tokenizer.parse(value, separator: '_').camelize(:lower)
97
+ RUBY
98
+ end
99
+ .cmdlet do
100
+ name :lower
101
+ description "Lower case the characters in the given 'string'"
102
+ result 'value converted to lower case'
103
+
104
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
105
+
106
+ ruby <<-'RUBY'
107
+ return '' if value.nil?
108
+
109
+ value.downcase
110
+ RUBY
111
+ end
112
+ .cmdlet do
113
+ name :sentence
114
+ description "Sentence case the characters in the given 'string'"
115
+ result 'value converted to sentence case'
116
+
117
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
118
+
119
+ ruby <<-'RUBY'
120
+ tokenizer.parse(value,
121
+ separator: ' ',
122
+ preserve_case: true,
123
+ compress_prefix_numerals: false,
124
+ compress_suffix_numerals: false).titleize
125
+ RUBY
126
+ end
127
+ .cmdlet do
128
+ name :slash
129
+ description "Slash case the characters in the given 'string'"
130
+ result 'value converted to slash case'
131
+
132
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
133
+
134
+ ruby <<-'RUBY'
135
+ tokenizer.parse(value, preserve_case: true, separator: '/')
136
+ RUBY
137
+ end
138
+ .cmdlet do
139
+ name :snake
140
+ description "Snake case the characters in the given 'string'"
141
+ result 'value converted to snake case'
142
+
143
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
144
+
145
+ ruby <<-'RUBY'
146
+ tokenizer.parse(value, separator: '_', forced_separator: true)
147
+ RUBY
148
+ end
149
+ .cmdlet do
150
+ name :title
151
+ description "Title case the characters in the given 'string'"
152
+ result 'value converted to title case'
153
+
154
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
155
+
156
+ ruby <<-'RUBY'
157
+ tokenizer.parse(value,
158
+ separator: ' ',
159
+ preserve_case: true,
160
+ compress_prefix_numerals: false,
161
+ compress_suffix_numerals: false)
162
+ .titleize
163
+ RUBY
164
+ end
165
+ .cmdlet do
166
+ name :upper
167
+ description "Upper case the characters in the given 'string'"
168
+ result 'value converted to upper case'
169
+
170
+ parameter :value, 'value - to be converted', param_type: 'String|Int'
171
+
172
+ ruby <<-'RUBY'
173
+ return '' if value.nil?
174
+
175
+ value.upcase
176
+ RUBY
177
+ end
178
+ .generate
179
+ .debug
180
+ end
181
+ end
182
+
183
+ # format_as
184
+ # upper
@@ -0,0 +1,126 @@
1
+ # frozen_string_literal: true
2
+
3
+ KManager.action :comparison_commands do
4
+ action do
5
+ CmdletDirector
6
+ .init(k_builder, category: :comparison)
7
+ .cmdlet do
8
+ name :and
9
+ description 'Return true if **all of** the given values are truthy.'
10
+ result 'return true when every value is truthy'
11
+
12
+ parameter :values, 'list of values (via *splat) to be checked via AND condition', splat: '*', param_type: 'Object'
13
+
14
+ ruby <<-RUBY
15
+ values.all? { |value| value }
16
+ RUBY
17
+ end
18
+ .cmdlet do
19
+ name :default
20
+ description 'Return true if **all of** the given values are truthy.'
21
+ result 'return true when every value is truthy'
22
+
23
+ parameter :values, 'one or more paramaters that may or may not contain nil', splat: '*', param_type: 'Object'
24
+
25
+ ruby <<-RUBY
26
+ default_value = values[-1]
27
+
28
+ find_value = values[0..-2].find { |value| !value.nil? }
29
+
30
+ find_value || default_value
31
+ RUBY
32
+
33
+ end
34
+ .cmdlet do
35
+ name :eq
36
+ description 'Return true if two values are equal'
37
+ result 'return truthy value if left hand side equals right hand side'
38
+
39
+ parameter :lhs, 'lhs - left hand side value', param_type: 'Object'
40
+ parameter :rhs, 'rhs - right hand side value', param_type: 'Object'
41
+
42
+ ruby <<-RUBY
43
+ lhs = lhs.to_s if lhs.is_a?(Symbol)
44
+ rhs = rhs.to_s if rhs.is_a?(Symbol)
45
+
46
+ lhs == rhs
47
+ RUBY
48
+ end
49
+ .cmdlet do
50
+ name :gt
51
+ description 'Return true if left hand side GREATER THAN right hand side'
52
+ result 'truthy value if left hand side GREATER THAN right hand side'
53
+
54
+ parameter :lhs, 'lhs - left hand side value', param_type: 'Object'
55
+ parameter :rhs, 'rhs - right hand side value', param_type: 'Object'
56
+
57
+ ruby <<-RUBY
58
+ lhs > rhs
59
+ RUBY
60
+ end
61
+ .cmdlet do
62
+ name :gte
63
+ description 'Return true if left hand side GREATER THAN or EQUAL TO right hand side'
64
+ result 'truthy value if left hand side GREATER THAN or EQUAL TO right hand side'
65
+
66
+ parameter :lhs, 'lhs - left hand side value', param_type: 'Object'
67
+ parameter :rhs, 'rhs - right hand side value', param_type: 'Object'
68
+
69
+ ruby <<-RUBY
70
+ lhs >= rhs
71
+ RUBY
72
+ end
73
+ .cmdlet do
74
+ name :lt
75
+ description 'Return true if left hand side LESS THAN right hand side'
76
+ result 'truthy value if left hand side LESS THAN right hand side'
77
+
78
+ parameter :lhs, 'lhs - left hand side value', param_type: 'Object'
79
+ parameter :rhs, 'rhs - right hand side value', param_type: 'Object'
80
+
81
+ ruby <<-RUBY
82
+ lhs < rhs
83
+ RUBY
84
+ end
85
+ .cmdlet do
86
+ name :lte
87
+ description 'Return true if left hand side LESS THAN or EQUAL TO right hand side'
88
+ result 'truthy value if left hand side LESS THAN or EQUAL TO right hand side'
89
+
90
+ parameter :lhs, 'lhs - left hand side value', param_type: 'Object'
91
+ parameter :rhs, 'rhs - right hand side value', param_type: 'Object'
92
+
93
+ ruby <<-RUBY
94
+ lhs <= rhs
95
+ RUBY
96
+ end
97
+ .cmdlet do
98
+ name :ne
99
+ description 'Return true if left hand side is NOT equal to right hand side'
100
+ result 'truthy value if left hand side is NOT equal to right hand side'
101
+
102
+ parameter :lhs, 'lhs - left hand side value', param_type: 'Object'
103
+ parameter :rhs, 'rhs - right hand side value', param_type: 'Object'
104
+
105
+ ruby <<-RUBY
106
+ lhs = lhs.to_s if lhs.is_a?(Symbol)
107
+ rhs = rhs.to_s if rhs.is_a?(Symbol)
108
+
109
+ lhs != rhs
110
+ RUBY
111
+ end
112
+ .cmdlet do
113
+ name :or
114
+ description 'Return true if any value is truthy.'
115
+ result 'return true when first value is truthy'
116
+
117
+ parameter :values, 'list of values (via *splat) to be checked via AND condition', splat: '*', param_type: 'Object'
118
+
119
+ ruby <<-RUBY
120
+ values.any? { |value| value }
121
+ RUBY
122
+ end
123
+ .generate
124
+ .debug
125
+ end
126
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ KManager.action :inflection_commands do
4
+ action do
5
+ CmdletDirector
6
+ .init(k_builder, category: :inflection)
7
+ .cmdlet do
8
+ name :ordinal
9
+ description 'The suffix that should be added to a number to denote the position in an ordered sequence such as 1st, 2nd, 3rd, 4th'
10
+ result 'ordinal suffix that would be required for a number'
11
+
12
+ parameter :value, 'value - numeric value', param_type: 'String|Int'
13
+
14
+ ruby <<-RUBY
15
+ return '' if value.nil?
16
+
17
+ value = value.to_i if value.is_a? String
18
+
19
+ value.ordinal
20
+ RUBY
21
+ end
22
+ .cmdlet do
23
+ name :ordinalize
24
+ description 'Turns a number into an ordinal string used to denote the position in an ordered sequence such as 1st, 2nd, 3rd, 4th.'
25
+ result 'number value turned to 1st, 2nd, 3rd, 4th etc.'
26
+
27
+ parameter :value, 'value - numeric value', param_type: 'Int'
28
+
29
+ ruby <<-RUBY
30
+ return '' if value.nil?
31
+
32
+ value = value.to_i if value.is_a? String
33
+
34
+ value.ordinalize
35
+ RUBY
36
+ end
37
+ .cmdlet do
38
+ name :pluralize
39
+ description 'Returns the plural form of the word in the string'
40
+ result 'value in plural form'
41
+
42
+ parameter :value, 'value - value to pluralize', param_type: 'String'
43
+
44
+ ruby <<-RUBY
45
+ return '' if value.nil?
46
+
47
+ value = value.to_s if value.is_a?(Symbol)
48
+
49
+ value.pluralize
50
+ RUBY
51
+ end
52
+ .cmdlet do
53
+ name :pluralize_by_number
54
+ description 'Returns the plural form of the word based on a count'
55
+ result 'value and number are used to calculate plural/singular form'
56
+
57
+ parameter :value, 'value - value to pluralize', param_type: 'String'
58
+ parameter :count, 'count used to determine pluralization', param_type: 'Int'
59
+ parameter :format, '(Optional) what format should output be. :word, :number_word'
60
+
61
+ ruby <<-'RUBY'
62
+ return '' if value.nil?
63
+
64
+ count = count.to_i if count.is_a? String
65
+ format = :word if format.nil?
66
+
67
+ case format.to_sym
68
+ when :number_word, :number_and_word
69
+ "#{count} #{value.pluralize(count)}"
70
+ else # aka :word
71
+ value.pluralize(count)
72
+ end
73
+ RUBY
74
+ end
75
+ .cmdlet do
76
+ name :singularize
77
+ description 'The reverse of #pluralize, returns the singular form of a word in a string'
78
+ result 'plural value turned to singular value'
79
+
80
+ parameter :value, 'value - value to singularized', param_type: 'String'
81
+
82
+ ruby <<-RUBY
83
+ return '' if value.nil?
84
+
85
+ value = value.to_s if value.is_a?(Symbol)
86
+
87
+ value.singularize
88
+ RUBY
89
+ end
90
+ .generate
91
+ .debug
92
+ end
93
+ end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,40 @@
1
+ # [0.2.0](https://github.com/klueless-io/cmdlet/compare/v0.1.2...v0.2.0) (2022-07-10)
2
+
3
+
4
+ ### Features
5
+
6
+ * add inflection cmdlets ([55bb73f](https://github.com/klueless-io/cmdlet/commit/55bb73fe3420096a1d4edd85d207529507c088db))
7
+
8
+ ## [0.1.2](https://github.com/klueless-io/cmdlet/compare/v0.1.1...v0.1.2) (2022-07-10)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * add comparison :or ([633633d](https://github.com/klueless-io/cmdlet/commit/633633d2a22b98a0de1acf6257feb3603a2f2c39))
14
+ * add comparison :or, :and, :lt, :lte, :gt, :gte, :ne, :eq, :default ([000cb1a](https://github.com/klueless-io/cmdlet/commit/000cb1a3cbd643abcb5dac6828972ec94c9f53a8))
15
+
16
+ ## [0.1.1](https://github.com/klueless-io/cmdlet/compare/v0.1.0...v0.1.1) (2022-07-10)
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * add specs ([80f384f](https://github.com/klueless-io/cmdlet/commit/80f384f9f7cd1c1ea67396bb12d3119c433ea139))
22
+
23
+ # [0.1.0](https://github.com/klueless-io/cmdlet/compare/v0.0.7...v0.1.0) (2022-07-09)
24
+
25
+
26
+ ### Features
27
+
28
+ * generate commandlets ([a61948e](https://github.com/klueless-io/cmdlet/commit/a61948e285d488d3aab68a9ef3bd0c136b87170f))
29
+
30
+ ## [0.0.7](https://github.com/klueless-io/cmdlet/compare/v0.0.6...v0.0.7) (2022-07-09)
31
+
32
+
33
+ ### Bug Fixes
34
+
35
+ * add category director ([3b72b72](https://github.com/klueless-io/cmdlet/commit/3b72b72d9f739c9a3711f14a640bb6d527e17140))
36
+ * add category director ([cea0f1a](https://github.com/klueless-io/cmdlet/commit/cea0f1ae37bfbb67d634f18cf1d315a80c1f6082))
37
+
1
38
  ## [0.0.6](https://github.com/klueless-io/cmdlet/compare/v0.0.5...v0.0.6) (2022-07-08)
2
39
 
3
40
 
data/Guardfile CHANGED
@@ -19,7 +19,7 @@ group :green_pass_then_cop, halt_on_fail: true do
19
19
  # Ruby files
20
20
  ruby = dsl.ruby
21
21
  dsl.watch_spec_files_for(ruby.lib_files)
22
- watch(%r{^lib//(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
22
+ watch(%r{^lib//(.+)\.rb$}) { |m| "spec/**/#{m[1]}_spec.rb" }
23
23
  watch(%r{^lib//commands/(.+)\.rb$}) { |m| "spec/unit/commands/#{m[1]}_spec.rb" }
24
24
  end
25
25
 
data/lib/cmdlet/_.rb ADDED
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'array/join'
4
+ require_relative 'array/join_post'
5
+ require_relative 'array/join_pre'
6
+ require_relative 'case/back_slash'
7
+ require_relative 'case/camel'
8
+ require_relative 'case/constant'
9
+ require_relative 'case/dash'
10
+ require_relative 'case/dot'
11
+ require_relative 'case/double_colon'
12
+ require_relative 'case/human'
13
+ require_relative 'case/lamel'
14
+ require_relative 'case/lower'
15
+ require_relative 'case/sentence'
16
+ require_relative 'case/slash'
17
+ require_relative 'case/snake'
18
+ require_relative 'case/title'
19
+ require_relative 'case/upper'
20
+ require_relative 'comparison/and'
21
+ require_relative 'comparison/default'
22
+ require_relative 'comparison/eq'
23
+ require_relative 'comparison/gt'
24
+ require_relative 'comparison/gte'
25
+ require_relative 'comparison/lt'
26
+ require_relative 'comparison/lte'
27
+ require_relative 'comparison/ne'
28
+ require_relative 'comparison/or'
29
+ require_relative 'inflection/ordinal'
30
+ require_relative 'inflection/ordinalize'
31
+ require_relative 'inflection/pluralize'
32
+ require_relative 'inflection/pluralize_by_number'
33
+ require_relative 'inflection/singularize'
@@ -1,22 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # reference: https://github.com/rails/rails/blob/master/activesupport/lib/active_support/inflector/methods.rb
4
-
5
3
  module Cmdlet
6
4
  # Array handling routines, eg. join, join_prefix, join_post
7
5
  module Array
8
6
  # Join: join an array of values with separator as a string
9
- class Join < Funcky::BaseFunction
7
+ class Join < Cmdlet::BaseCmdlet
10
8
  #
11
- # @param [String|Int] value - numeric value
12
- # @return [String] ordinal suffix that would be required for a number
13
- def parse(value)
14
- return '' if value.nil? || !value.is_a?(Array)
9
+ # @param [String|Int] values - array of values to join
10
+ # @param [String] separator - separator between values, defaults to comma
11
+ # @return [String] new String formed by joining the array elements with seperator
12
+ def call(values, separator = ',')
13
+ return false if values.nil? || values.length.zero?
15
14
 
16
- values = value.reject(&:blank?)
17
- return '' if value.length.zero?
15
+ values = values.reject(&:blank?)
16
+ return '' if values.length.zero?
18
17
 
19
- separator = ','
20
18
  values.join(separator)
21
19
  end
22
20
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cmdlet
4
+ # Array handling routines, eg. join, join_prefix, join_post
5
+ module Array
6
+ # JoinPost: join an array of values with separator as a string and using the separator at the end of string
7
+ class JoinPost < Cmdlet::BaseCmdlet
8
+ #
9
+ # @param [String|Int] values - array of values to join
10
+ # @param [String] separator - separator between values, defaults to comma
11
+ # @return [String]
12
+ def call(values, separator = ',')
13
+ return '' if values.nil? || !values.is_a?(::Array)
14
+
15
+ values = values.reject(&:blank?)
16
+ return '' if values.length.zero?
17
+
18
+ "#{values.join(separator)}#{separator}"
19
+ end
20
+ end
21
+ end
22
+ end