signore 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,15 +1,14 @@
1
- # frozen_string_literal: true
2
-
3
1
  require 'stringio'
4
2
  require_relative '../test_helper'
5
3
  require_relative '../../lib/signore/sig_from_stream'
6
4
 
7
5
  module Signore
8
6
  describe SigFromStream do
9
- describe '.sig_from' do
7
+ describe '.call' do
10
8
  it 'asks about signature parts' do
11
- io = capture_io { SigFromStream.sig_from StringIO.new("\n\n\n\n") }
12
- _(io.first).must_equal <<-end.dedent
9
+ io = capture_io { SigFromStream.call StringIO.new("\n\n\n\n\n") }
10
+ _(io.first).must_equal <<~end
11
+
13
12
  text?
14
13
 
15
14
  author?
@@ -21,7 +20,7 @@ module Signore
21
20
  end
22
21
 
23
22
  it 'asks about signature parts and returns resulting signature' do
24
- input = StringIO.new <<-end.dedent
23
+ input = StringIO.new <<~end
25
24
  You do have to be mad to work here, but it doesn’t help.
26
25
 
27
26
  Gary Barnes
@@ -29,14 +28,14 @@ module Signore
29
28
  asr
30
29
  end
31
30
  sig = nil
32
- capture_io { sig = SigFromStream.sig_from input }
31
+ capture_io { sig = SigFromStream.call input }
33
32
  text = 'You do have to be mad to work here, but it doesn’t help.'
34
33
  _(sig).must_equal Signature.new(author: 'Gary Barnes', source: 'asr',
35
34
  text: text)
36
35
  end
37
36
 
38
37
  it 'handles multi-line signatures' do
39
- input = StringIO.new <<-end.dedent
38
+ input = StringIO.new <<~end
40
39
  ‘You’ve got an interesting accent. Subtle. I can’t place it.’
41
40
  ‘It’s text-to-speech… I was raised by smartphones.’
42
41
 
@@ -45,8 +44,8 @@ module Signore
45
44
 
46
45
  end
47
46
  sig = nil
48
- capture_io { sig = SigFromStream.sig_from input }
49
- text = <<-end.dedent.strip
47
+ capture_io { sig = SigFromStream.call input }
48
+ text = <<~end.strip
50
49
  ‘You’ve got an interesting accent. Subtle. I can’t place it.’
51
50
  ‘It’s text-to-speech… I was raised by smartphones.’
52
51
  end
@@ -1,12 +1,22 @@
1
- # frozen_string_literal: true
2
-
3
1
  require 'yaml'
4
2
  require_relative '../test_helper'
5
- require_relative '../../lib/signore/mapper'
6
3
  require_relative '../../lib/signore/signature'
7
4
 
8
5
  module Signore # rubocop:disable Metrics/ModuleLength
9
6
  describe Signature do
7
+ describe '.from_h' do
8
+ it 'deserializes a Signature from a Hash' do
9
+ text = 'For the sake of topic titles, I’d rather if Monty saved Python.'
10
+ sig_hash = { 'author' => 'Anonymous Coward', 'source' => '/.',
11
+ 'subject' => 'on ‘Monty Wants to Save MySQL’',
12
+ 'tags' => %w[/. MySQL], 'text' => text }
13
+ signature = Signature.new(author: 'Anonymous Coward', source: '/.',
14
+ subject: 'on ‘Monty Wants to Save MySQL’',
15
+ tags: %w[/. MySQL], text: text)
16
+ _(Signature.from_h(sig_hash)).must_equal signature
17
+ end
18
+ end
19
+
10
20
  describe '.new' do
11
21
  it 'instantiates Signatures via parameters' do
12
22
  source = 'A History of Modern Computing'
@@ -45,10 +55,10 @@ module Signore # rubocop:disable Metrics/ModuleLength
45
55
  text = 'For the sake of topic titles, I’d rather if Monty saved Python.'
