cmdlet 0.0.7 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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