cmdlet 0.0.6 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/.templates/FUNCTIONS.MD +19 -0
  3. data/.builders/.templates/cmdlet.rb +26 -0
  4. data/.builders/.templates/cmdlet_spec.rb +22 -0
  5. data/.builders/.templates/require_all_cmdlets.rb +5 -0
  6. data/.builders/_.rb +11 -1
  7. data/.builders/boot.rb +6 -3
  8. data/.builders/data/categories.json +28 -0
  9. data/.builders/data/cmdlets/array.json +121 -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 +39 -0
  15. data/.builders/director/cmdlet_builder.rb +67 -0
  16. data/.builders/director/cmdlet_child.rb +39 -0
  17. data/.builders/director/cmdlet_dao.rb +29 -0
  18. data/.builders/director/cmdlet_director.rb +60 -0
  19. data/.builders/director/dao.rb +16 -0
  20. data/.builders/documents/commands.rb +222 -28
  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/comparison.rb +126 -0
  28. data/.builders/generators/cmdlets/inflection.rb +93 -0
  29. data/CHANGELOG.md +37 -0
  30. data/Guardfile +1 -1
  31. data/lib/cmdlet/_.rb +19 -0
  32. data/lib/cmdlet/all_commands.rb +3 -0
  33. data/lib/cmdlet/array/join.rb +22 -0
  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/comparison/and.rb +16 -0
  38. data/lib/cmdlet/comparison/default.rb +20 -0
  39. data/lib/cmdlet/comparison/eq.rb +20 -0
  40. data/lib/cmdlet/comparison/gt.rb +17 -0
  41. data/lib/cmdlet/comparison/gte.rb +17 -0
  42. data/lib/cmdlet/comparison/lt.rb +17 -0
  43. data/lib/cmdlet/comparison/lte.rb +17 -0
  44. data/lib/cmdlet/comparison/ne.rb +20 -0
  45. data/lib/cmdlet/comparison/or.rb +16 -0
  46. data/lib/cmdlet/inflection/ordinal.rb +20 -0
  47. data/lib/cmdlet/inflection/ordinalize.rb +20 -0
  48. data/lib/cmdlet/inflection/pluralize.rb +20 -0
  49. data/lib/cmdlet/inflection/pluralize_by_number.rb +28 -0
  50. data/lib/cmdlet/inflection/singularize.rb +20 -0
  51. data/lib/cmdlet/version.rb +1 -1
  52. data/lib/cmdlet.rb +5 -0
  53. data/package-lock.json +2 -2
  54. data/package.json +1 -1
  55. metadata +46 -5
  56. data/.builders/documents/_.rb +0 -4
  57. data/.builders/documents/categories.rb +0 -24
  58. data/.builders/documents/functions.rb +0 -226
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CategoryDao
4
+ attr_reader :k_builder
5
+ attr_reader :load_time
6
+ attr_reader :data
7
+
8
+ def initialize(k_builder)
9
+ @k_builder = k_builder
10
+ @load_time = nil
11
+ @data = nil
12
+ end
13
+
14
+ def file_name
15
+ k_builder.target_folders.join(:builder_data, 'categories.json')
16
+ end
17
+
18
+ def reload?
19
+ @load_time.nil? || @load_time < File.mtime(file_name)
20
+ end
21
+
22
+ def find_category(name)
23
+ result = categories.find { |category| category[:name] == name.to_s }
24
+
25
+ raise "Category #{name} not found" if result.nil?
26
+
27
+ result
28
+ end
29
+
30
+ def categories
31
+ if reload?
32
+ @data = JSON.parse(File.read(file_name), symbolize_names: true)
33
+ @categories = data[:categories]
34
+ @load_time = File.mtime(file_name)
35
+ end
36
+ @categories
37
+ end
38
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CategoryDirector < KDirector::Directors::BaseDirector
4
+ defaults(builder_type: CategoryBuilder, on_exist: :write, on_action: :execute)
5
+
6
+ def category(name, description)
7
+ builder.category(name, description)
8
+
9
+ self
10
+ end
11
+
12
+ def generate
13
+ generate_require_all_cmdlets
14
+
15
+ self
16
+ end
17
+
18
+ def save_categories(**opts)
19
+ cd(:builder_data)
20
+ add('categories.json', content: builder.to_json, **opts)
21
+
22
+ self
23
+ end
24
+
25
+ def osave_categories(**opts)
26
+ save_categories(**{ open: true }.merge(opts))
27
+ end
28
+
29
+ private
30
+
31
+ def generate_require_all_cmdlets
32
+ cd(:lib)
33
+ add('_.rb',
34
+ template_file: 'require_all_cmdlets.rb',
35
+ cmdlets: data_access.cmdlet.all_cmdlets)
36
+
37
+ end
38
+
39
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CmdletBuilder < KDirector::Builders::ActionsBuilder
4
+ attr_reader :current_cmdlet
5
+
6
+ def initialize
7
+ super
8
+
9
+ dom[:category_key] = nil
10
+ dom[:cmdlets] = []
11
+ end
12
+
13
+ def category_key
14
+ dom[:category_key]
15
+ end
16
+
17
+ def category_key=(value)
18
+ set(:category_key, value: value)
19
+ end
20
+
21
+ def cmdlets
22
+ dom[:cmdlets]
23
+ end
24
+
25
+ def add_cmdlet
26
+ @current_cmdlet = new_cmdlet
27
+ dom[:cmdlets] << current_cmdlet
28
+ end
29
+
30
+ def cmdlet_setting(name, value)
31
+ @current_cmdlet[name] = value
32
+ end
33
+
34
+ def add_cmdlet_parameter(name, description, **opts)
35
+ parameter = {
36
+ name: name,
37
+ description: description
38
+ }.merge(opts)
39
+
40
+ @current_cmdlet[:parameters] << parameter
41
+ end
42
+
43
+ def add_cmdlet_example(value)
44
+ lines = value.split("\n")
45
+ value = lines.map { |line| " # #{line.strip}" }.join("\n")
46
+
47
+ @current_cmdlet[:examples] << value
48
+ end
49
+
50
+ private
51
+
52
+ def new_cmdlet
53
+ category = data_access.category.find_category(category_key)
54
+
55
+ {
56
+ name: nil,
57
+ description: nil,
58
+ result: nil,
59
+ category: category[:name],
60
+ category_description: category[:description],
61
+ base_class_require: nil,
62
+ base_class: nil,
63
+ parameters: [],
64
+ examples: []
65
+ }
66
+ end
67
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CmdletChild < KDirector::Directors::ChildDirector
4
+ def initialize(parent, **opts)
5
+ super(parent, **opts)
6
+
7
+ builder.add_cmdlet
8
+ end
9
+
10
+ def name(value)
11
+ builder.cmdlet_setting(:name, value)
12
+ end
13
+
14
+ def description(value)
15
+ builder.cmdlet_setting(:description, value)
16
+ end
17
+
18
+ def result(value)
19
+ builder.cmdlet_setting(:result, value)
20
+ end
21
+
22
+ def ruby(value)
23
+ builder.cmdlet_setting(:ruby, value)
24
+ end
25
+
26
+ def parameter(name, description, splat: nil, default: nil, param_type: 'String')
27
+ builder.add_cmdlet_parameter(
28
+ name,
29
+ description,
30
+ splat: splat,
31
+ default: default,
32
+ param_type: param_type
33
+ )
34
+ end
35
+
36
+ def example(value)
37
+ builder.add_cmdlet_example(value)
38
+ end
39
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CmdletDao
4
+ attr_reader :k_builder
5
+
6
+ def initialize(k_builder)
7
+ @k_builder = k_builder
8
+ end
9
+
10
+ def all_cmdlets
11
+ data_access
12
+ .category
13
+ .categories.flat_map { |category| read_cmdlets(category[:name]) }
14
+ .compact
15
+ .uniq
16
+ .sort_by { |r| [r[:category], r[:name]] }
17
+ end
18
+
19
+ private
20
+
21
+ def read_cmdlets(category_name)
22
+ file_name = k_builder.target_folders.join(:builder_data, 'cmdlets', "#{category_name}.json")
23
+
24
+ return JSON.parse(File.read(file_name), symbolize_names: true)[:cmdlets] if File.exist?(file_name)
25
+
26
+ puts "Cmdlet file #{file_name} not found"
27
+ nil
28
+ end
29
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CmdletDirector < KDirector::Directors::BaseDirector
4
+ defaults(builder_type: CmdletBuilder, on_exist: :write, on_action: :execute)
5
+
6
+ def initialize(k_builder, builder, **opts)
7
+ super(k_builder, builder, **opts)
8
+
9
+ builder.category_key = opts[:category] || :unknown
10
+ end
11
+
12
+ def cmdlet(**opts, &block)
13
+ cmdlet = CmdletChild.new(self, **opts)
14
+ cmdlet.instance_eval(&block) if block_given?
15
+
16
+ self
17
+ end
18
+
19
+ def categories
20
+ data_access.category_director.categories
21
+ end
22
+
23
+ def generate
24
+ build_cmdlets
25
+ save_cmdlets
26
+ run_cop
27
+
28
+ self
29
+ end
30
+
31
+ def build_cmdlets
32
+ builder.cmdlets.each do |cmdlet|
33
+ cmdlet_file = "#{cmdlet[:category]}/#{cmdlet[:name]}.rb"
34
+ cmdlet_spec_file = "#{cmdlet[:category]}/#{cmdlet[:name]}_spec.rb"
35
+
36
+ cd(:lib)
37
+ add(cmdlet_file, template_file: 'cmdlet.rb', cmdlet: cmdlet)
38
+
39
+ cd(:spec)
40
+ add(cmdlet_spec_file, template_file: 'cmdlet_spec.rb', cmdlet: cmdlet, on_exist: :skip)
41
+ end
42
+
43
+ self
44
+ end
45
+
46
+ def run_cop
47
+ Dir.chdir(k_builder.target_folders.get(:app)) do
48
+ k_builder.run_cop('**/*.rb', fix_unsafe: true)
49
+ end
50
+
51
+ self
52
+ end
53
+
54
+ def save_cmdlets
55
+ cd(:builder_data)
56
+ add("cmdlets/#{builder.category_key}.json", content: builder.to_json)
57
+
58
+ self
59
+ end
60
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ def data_access
4
+ @data_access ||= Dao.new(k_builder)
5
+ end
6
+
7
+ class Dao
8
+ attr_reader :k_builder
9
+ attr_reader :category
10
+ attr_reader :cmdlet
11
+
12
+ def initialize(k_builder)
13
+ @category = CategoryDao.new(k_builder)
14
+ @cmdlet = CmdletDao.new(k_builder)
15
+ end
16
+ end
@@ -1,31 +1,225 @@
1
+ # frozen_string_literal: true
2
+
1
3
  def commands