46
56
  sig = Signature.new(author: 'Anonymous Coward', source: '/.',
47
57
  subject: 'on ‘Monty Wants to Save MySQL’',
48
- tags: %w(/. MySQL), text: text)
58
+ tags: %w[/. MySQL], text: text)
49
59
  _(sig.to_h).must_equal 'author' => 'Anonymous Coward', 'source' => '/.',
50
60
  'subject' => 'on ‘Monty Wants to Save MySQL’',
51
- 'tags' => %w(/. MySQL), 'text' => text
61
+ 'tags' => %w[/. MySQL], 'text' => text
52
62
  end
53
63
 
54
64
  it 'removes non-existing keys' do
@@ -62,7 +72,7 @@ module Signore # rubocop:disable Metrics/ModuleLength
62
72
  end
63
73
 
64
74
  it 'does not show meta if there’s nothing to show' do
65
- text = '// sometimes I believe compiler ignores all my comments'
75
+ text = "// sometimes I believe compiler\n// ignores all my comments"
66
76
  sig = Signature.new(text: text)
67
77
  _(sig.to_s).must_equal text
68
78
  end
@@ -70,7 +80,7 @@ module Signore # rubocop:disable Metrics/ModuleLength
70
80
  it 'shows author on its own' do
71
81
  sig = Signature.new(author: 'kodz',
72
82
  text: 'stay-at-home executives vs. wallstreet dads')
73
- _(sig.to_s).must_equal <<-end.dedent.strip
83
+ _(sig.to_s).must_equal <<~end.strip
74
84
  stay-at-home executives vs. wallstreet dads
75
85
  [kodz]
76
86
  end
@@ -79,18 +89,20 @@ module Signore # rubocop:disable Metrics/ModuleLength
79
89
  it 'shows author and source, comma-separated' do
80
90
  text = 'You do have to be mad to work here, but it doesn’t help.'
81
91
  sig = Signature.new(author: 'Gary Barnes', source: 'asr', text: text)
82
- _(sig.to_s).must_equal <<-end.dedent.strip
83
- You do have to be mad to work here, but it doesn’t help.
84
- [Gary Barnes, asr]
92
+ _(sig.to_s).must_equal <<~end.strip
93
+ You do have to be mad to work
94
+ here, but it doesn’t help.
95
+ [Gary Barnes, asr]
85
96
  end
86
97
  end
87
98
 
88
99
  it 'shows source on its own' do
89
100
  text = 'Bruce Schneier knows Alice and Bob’s shared secret.'
90
101
  sig = Signature.new(source: 'Bruce Schneier Facts', text: text)
91
- _(sig.to_s).must_equal <<-end.dedent.strip
92
- Bruce Schneier knows Alice and Bob’s shared secret.
93
- [Bruce Schneier Facts]
102
+ _(sig.to_s).must_equal <<~end.strip
103
+ Bruce Schneier knows Alice
104
+ and Bob’s shared secret.
105
+ [Bruce Schneier Facts]
94
106
  end
95
107
  end
96
108
 
@@ -98,7 +110,7 @@ module Signore # rubocop:disable Metrics/ModuleLength
98
110
  text = 'More gangland camp than neo-noir.'
99
111
  sig = Signature.new(author: 'Nicholas Christopher',
100
112
  subject: 'on Pulp Fiction', text: text)
101
- _(sig.to_s).must_equal <<-end.dedent.strip
113
+ _(sig.to_s).must_equal <<~end.strip
102
114
  More gangland camp than neo-noir.
103
115
  [Nicholas Christopher on Pulp Fiction]
104
116
  end
@@ -108,7 +120,7 @@ module Signore # rubocop:disable Metrics/ModuleLength
108
120
  text = 'Amateur fighter pilot ignores orders, listens ' \
109
121
  'to the voices in his head and slaughters thousands.'
110
122
  sig = Signature.new(subject: 'Star Wars ending explained', text: text)
111
- _(sig.to_s).must_equal <<-end.dedent.strip
123
+ _(sig.to_s).must_equal <<~end.strip
112
124
  Amateur fighter pilot ignores orders, listens to
