patter 1.0.9 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0e522754c97691c3e6769fa213de254e35569fcd0c93b757113a18a0fc1ffdb5
4
- data.tar.gz: 4c7cec988a90d3b57216b9127399a33dcdff06cf281680df5b6abff8bb39493b
3
+ metadata.gz: 6204340d17c9513a5be7e044a79bc0ac428ea39365fe24c9405b5afc6b15430e
4
+ data.tar.gz: fe832b6a0a8d43dbf709ac59a76462cb995b9281d5a50cc834d5e265a00cdb15
5
5
  SHA512:
6
- metadata.gz: cebce75f552cd23474ab3017edb36b99a8f4904fd3ab7012a0948beeddd4457400f9e431335303d2ae65e12d1c7ab2f5641a59d44b44bade7fa29cf0ec923899
7
- data.tar.gz: ec1122c00ebf6c4227c1251b7c32f8477c765d24a7baea74714895dd7243e19a5807a69230fbad9468ac17d63cb94442d989d76e1891e71e187d1b0235d485a9
6
+ metadata.gz: 1cdf173fb4496061bea09fba8f01c273182e1e005c7436436e17d541557a025845bd0553a5d8e674bcecb1586a70c6d0a04711ba59bdfe2ffece7af0fc5b533f
7
+ data.tar.gz: d72207fad82a5f8d1ca409871c50d8652f17021a9d20263454343aa8ee08daf9649f109511769c4160909c27e84df9b8bfd7ab2462c1d647bbe5cc9819a1d1ef
@@ -0,0 +1,59 @@
1
+ module Patter
2
+ class Inflector
3
+ class << self
4
+ RULES = [
5
+ [/(z)ombies$/i, "\\1ombies"],
6
+ [/(z)ombie$/i, "\\1ombies"],
7
+ [/k(?i)ine$/, "kine"],
8
+ [/K(?i)ine$/, "Kine"],
9
+ [/c(?i)ow$/, "kine"],
10
+ [/C(?i)ow$/, "Kine"],
11
+ [/(m)oves$/i, "\\1oves"],
12
+ [/(m)ove$/i, "\\1oves"],
13
+ [/(s)exes$/i, "\\1exes"],
14
+ [/(s)ex$/i, "\\1exes"],
15
+ [/(c)hildren$/i, "\\1hildren"],
16
+ [/(c)hild$/i, "\\1hildren"],
17
+ [/(m)en$/i, "\\1en"],
18
+ [/(m)an$/i, "\\1en"],
19
+ [/(p)eople$/i, "\\1eople"],
20
+ [/(p)erson$/i, "\\1eople"],
21
+ [/(quiz)$/i, "\\1zes"],
22
+ [/^(oxen)$/i, "\\1"],
23
+ [/^(ox)$/i, "\\1en"],
24
+ [/^(m|l)ice$/i, "\\1ice"],
25
+ [/^(m|l)ouse$/i, "\\1ice"],
26
+ [/(matr|vert|ind)(?:ix|ex)$/i, "\\1ices"],
27
+ [/(x|ch|ss|sh)$/i, "\\1es"],
28
+ [/([^aeiouy]|qu)y$/i, "\\1ies"],
29
+ [/(hive)$/i, "\\1s"],
30
+ [/(?:([^f])fe|([lr])f)$/i, "\\1\\2ves"],
31
+ [/sis$/i, "ses"],
32
+ [/([ti])a$/i, "\\1a"],
33
+ [/([ti])um$/i, "\\1a"],
34
+ [/(buffal|tomat)o$/i, "\\1oes"],
35
+ [/(bu)s$/i, "\\1ses"],
36
+ [/(alias|status)$/i, "\\1es"],
37
+ [/(octop|vir)i$/i, "\\1i"],
38
+ [/(octop|vir)us$/i, "\\1i"],
39
+ [/^(ax|test)is$/i, "\\1es"],
40
+ [/s$/i, "s"],
41
+ [/$/, "s"]
42
+ ]
43
+
44
+ UNCOUNTABLES = %w(equipment information rice money species series fish sheep jeans police)
45
+
46
+ def pluralize(str)
47
+ if str.empty? || UNCOUNTABLES.any?(str)
48
+ return str
49
+ end
50
+
51
+ RULES.each do |(rule, replacement)|
52
+ break if str.gsub!(rule, replacement)
53
+ end
54
+
55
+ str
56
+ end
57
+ end
58
+ end
59
+ end
@@ -16,14 +16,15 @@ module Patter
16
16
  }
17
17
 
18
18
  class Pattern
19
- def initialize(pattern)
19
+ def initialize(pattern, source_provider = SourceProvider.instance)
20
20
  @pattern = pattern
21
+ @source_provider = source_provider
21
22
  end
22
23
 
23
24
  def to_s
24
25
  @pattern.gsub(/\{([#{TAGS.keys.join}])(:(\w+))?\}/) do
25
26
  tag, modifiers = $1, $3
26
- source = SourceProvider.instance.get_source(TAGS[tag])
27
+ source = @source_provider.get_source(TAGS[tag])
27
28
 
28
29
  next source.get_sample if !modifiers
29
30
 
data/lib/patter/sample.rb CHANGED
@@ -8,6 +8,14 @@ module Patter
8
8
  @str = @str.send(method_symbol)
9
9
  end
10
10
 
11
+ def pluralize
12
+ @str = Inflector.pluralize(@str)
13
+ end
14
+
15
+ def titleize
16
+ @str = @str[0].upcase + @str[1..]
17
+ end
18
+
11
19
  def altcase
12
20
  @str = @str.chars.each_with_index.map do |char, i|
13
21
  if i % 2 == 0 then
@@ -1,3 +1,3 @@
1
1
  module Patter
2
- VERSION = "1.0.9"
2
+ VERSION = "1.0.10"
3
3
  end
data/lib/patter.rb CHANGED
@@ -1,8 +1,8 @@
1
- require 'active_support/inflector'
2
1
  require 'singleton'
3
2
 
4
3
  require_relative 'patter/source_provider'
5
- require_relative 'patter/source'
4
+ require_relative 'patter/inflector'
6
5
  require_relative 'patter/pattern'
6
+ require_relative 'patter/source'
7
7
  require_relative 'patter/sample'
8
8
  require_relative 'patter/version'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: patter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - crdx
@@ -11,33 +11,47 @@ cert_chain: []
11
11
  date: 2019-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activesupport
14
+ name: docopt
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 5.2.3
19
+ version: 0.6.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 5.2.3
26
+ version: 0.6.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: docopt
28
+ name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.6.1
34
- type: :runtime
33
+ version: '3.8'
34
+ type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.6.1
40
+ version: '3.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '12.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '12.3'
41
55
  description:
42
56
  email:
43
57
  executables:
@@ -47,6 +61,7 @@ extra_rdoc_files: []
47
61
  files:
48
62
  - bin/patter
49
63
  - lib/patter.rb
64
+ - lib/patter/inflector.rb
50
65
  - lib/patter/pattern.rb
51
66
  - lib/patter/sample.rb
52
67
  - lib/patter/source.rb