2
- functions.map do |function|
3
- category = categories.find { |c| c.name == function.category }
4
-
5
-
6
- log.error("Category '#{function.category}' not found") unless category
7
-
8
- OpenStruct.new(
9
- category: function.category,
10
- name: function.name,
11
- category_description: category.description,
12
- function_description: function.description,
13
- ruby: function.ruby,
14
- usecases: use_cases
15
- .select { |uc| uc.category == function.category && uc.function == function.name }
16
- .map { |uc|
17
- OpenStruct.new({
18
- category: uc.category,
19
- function: uc.function,
20
- inputs: uc.inputs,
21
- nice_inputs: nice_inputs(uc.inputs),
22
- expected_output: uc.expected_output
23
- })
24
- }
25
- )
4
+ return @commands unless @commands.nil?
5
+
6
+ result = KDoc.model :document do
7
+ table :rows do
8
+ fields :category, :name, :alias, :description, :ruby # , f(name: :params, default: [:value])
9
+
10
+ # context 'when array of string' do
11
+ # let(:value) { %w[the quick fox] }
12
+
13
+ # it { is_expected.to eq('the,quick,fox') }
14
+ # end
15
+
16
+ # context 'when array of numbers' do
17
+ # let(:value) { [1, 2, 3] }
18
+
19
+ # it { is_expected.to eq('1,2,3') }
20
+ # end
21
+
22
+ # context 'when array of symbol' do
23
+ # let(:value) { %i[the quick fox] }
24
+
25
+ # it { is_expected.to eq('the,quick,fox') }
26
+ # end
27
+
28
+ row :array , :join , [] , 'join an array of values with separator as a string', <<-'RUBY'
29
+ return '' if value.nil? || !value.is_a?(Array)
30
+ values = value.reject(&:blank?)
31
+ return '' if value.length.zero?
32
+
33
+ separator = ','
34
+ values.join(separator)
35
+ RUBY
36
+
37
+ row :array , :join_pre , [] , 'join an array of values with separator as a string and using the separator at the beginning of string', <<-'RUBY'
38
+ return '' if value.nil? || !value.is_a?(Array)
39
+ values = value.reject(&:blank?)
40
+ return '' if value.length.zero?
41
+
42
+ separator = ','
43
+ "#{separator}#{value.join(separator)}"
44
+ RUBY
45
+
46
+ # row :array , :join_post , [] , "join an array of values with separator as a string and using the separator at the end of string", <<-'RUBY'
47
+ # return '' if value.nil? || !value.is_a?(Array)
48
+ # values = value.reject(&:blank?)
49
+ # return '' if value.length.zero?
50
+
51
+ # separator = ','
52
+ # "#{value.join(separator)}#{separator}"
53
+ # RUBY
54
+
55
+ # row :a_transform , :backslash , [:back_slash] , "convert to back slash notation", <<-'RUBY'
56
+ # tokenizer.parse(value, preserve_case: true, separator: '\\')
57
+ # RUBY
58
+
59
+ # row :a_transform , :camel , [:upper_camel, :pascal] , "convert to camel notation", <<-'RUBY'
60
+ # tokenizer.parse(value).underscore.camelize
61
+ # RUBY
62
+
63
+ # row :a_transform , :constant , [:constantize] , "", <<-'RUBY'
64
+ # tokenizer.parse(value, separator: '_').upcase
65
+ # RUBY
66
+
67
+ # row :a_transform , :dash , [:dasherize] , "convert to dash notation", <<-'RUBY'
68
+ # tokenizer.parse(value)
69
+ # RUBY
70
+
71
+ # row :a_transform , :dot , [:dotirize] , "", <<-'RUBY'
72
+ # tokenizer.parse(value, separator: '.')
73
+ # RUBY
74
+
75
+ # row :a_transform , :double_colon , [] , "", <<-'RUBY'
76
+ # tokenizer.parse(value, preserve_case: true, separator: '::')
77
+ # RUBY
78
+
79
+ # row :a_transform , :lower , [:lowercase, :downcase] , "", <<-'RUBY'
80
+ # return '' if value.nil?
81
+
82
+ # value.downcase
83
+ # RUBY
84
+
85
+ # # row :a_transform , :format_as , [] , "", <<-'RUBY'
86
+
87
+ # # RUBY
88
+
89
+ # row :a_transform , :proper , [] , "Proper case capitalizes the first letter of ALL words in a string", <<-'RUBY'
90
+ # tokenizer.parse(value,
91
+ # separator: ' ',
92
+ # preserve_case: true,
93
+ # compress_prefix_numerals: false,
94
+ # compress_suffix_numerals: false)
95
+ # .titleize
96
+ # RUBY
97
+
98
+ # row :a_transform , :sentence , [:human, :humanize] , "Upper case for first letter only. Numbers will maintain their spacing", <<-'RUBY'
99
+ # tokenizer.parse(value,
100
+ # separator: ' ',
101
+ # preserve_case: true,
102
+ # compress_prefix_numerals: false,
103
+ # compress_suffix_numerals: false)
104
+ # .humanize
105
+ # RUBY
106
+
107
+ # row :a_transform , :lamel , [:lower_camel] , "", <<-'RUBY'
108
+ # tokenizer.parse(value, separator: '_').camelize(:lower)
109
+ # RUBY
110
+
111
+ # row :a_transform , :slash , [:forwardslash, :forward_slash] , "", <<-'RUBY'
112
+ # tokenizer.parse(value, preserve_case: true, separator: '/')
113
+ # RUBY
114
+
115
+ # row :a_transform , :snake , [:snake] , "", <<-'RUBY'
116
+ # tokenizer.parse(value, separator: '_', forced_separator: true)
117
+ # RUBY
118
+
119
+ # row :a_transform , :title , [:titleize] , "", <<-'RUBY'
120
+ # tokenizer.parse(value,
121
+ # separator: ' ',
122
+ # preserve_case: true,
123
+ # compress_prefix_numerals: false,
124
+ # compress_suffix_numerals: false)
125
+ # .titleize
126
+ # RUBY
127
+
128
+ # row :a_transform , :upper , [:upper_case, :upcase] , "", <<-'RUBY'
129
+ # return '' if value.nil?
130
+
131
+ # value.upcase
132
+ # RUBY
133
+
134
+ # row :a_comparison , :and , [:all] , "", <<-'RUBY'
135
+ # values.all? { |value| value }
136
+ # RUBY
137
+
138
+ # # DEFAULT does not make sense in comparison
139
+ # row :a_comparison , :default , [:fallback] , "", <<-'RUBY'
140
+ # default_value = values[-1]
141
+
142
+ # find_value = values[0..-2].find { |value| !value.nil? }
143
+
144
+ # find_value || default_value
145
+ # RUBY
146
+
147
+ # row :a_comparison , :eq , [:equal] , "", <<-'RUBY'
148
+ # lhs = lhs.to_s if lhs.is_a?(Symbol)
149
+ # rhs = rhs.to_s if rhs.is_a?(Symbol)
150
+
151
+ # lhs == rhs
152
+ # RUBY
153
+
154
+ # row :a_comparison , :gt , [] , "", <<-'RUBY'
155
+ # lhs > rhs
156
+ # RUBY
157
+
158
+ # row :a_comparison , :gte , [] , "", <<-'RUBY'
159
+ # lhs >= rhs
160
+ # RUBY
161
+
162
+ # row :a_comparison , :lt , [:less_than] , "# 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.", <<-'RUBY'
163
+ # lhs < rhs
164
+ # RUBY
165
+
166
+ # row :a_comparison , :lte , [:less_than_or_equal_to] , "# Lte: (less than or equal to) Block helper that renders a block if `a` is **less than or equal to** `b`. If an inverse block is specified it will be rendered when falsy.", <<-'RUBY'
167
+ # lhs <= rhs
168
+ # RUBY
169
+
170
+ # row :a_comparison , :ne , [:not_equal] , "# Ne: (not equal) Block helper that renders a block if `a` is **not equal to** `b`. If an inverse block is specified it will be rendered when falsy.", <<-'RUBY'
171
+ # lhs = lhs.to_s if lhs.is_a?(Symbol)
172
+ # rhs = rhs.to_s if rhs.is_a?(Symbol)
173
+
174
+ # lhs != rhs
175
+ # RUBY
176
+
177
+ # row :a_comparison , :or , [:any] , "", <<-'RUBY'
178
+ # values.any? { |value| value }
179
+ # RUBY
180
+
181
+ # row :a_inflection , :ordinal , [] , "The suffix that should be added to a number to denote the position in an ordered sequence such as 1st, 2nd, 3rd, 4th", <<-RUBY
182
+ # return '' if value.nil?
183
+
184
+ # value = value.to_i if value.is_a? String
185
+
186
+ # value.ordinal
187
+ # RUBY
188
+
189
+ # row :a_inflection , :ordinalize , [] , "Turns a number into an ordinal string used to denote the position in an ordered sequence such as 1st, 2nd, 3rd, 4th.", <<-RUBY
190
+ # return '' if value.nil?
191
+
192
+ # value = value.to_i if value.is_a? String
193
+
194
+ # value.ordinalize
195
+ # RUBY
196
+
197
+ # row :a_inflection , :pluralize , [] , "Returns the plural form of the word in the string", <<-RUBY
198
+ # return '' if value.nil?
199
+
200
+ # value = value.to_s if value.is_a?(Symbol)
201
+
202
+ # value.pluralize
203
+ # RUBY
204
+
205
+ # row :a_inflection , :pluralize_by_number , [] , "Uses both a word and number to decide if the plural or singular form should be used.", <<-'RUBY'
206
+ # return '' if value.nil?
207
+
208
+ # count = count.to_i if count.is_a? String
209
+ # format = :word if format.nil?
210
+
211
+ # case format.to_sym
212
+ # when :number_word, :number_and_word
213
+ # "#{count} #{value.pluralize(count)}"
214
+ # else # aka :word
215
+ # value.pluralize(count)
216
+ # end
217
+ # RUBY
218
+
219
+ # row :a_inflection , :singularize , [] , ""
220
+ end
26
221
  end