113
125
  the voices in his head and slaughters thousands.
114
126
  [Star Wars ending explained]
@@ -117,7 +129,7 @@ module Signore # rubocop:disable Metrics/ModuleLength
117
129
 
118
130
  it 'handles edge cases properly' do
119
131
  YAML.load_file('test/fixtures/wrapper.yml').each do |sig, wrapped|
120
- _(Mapper.from_h(sig.to_h).to_s).must_equal wrapped
132
+ _(Signature.from_h(sig.to_h).to_s).must_equal wrapped
121
133
  end
122
134
  end
123
135
  end
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require_relative '../test_helper'
4
2
  require_relative '../../lib/signore/tags'
5
3
 
@@ -7,24 +5,24 @@ module Signore
7
5
  describe Tags do
8
6
  describe '#match?' do
9
7
  it 'is a predicate whether the Tags match the given list of tags' do
10
- tags = %w(programming tech)
8
+ tags = %w[programming tech]
11
9
  assert Tags.new.match?([])
12
- assert Tags.new(forbidden: %w(fnord)).match?([])
10
+ assert Tags.new(forbidden: %w[fnord]).match?([])
13
11
  assert Tags.new.match?(tags)
14
- assert Tags.new(required: %w(programming)).match?(tags)
15
- assert Tags.new(required: %w(programming tech)).match?(tags)
16
- refute Tags.new(required: %w(programming tech Ruby)).match?(tags)
17
- refute Tags.new(forbidden: %w(programming)).match?(tags)
18
- refute Tags.new(forbidden: %w(tech), required: %w(tech)).match?(tags)
12
+ assert Tags.new(required: %w[programming]).match?(tags)
13
+ assert Tags.new(required: %w[programming tech]).match?(tags)
14
+ refute Tags.new(required: %w[programming tech Ruby]).match?(tags)
15
+ refute Tags.new(forbidden: %w[programming]).match?(tags)
16
+ refute Tags.new(forbidden: %w[tech], required: %w[tech]).match?(tags)
19
17
  end
20
18
  end
21
19
 
22
20
  describe '#to_s' do
23
21
  it 'returns a CLI-like representation of the Tags' do
24
22
  _(Tags.new.to_s).must_equal ''
25
- _(Tags.new(required: %w(tech)).to_s).must_equal 'tech'
26
- _(Tags.new(forbidden: %w(fnord)).to_s).must_equal '~fnord'
27
- _(Tags.new(forbidden: %w(fnord), required: %w(tech)).to_s)
23
+ _(Tags.new(required: %w[tech]).to_s).must_equal 'tech'
24
+ _(Tags.new(forbidden: %w[fnord]).to_s).must_equal '~fnord'
25
+ _(Tags.new(forbidden: %w[fnord], required: %w[tech]).to_s)
28
26
  .must_equal 'tech ~fnord'
29
27
  end
30
28
  end
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  ENV['MT_NO_EXPECTATIONS'] = 'true'
4
2
  require 'bundler/setup'
5
3
  require 'minitest/autorun'
@@ -9,9 +7,3 @@ require 'bogus/minitest/spec'
9
7
  require 'signore'
10
8
 
11
9
  Bogus.configure { |config| config.search_modules << Signore }
