text-gen 0.8.0 → 0.9.0
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.
- checksums.yaml +4 -4
- data/lib/text/gen/filter/result/pluralize.rb +10 -8
- data/lib/text/gen/filter.rb +32 -0
- data/lib/text/gen/runner.rb +7 -0
- data/lib/text/gen/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d1db9182d0f834336babdf875075db0088edf50fd0e395f6a2c65a836d302910
|
|
4
|
+
data.tar.gz: 5d6e8d334f03687fcadf0b97530454eee5989d8507eb80e1f60e40d41ca7eb19
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '0852fb8a21dfdc559f8f917f5dca8ea32258cac9a7d2a13241aa10bfdd01272bbb7e09068943cb4f8651deb1b980f25d2ad9fd35c34d92827e02a68189b0dac6'
|
|
7
|
+
data.tar.gz: daf86349ff266645e55de15aa61507a3bacf2e47f588a2b18de83992b63927168ba53da40558b155168e420e6b3cfc47aeede89f0e9bf92302c8412069cdd1e8
|
|
@@ -31,25 +31,27 @@ module Text
|
|
|
31
31
|
SINGLE = Set.new(%w[a an the this his her its my your our that their])
|
|
32
32
|
|
|
33
33
|
def apply(result)
|
|
34
|
-
transform_text(result, pluralize(result.text))
|
|
34
|
+
transform_text(result, pluralize(result.text, result.multiplier))
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
private
|
|
38
38
|
|
|
39
|
-
def pluralize(str)
|
|
39
|
+
def pluralize(str, multiplier = 1)
|
|
40
40
|
return str if str.empty?
|
|
41
41
|
|
|
42
42
|
arr = str.split(/\s+/)
|
|
43
43
|
return str if arr.length < 2
|
|
44
44
|
|
|
45
45
|
idx = arr.rindex { |s| to_num(s) }
|
|
46
|
-
return str if idx.nil? || idx >= arr.length - 1
|
|
47
46
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
# Use the multiplier if available, otherwise parse from text
|
|
48
|
+
num = multiplier > 1 ? multiplier : (idx ? to_num(arr[idx]) : nil)
|
|
49
|
+
|
|
50
|
+
return str if num.nil? || num <= 1
|
|
51
|
+
return str if idx && idx >= arr.length - 1
|
|
52
|
+
|
|
53
|
+
dc = arr[-1].downcase
|
|
54
|
+
arr[-1] = exceptions(dc) || single_letter(dc) || others(dc) || ends_with_y(dc) || simple(dc)
|
|
53
55
|
arr.join(" ")
|
|
54
56
|
end
|
|
55
57
|
|
data/lib/text/gen/filter.rb
CHANGED
|
@@ -166,6 +166,38 @@ module Text
|
|
|
166
166
|
|
|
167
167
|
filters.select { |f| f["type"] == type }
|
|
168
168
|
end
|
|
169
|
+
|
|
170
|
+
# Returns a hash of all available filters with their parameters
|
|
171
|
+
# Filters that require explicit parameters will have an array of parameter names
|
|
172
|
+
# Filters that don't require parameters will have an empty array
|
|
173
|
+
def available_filters
|
|
174
|
+
result_filters = RESULT_FILTER_CLASSES.keys.each_with_object({}) do |name, hash|
|
|
175
|
+
hash[name] = filter_parameters(name)
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
item_filters = ITEM_FILTER_CLASSES.keys.each_with_object({}) do |name, hash|
|
|
179
|
+
hash[name] = filter_parameters(name)
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
result_filters.merge(item_filters)
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
private
|
|
186
|
+
|
|
187
|
+
# Define which filters require explicit parameters
|
|
188
|
+
FILTERS_WITH_PARAMETERS = {
|
|
189
|
+
"swap" => ["key", "value"],
|
|
190
|
+
"meta" => ["key", "value"],
|
|
191
|
+
"censor" => ["key", "value"],
|
|
192
|
+
"match" => ["key", "value"],
|
|
193
|
+
"exclude" => ["key", "value"],
|
|
194
|
+
"select" => ["key", "value"],
|
|
195
|
+
"reject" => ["key", "value"]
|
|
196
|
+
}.freeze
|
|
197
|
+
|
|
198
|
+
def filter_parameters(filter_name)
|
|
199
|
+
FILTERS_WITH_PARAMETERS.fetch(filter_name, [])
|
|
200
|
+
end
|
|
169
201
|
end
|
|
170
202
|
end
|
|
171
203
|
end
|
data/lib/text/gen/runner.rb
CHANGED
|
@@ -47,6 +47,13 @@ module Text
|
|
|
47
47
|
visit_and_recurse(key, 0).sort.uniq
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
+
# Returns a hash of all available filters with their parameters.
|
|
51
|
+
# Filters requiring explicit parameters will have an array of parameter names.
|
|
52
|
+
# Filters without parameters will have an empty array.
|
|
53
|
+
def available_filters
|
|
54
|
+
Filter.available_filters
|
|
55
|
+
end
|
|
56
|
+
|
|
50
57
|
def visit_and_recurse(key, depth)
|
|
51
58
|
depth += 1
|
|
52
59
|
raise MaxRecursionError if depth > max_recursion
|
data/lib/text/gen/version.rb
CHANGED