27
- end
28
222
 
29
- def nice_inputs(values)
30
- values.map { |value| value.is_a?(String) ? "'#{value}'" : value }.join(', ')
31
- end
223
+ @commands = result.raw_data_struct.rows
224
+ end
225
+ @commands = nil
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  def use_cases
2
4
  return @use_cases unless @use_cases.nil?
3
-
4
- result = KDoc.model :document do
5
5
 
6
+ result = KDoc.model :document do
6
7
  # table :inputs do
7
8
  # fields :name, :value
8
9
 
@@ -18,9 +19,9 @@ def use_cases
18
19
 
19
20
  # end
20
21
 
21
- sentence1 = "The quick brown fox, jumped over the lazy dog"
22
- sentence2 = "coyote and the acme company"
23
- text1 = "the Quick brown Fox 99"
22
+ sentence1 = 'The quick brown fox, jumped over the lazy dog'
23
+ sentence2 = 'coyote and the acme company'
24
+ text1 = 'the Quick brown Fox 99'
24
25
 
25
26
  table :rows do
26
27
  # fields :category, :function, :input, :commands, :expected_value
@@ -62,37 +63,36 @@ def use_cases
62
63
  row :a_transform , :title , [text1] , 'The Quick Brown Fox 99'
63
64
  row :a_transform , :title , [sentence1] , 'The Quick Brown Fox Jumped over the Lazy Dog'