12
-
13
- class String
14
- def dedent
15
- gsub(/^#{scan(/^ +/).min}/, '')
16
- end
17
- end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: signore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Szotkowski
@@ -10,27 +10,31 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- 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
- dGVsbDEYMBYGCgmSJomT8ixkARkWCGNoYXN0ZWxsMRMwEQYKCZImiZPyLGQBGRYD
15
- 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
- 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
- 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
- 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
- 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
- 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
- d6af29NKWQh+EPkX1JwwtSwjKfVOeFr0csC6QLWKpp1z/7Lla8d3px426Ccjca0I
22
- 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
- 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
- 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
- YXN0ZWxsLm5ldDAgBgNVHRIEGTAXgRVjaGFzdGVsbEBjaGFzdGVsbC5uZXQwDQYJ
26
- KoZIhvcNAQEFBQADggEBAA+rUbXujzqDv8WE7kkiJadQhxldq/cRhaJDMKSWF3/H
27
- 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
- 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
- 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
- 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
- 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
32
36
  -----END CERTIFICATE-----
33
- date: 2016-10-08 00:00:00.000000000 Z
37
+ date: 2018-11-13 00:00:00.000000000 Z
34
38
  dependencies:
35
39
  - !ruby/object:Gem::Dependency
36
40
  name: lovely_rufus
@@ -46,6 +50,20 @@ dependencies:
46
50
  - - "~>"
47
51
  - !ruby/object:Gem::Version
48
52
  version: '1.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: procto
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 0.0.3
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: 0.0.3
49
67
  - !ruby/object:Gem::Dependency
50
68
  name: bogus
51
69
  requirement: !ruby/object:Gem::Requirement
@@ -88,48 +106,62 @@ dependencies:
88
106
  - - "~>"
89
107
  - !ruby/object:Gem::Version
90
108
  version: '1.1'
109
+ - !ruby/object:Gem::Dependency
110
+ name: overcommit
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: 0.46.0
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: 0.46.0
91
123
  - !ruby/object:Gem::Dependency
92
124
  name: rake
93
125
  requirement: !ruby/object:Gem::Requirement
94
126
  requirements:
95
127
  - - "~>"
96
128
  - !ruby/object:Gem::Version
97
- version: '11.0'
129
+ version: '12.0'
98
130
  type: :development
99
131
  prerelease: false
100
132
  version_requirements: !ruby/object:Gem::Requirement
101
133
  requirements:
102
134
  - - "~>"
103
135
  - !ruby/object:Gem::Version
104
- version: '11.0'
136
+ version: '12.0'
105
137
  - !ruby/object:Gem::Dependency
106
138
  name: reek
107
139
  requirement: !ruby/object:Gem::Requirement
108
140
  requirements:
109
141
  - - "~>"
110
142
  - !ruby/object:Gem::Version
111
- version: '4.0'
143
+ version: '5.0'
112
144
  type: :development
113
145
  prerelease: false
114
146
  version_requirements: !ruby/object:Gem::Requirement
115
147
  requirements:
116
148
  - - "~>"
117
149
  - !ruby/object:Gem::Version
118
- version: '4.0'
150
+ version: '5.0'
119
151
  - !ruby/object:Gem::Dependency
120
152
  name: rubocop
121
153
  requirement: !ruby/object:Gem::Requirement
122
154
  requirements:
123
155
  - - "~>"
124
156
  - !ruby/object:Gem::Version
125
- version: 0.43.0
157
+ version: 0.60.0
126
158
  type: :development
127
159
  prerelease: false
128
160
  version_requirements: !ruby/object:Gem::Requirement
129
161
  requirements:
130
162
  - - "~>"
131
163
  - !ruby/object:Gem::Version
132
- version: 0.43.0
164
+ version: 0.60.0
133
165
  description: signore helps manage email signatures and select random ones based on
134
166
  their tags
135
167
  email: chastell@chastell.net
@@ -138,20 +170,20 @@ executables:
138
170
  extensions: []
139
171
  extra_rdoc_files: []
140
172
  files:
141
- - ".reek"
173
+ - ".overcommit.yml"
174
+ - ".reek.yml"
142
175
  - ".rubocop.yml"
143
176
  - ".ruby-version"
144
177
  - ".travis.yml"
145
- - Gemfile
146
- - Gemfile.lock
147
178
  - LICENCE
148
179
  - README.md
149
180
  - Rakefile
150
181
  - bin/signore
151
182
  - certs/chastell.pem
183
+ - gems.locked
184
+ - gems.rb
152
185
  - lib/signore.rb
153
186
  - lib/signore/cli.rb
154
- - lib/signore/mapper.rb
155
187
  - lib/signore/repo.rb
156
188
  - lib/signore/settings.rb
157
189
  - lib/signore/sig_finder.rb
@@ -164,7 +196,6 @@ files:
164
196
  - test/fixtures/signatures.yml
165
197
  - test/fixtures/wrapper.yml
166
198
  - test/signore/cli_test.rb
167
- - test/signore/mapper_test.rb
168
199
  - test/signore/repo_test.rb
169
200
  - test/signore/settings_test.rb
170
201
  - test/signore/sig_finder_test.rb
@@ -184,7 +215,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
184
215
  requirements:
185
216
  - - "~>"
186
217
  - !ruby/object:Gem::Version
187
- version: '2.3'
218
+ version: '2.5'
188
219
  required_rubygems_version: !ruby/object:Gem::Requirement
189
220
  requirements:
190
221
  - - ">="
@@ -192,13 +223,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
192
223
  version: '0'
193
224
  requirements: []
194
225
  rubyforge_project:
195
- rubygems_version: 2.6.4
226
+ rubygems_version: 2.7.6
196
227
  signing_key:
197
228
  specification_version: 4
198
229
  summary: 'signore: an email signature manager/randomiser'
199
230
  test_files:
200
231
  - test/signore/cli_test.rb
201
- - test/signore/mapper_test.rb
202
232
  - test/signore/repo_test.rb
203
233
  - test/signore/settings_test.rb
204
234
  - test/signore/sig_finder_test.rb
metadata.gz.sig CHANGED
Binary file
data/.reek DELETED
@@ -1,2 +0,0 @@
1
- IrresponsibleModule:
2
- enabled: false
@@ -1,67 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- signore (0.6.0)
5
- lovely_rufus (~> 1.0)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- ast (2.3.0)
11
- axiom-types (0.1.1)
12
- descendants_tracker (~> 0.0.4)
13
- ice_nine (~> 0.11.0)
14
- thread_safe (~> 0.3, >= 0.3.1)
15
- bogus (0.1.6)
16
- dependor (>= 0.0.4)
17
- codeclimate-engine-rb (0.3.1)
18
- virtus (~> 1.0)
19
- coercible (1.0.0)
20
- descendants_tracker (~> 0.0.1)
21
- dependor (1.0.1)
22
- descendants_tracker (0.0.4)
23
- thread_safe (~> 0.3, >= 0.3.1)
24
- equalizer (0.0.11)
25
- ice_nine (0.11.2)
26
- lovely_rufus (1.0.1)
27
- minitest (5.9.1)
28
- minitest-focus (1.1.2)
29
- minitest (>= 4, < 6)
30
- parser (2.3.1.4)
31
- ast (~> 2.2)
32
- powerpack (0.1.1)
33
- rainbow (2.1.0)
34
- rake (11.3.0)
35
- reek (4.4.2)
36
- codeclimate-engine-rb (~> 0.3.1)
37
- parser (~> 2.3.1, >= 2.3.1.2)
38
- rainbow (~> 2.0)
39
- rubocop (0.43.0)
40
- parser (>= 2.3.1.1, < 3.0)
41
- powerpack (~> 0.1)
42
- rainbow (>= 1.99.1, < 3.0)
43
- ruby-progressbar (~> 1.7)
44
- unicode-display_width (~> 1.0, >= 1.0.1)
45
- ruby-progressbar (1.8.1)
46
- thread_safe (0.3.5)
47
- unicode-display_width (1.1.1)
48
- virtus (1.0.5)
49
- axiom-types (~> 0.1)
50
- coercible (~> 1.0)
51
- descendants_tracker (~> 0.0, >= 0.0.3)
52
- equalizer (~> 0.0, >= 0.0.9)
53
-
54
- PLATFORMS
55
- ruby
56
-
57
- DEPENDENCIES
58
- bogus (~> 0.1.3)
59
- minitest (~> 5.6)
60
- minitest-focus (~> 1.1)
61
- rake (~> 11.0)
62
- reek (~> 4.0)
63
- rubocop (~> 0.43.0)
64
- signore!
65
-
66
- BUNDLED WITH
67
- 1.12.1