patter 1.0.10 → 1.0.14

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6204340d17c9513a5be7e044a79bc0ac428ea39365fe24c9405b5afc6b15430e
4
- data.tar.gz: fe832b6a0a8d43dbf709ac59a76462cb995b9281d5a50cc834d5e265a00cdb15
3
+ metadata.gz: 4e185973a1c7a5223684f6f11b9b4dcad03bb72c161ee1110348bf382a6ffba3
4
+ data.tar.gz: 4696591af3be8683d8df72ffa842bb0a1d3861c4a1702d5eb6b7d1b9560e480e
5
5
  SHA512:
6
- metadata.gz: 1cdf173fb4496061bea09fba8f01c273182e1e005c7436436e17d541557a025845bd0553a5d8e674bcecb1586a70c6d0a04711ba59bdfe2ffece7af0fc5b533f
7
- data.tar.gz: d72207fad82a5f8d1ca409871c50d8652f17021a9d20263454343aa8ee08daf9649f109511769c4160909c27e84df9b8bfd7ab2462c1d647bbe5cc9819a1d1ef
6
+ metadata.gz: b49733110e0802ae0ab503a59955370c28625261679cadc5600c9578105e53e35197b2580850668038428d19bfa611799a0c2b5170fc1cd28bdc0c7fb9ee3397
7
+ data.tar.gz: 1a3cad6bf69a0f070bd2d17988a18cf841b074c6ea4bc4acc9cdecf8ae1627e0a4e1ef21781e2094b56e7a4a835b7f1fb9e486914aa10790286877f6ce75eead
data/bin/patter CHANGED
@@ -1,27 +1,49 @@
1
1
  #!/usr/bin/env ruby
2
+ require_relative '../lib/patter'
3
+ include Patter
2
4
 
3
- require 'patter'
4
- require 'docopt'
5
+ class Main
6
+ def self.run(opts)
7
+ opts['--count'].to_i.times do
8
+ puts Pattern.new(opts['<pattern>']).to_s
9
+ end
10
+ end
11
+ end
12
+
13
+ docs = <<~EOF
14
+ #{'Usage:'.bold}
15
+ #{File.basename $0} [options] <pattern>
16
+
17
+ #{'Options:'.bold}
18
+ -n, --count N Number of patterns to generate [default: 10]
19
+ -v, --version Show version
20
+ -h, --help Show this help
5
21
 
6
- str = <<~EOF
7
- Usage: #{File.basename $0} [options] <pattern>
22
+ #{'Tags:'.bold}
23
+ {A} adjective {N} noun
24
+ {S} symbol {D} digit
25
+ {C} character
8
26
 
9
- Generate strings from <pattern>.
27
+ #{'Modifiers:'.bold}
28
+ s: plural t: titlecase
29
+ u: uppercase l: lowercase
30
+ a: AlTeRnAtE case
31
+ <number>: repeat <number> times
10
32
 
11
- -n, --count N Number of patterns to generate [default: 10].
12
- -h, --help Show this help.
13
- -v, --version Show version.
33
+ Apply modifiers using a colon after the tag name.
14
34
 
15
- #{Patter::Pattern.help}
35
+ #{'Examples:'.bold}
36
+ Ten random uppercase letters: {C:10u}
37
+ Three camelcase nouns: {N:3t}
38
+ Plural, titlecase noun: {N:ts}
39
+ Uppercase adjective: {A:u}
40
+ Five random digits: {D:5}
41
+ A username: {A}_{N}
16
42
  EOF
17
43
 
18
44
  begin
19
- opts = Docopt::docopt(str, { version: Patter::VERSION })
45
+ Main.run(Docopt::docopt(docs, version: VERSION))
20
46
  rescue Docopt::Exit => e
21
47
  puts e.message
22
- exit
23
- end
24
-
25
- opts['--count'].to_i.times do
26
- puts Patter::Pattern.new(opts['<pattern>']).to_s
48
+ exit 1
27
49
  end
data/lib/patter.rb CHANGED
@@ -1,5 +1,14 @@
1
+ require 'colorize'
2
+ require 'docopt'
3
+
1
4
  require 'singleton'
2
5
 
6
+ module Patter
7
+ def self.root_dir
8
+ File.expand_path('../..', __FILE__)
9
+ end
10
+ end
11
+
3
12
  require_relative 'patter/source_provider'
4
13
  require_relative 'patter/inflector'
5
14
  require_relative 'patter/pattern'
@@ -33,42 +33,19 @@ module Patter
33
33
  n = 1
34
34
 
35
35
  modifiers.split(re).reject(&:empty?).each do |modifier|