64
65
  row :a_transform , :upper , [text1] , 'THE QUICK BROWN FOX 99'
65
-
66
66
 
67
67
  row :a_comparison , :and , [nil, nil] , false
68
68
  row :a_comparison , :and , ['data', nil] , false
69
69
  row :a_comparison , :and , [nil, 'data'] , false
70
- row :a_comparison , :and , ['data', 'data'] , true
71
- row :a_comparison , :and , ['aaa', 'bbb'] , true
70
+ row :a_comparison , :and , %w[data data] , true
71
+ row :a_comparison , :and , %w[aaa bbb] , true
72
72
 
73
73
  # DEFAULT does not make sense in comparison
74
- row :a_comparison , :default , [nil, 'happy'] , "happy"
75
- row :a_comparison , :default , ['sad', 'happy'] , "sad"
76
- row :a_comparison , :default , [nil, nil, nil, nil, 'david'] , "david"
77
- row :a_comparison , :default , ['', 'happy'] , "happy"
74
+ row :a_comparison , :default , [nil, 'happy'] , 'happy'
75
+ row :a_comparison , :default , %w[sad happy] , 'sad'
76
+ row :a_comparison , :default , [nil, nil, nil, nil, 'david'] , 'david'
77
+ row :a_comparison , :default , ['', 'happy'] , 'happy'
78
78
 
79
79
  # type: :strict, :equiv, :cast, :insensitive
80
- row :a_comparison , :eq , [111, '111' ], false
81
- row :a_comparison , :eq , [111, 111.0 ], false
82
- row :a_comparison , :eq , ['aaa', 'aaa'], true
83
- row :a_comparison , :eq , ['aaa', 'bbb'], false
84
- row :a_comparison , :eq , [:aaa, :aaa] , true
80
+ row :a_comparison , :eq , [111, '111'], false
81
+ row :a_comparison , :eq , [111, 111.0], false
82
+ row :a_comparison , :eq , %w[aaa aaa], true
83
+ row :a_comparison , :eq , %w[aaa bbb], false
84
+ row :a_comparison , :eq , %i[aaa aaa] , true
85
85
  row :a_comparison , :eq , ['aaa', :aaa] , false
86
- row :a_comparison , :eq , ['aaa', 'bbb'], false
87
- row :a_comparison , :eq , ['aaa', 'AAA'], false
86
+ row :a_comparison , :eq , %w[aaa bbb], false
87
+ row :a_comparison , :eq , %w[aaa AAA], false
88
88
 
89
89
  row :a_comparison , :gt , [2, 1] , true
90
90
  row :a_comparison , :gt , [2, 2] , false
91
-
91
+
92
92
  row :a_comparison , :gte , [1, 2] , false