36
- n = $1.to_i if modifier =~ /([0-9]+)/
37
- chain << MODIFIERS[modifier] if MODIFIERS[modifier]
36
+ if modifier =~ /([0-9]+)/
37
+ n = $1.to_i
38
+ end
39
+
40
+ if MODIFIERS[modifier]
41
+ chain << MODIFIERS[modifier]
42
+ end
38
43
  end
39
44
 
40
- samples = source.get_samples(n)
41
- chain.each { |tran| samples.each &tran }
42
- samples.join
45
+ source.get_samples(n).map do |sample|
46
+ sample.transform(chain)
47
+ end.join
43
48
  end
44
49
  end
45
-
46
- def self.help
47
- return <<~EOF
48
- TAGS
49
-
50
- {A} adjective {N} noun
51
- {S} symbol {D} digit
52
- {C} character
53
-
54
- MODIFIERS
55
-
56
- s: plural t: titlecase
57
- u: uppercase l: lowercase
58
- a: AlTeRnAtE case
59
- <number>: repeat <number> times
60
-
61
- Apply modifiers using a colon after the tag name.
62
-
63
- EXAMPLES
64
-
65
- Ten random uppercase letters: {C:10u}
66
- Three camelcase nouns: {N:3t}
67
- Plural, titlecase noun: {N:ts}
68
- Uppercase adjective: {A:u}
69
- Five random digits: {D:5}
70
- A username: {A}_{N}
71
- EOF
72
- end
73
50
  end
74
51
  end
data/lib/patter/sample.rb CHANGED
@@ -1,34 +1,27 @@
1
1
  module Patter
2
- class Sample
3
- def initialize(str)
4
- @str = str
5
- end
6
-
7
- def method_missing(method_symbol)
8
- @str = @str.send(method_symbol)
9
- end
10
-
2
+ class Sample < String
11
3
  def pluralize
12
- @str = Inflector.pluralize(@str)
4
+ self.class.new(Inflector.pluralize(self))
13
5
  end
14
6
 
15
7
  def titleize
16
- @str = @str[0].upcase + @str[1..]
8
+ self.class.new(self[0].upcase + self[1..])
17
9
  end
18
10
 
19
11
  def altcase
20
- @str = @str.chars.each_with_index.map do |char, i|
21
- if i % 2 == 0 then
12
+ self.class.new(chars.each_with_index.map do |char, i|
13
+ if i.even?
22
14
  char.upcase
23
15
  else
24
16
  char.downcase
25
17
  end
26
- end.join
18
+ end.join)
27
19
  end
28
20
 
29
- def to_s
30
- @str
21
+ def transform(chain)
22
+ chain.inject(self) do |str, transformer|
23
+ str.send(transformer)
24
+ end
31
25
  end
32
- alias_method :to_str, :to_s
33
26
  end
34
27
  end
data/lib/patter/source.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Patter
2
2
  class Source < Array
3
3
  def get_samples(n)
4
- sample(n).map { |str| Sample.new(str) }
4
+ sample(n).map { |sample| Sample.new(sample) }
5
5
  end
6
6
 
7
7
  def get_sample
@@ -8,12 +8,8 @@ module Patter
8
8
 
9
9
  private
10
10
 
11
- def gem_root
12
- __dir__ + "/../../"
13
- end
14
-
15
11
  def get_wordlist(type)
16
- File.read(gem_root + "/words/#{type}.txt").split
12
+ File.read(Patter.root_dir + "/words/#{type}.txt").split
17
13
  end
18
14
 
19
15
  def chars
@@ -1,3 +1,3 @@
1
1
  module Patter
2
- VERSION = "1.0.10"
2
+ VERSION = "1.0.14"
3
3
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: patter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: 1.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - crdx
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-06 00:00:00.000000000 Z
11
+ date: 2021-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colorize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.8.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.8.1
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: docopt
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +38,20 @@ dependencies:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
40
  version: 0.6.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: simplecov
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.17.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.17.0
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: rspec
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -52,8 +80,8 @@ dependencies:
52
80
  - - "~>"
53
81
  - !ruby/object:Gem::Version
54
82
  version: '12.3'
55
- description:
56
- email:
83
+ description:
84
+ email:
57
85
  executables:
58
86
  - patter
59
87
  extensions: []
@@ -73,7 +101,7 @@ homepage: https://github.com/crdx/patter
73
101
  licenses:
74
102
  - MIT
75
103
  metadata: {}
76
- post_install_message:
104
+ post_install_message:
77
105
  rdoc_options: []
78
106
  require_paths:
79
107
  - lib
@@ -88,8 +116,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
116
  - !ruby/object:Gem::Version
89
117
  version: '0'
90
118
  requirements: []
91
- rubygems_version: 3.0.4
92
- signing_key:
119
+ rubygems_version: 3.2.21
120
+ signing_key:
93
121
  specification_version: 4
94
- summary: Generate strings from patterns.
122
+ summary: pattern generator
95
123
  test_files: []