93
93
  row :a_comparison , :gte , [1, 1] , true
94
94
  row :a_comparison , :gte , [2, 1] , true
95
-
95
+
96
96
  row :a_comparison , :lt , [1, 2] , true
97
97
  row :a_comparison , :lt , [2, 1] , false
98
98
 
@@ -102,16 +102,15 @@ def use_cases
102
102
 
103
103
  row :a_comparison , :ne , [1, 2] , true
104
104
  row :a_comparison , :ne , [1, 1] , false
105
-
105
+
106
106
  row :a_comparison , :or , [nil, nil] , false
107
107
  row :a_comparison , :or , ['data', nil] , true
108
108
  row :a_comparison , :or , [nil, 'data'] , true
109
- row :a_comparison , :or , ['data', 'data'] , true
110
- row :a_comparison , :or , ['aaa', 'bbb'] , true
109
+ row :a_comparison , :or , %w[data data] , true
110
+ row :a_comparison , :or , %w[aaa bbb] , true
111
111
  # row :text1 , %i[backslash] , 'the\quick\brown\fox99'
112
112
  # row :text1 , %i[camel] , 'TheQuickBrownFox99'
113
113
 
114
-
115
114
  # row :sentence3 , %i[plural] , "jumped over the lazy dogs"
116
115
  # row :title , %i[plural] , "Account Categories"
117
116
  # row :sentence1 , %i[dash] , "The-quick-brown-fox-jumped-over-the-lazy-dog"
@@ -120,17 +119,16 @@ def use_cases
120
119
  # row :bsb_account , %i[lower snake] , "abc_123"
121
120
  # row :bsb_account , %i[slash] , "ABC/123"
122
121
  end
123
-
124
122
  end
125
-
123
+
126
124
  @use_cases = result.raw_data_struct.rows
127
125
  end
128
126
  @use_cases = nil
129
127
 
130
- # def self.camel_case(string, tokenizer = PreservePrefixedUnderscoreTokenizer.new)
131
- # # DAVE INPUT 9 Oct 21 from lucky_case play
132
- # # dependency injection: to use enhanced tokenizer
133
- # a = split_case_string string
134
- # converted = ([a[0]] + a[1..-1].map { |e| capital e }).join('')
135
- # tokenizer.parse(converted)
136
- # end
128
+ # def self.camel_case(string, tokenizer = PreservePrefixedUnderscoreTokenizer.new)
129
+ # # DAVE INPUT 9 Oct 21 from lucky_case play
130
+ # # dependency injection: to use enhanced tokenizer
131
+ # a = split_case_string string
132
+ # converted = ([a[0]] + a[1..-1].map { |e| capital e }).join('')
133
+ # tokenizer.parse(converted)
134
+ # end