signore 0.2.4 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -6
- data/bin/signore +1 -0
- data/config/reek.yml +3 -0
- data/lib/signore/cli.rb +0 -1
- data/lib/signore/database.rb +15 -2
- data/lib/signore/mapper.rb +15 -0
- data/lib/signore/sig_from_stream.rb +3 -2
- data/lib/signore/signature.rb +7 -3
- data/signore.gemspec +2 -2
- data/spec/fixtures/signatures.legacy.yml +23 -0
- data/spec/fixtures/signatures.yml +6 -12
- data/spec/signore/database_spec.rb +28 -4
- data/spec/signore/mapper_spec.rb +37 -0
- data/spec/signore/sig_finder_spec.rb +1 -2
- data/spec/signore/sig_from_stream_spec.rb +3 -2
- data/spec/signore/signature_spec.rb +33 -15
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eba6ae8ca7d28dd0e9ab1ba802d3c123cac60ea8
|
4
|
+
data.tar.gz: 863b5bf72e37a144dab17cbb4f4e0b81b993471a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33ec2292285973a2bf1b2e906088b593005108d38dcbc6217ff4e7e8b961303fdc99109d2c63ad099f89cddd9276c59e4280f44a7e4a10ed9da59f4b786a494c
|
7
|
+
data.tar.gz: a9eca84ec42b8cbc4a9790c2e30a0f815d54f18955f92e4675e08feb1761da4ed1d9088cff407fe6c833c8f6fe5aeed221b76496ec35eeef9cbf0332283fbfba
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
signore (0.
|
4
|
+
signore (0.3.0)
|
5
5
|
lovely_rufus (~> 0.2.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -25,7 +25,7 @@ GEM
|
|
25
25
|
minitest (5.4.2)
|
26
26
|
minitest-focus (1.1.0)
|
27
27
|
minitest (>= 4, < 6)
|
28
|
-
parser (2.2.0.pre.
|
28
|
+
parser (2.2.0.pre.7)
|
29
29
|
ast (>= 1.1, < 3.0)
|
30
30
|
slop (~> 3.4, >= 3.4.5)
|
31
31
|
powerpack (0.0.9)
|
@@ -41,13 +41,13 @@ GEM
|
|
41
41
|
sexp_processor
|
42
42
|
rerun (0.10.0)
|
43
43
|
listen (~> 2.7, >= 2.7.3)
|
44
|
-
rubocop (0.
|
44
|
+
rubocop (0.27.0)
|
45
45
|
astrolabe (~> 1.3)
|
46
|
-
parser (>= 2.2.0.pre.
|
46
|
+
parser (>= 2.2.0.pre.6, < 3.0)
|
47
47
|
powerpack (~> 0.0.6)
|
48
48
|
rainbow (>= 1.99.1, < 3.0)
|
49
49
|
ruby-progressbar (~> 1.4)
|
50
|
-
ruby-progressbar (1.
|
50
|
+
ruby-progressbar (1.7.0)
|
51
51
|
ruby2ruby (2.1.3)
|
52
52
|
ruby_parser (~> 3.1)
|
53
53
|
sexp_processor (~> 4.0)
|
@@ -68,5 +68,5 @@ DEPENDENCIES
|
|
68
68
|
rake (~> 10.1)
|
69
69
|
reek (~> 1.3)
|
70
70
|
rerun (~> 0.10.0)
|
71
|
-
rubocop (~> 0.
|
71
|
+
rubocop (~> 0.27.0)
|
72
72
|
signore!
|
data/bin/signore
CHANGED
data/config/reek.yml
CHANGED
@@ -4,6 +4,8 @@ DuplicateMethodCall:
|
|
4
4
|
|
5
5
|
FeatureEnvy:
|
6
6
|
exclude:
|
7
|
+
- Signore::Mapper#from_h
|
8
|
+
- Signore::Mapper#to_h
|
7
9
|
- Signore::Settings#forbidden
|
8
10
|
|
9
11
|
IrresponsibleModule:
|
@@ -14,4 +16,5 @@ NestedIterators:
|
|
14
16
|
|
15
17
|
UtilityFunction:
|
16
18
|
exclude:
|
19
|
+
- Signore::Mapper#from_h
|
17
20
|
- Signore::Settings#db_path
|
data/lib/signore/cli.rb
CHANGED
data/lib/signore/database.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require 'yaml/store'
|
3
|
+
require_relative 'mapper'
|
3
4
|
require_relative 'settings'
|
4
5
|
require_relative 'sig_finder'
|
6
|
+
require_relative 'signature'
|
5
7
|
require_relative 'tags'
|
6
8
|
|
7
9
|
module Signore
|
@@ -14,14 +16,20 @@ module Signore
|
|
14
16
|
end
|
15
17
|
|
16
18
|
def <<(sig)
|
17
|
-
|
19
|
+
sigs << sig
|
20
|
+
persist
|
18
21
|
end
|
19
22
|
|
20
23
|
def find(tags: Tags.new)
|
21
|
-
sigs = store.transaction(true) { store['signatures'] }
|
22
24
|
sig_finder.find(sigs, tags: tags)
|
23
25
|
end
|
24
26
|
|
27
|
+
def sigs
|
28
|
+
@sigs ||= store.transaction(true) { store['signatures'] }.map do |elem|
|
29
|
+
elem.is_a?(Signature) ? elem : Mapper.from_h(elem)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
25
33
|
attr_reader :path, :sig_finder, :store
|
26
34
|
private :path, :sig_finder, :store
|
27
35
|
|
@@ -32,5 +40,10 @@ module Signore
|
|
32
40
|
FileUtils.touch path
|
33
41
|
YAML::Store.new(path).transaction { |store| store['signatures'] = [] }
|
34
42
|
end
|
43
|
+
|
44
|
+
def persist
|
45
|
+
hashes = sigs.map { |sig| Mapper.to_h(sig) }
|
46
|
+
store.transaction { store['signatures'] = hashes }
|
47
|
+
end
|
35
48
|
end
|
36
49
|
end
|
@@ -15,8 +15,9 @@ module Signore
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def to_sig
|
18
|
-
Signature.new(
|
19
|
-
|
18
|
+
Signature.new(author: params.author, source: params.source,
|
19
|
+
subject: params.subject, tags: tags.required,
|
20
|
+
text: params.text)
|
20
21
|
end
|
21
22
|
|
22
23
|
attr_reader :input, :tags
|
data/lib/signore/signature.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'lovely_rufus'
|
2
2
|
|
3
3
|
module Signore
|
4
|
-
Signature = Struct.new(*%i(
|
5
|
-
def initialize(
|
6
|
-
super
|
4
|
+
Signature = Struct.new(*%i(author source subject tags text)) do
|
5
|
+
def initialize(author: nil, source: nil, subject: nil, tags: nil, text: nil)
|
6
|
+
super author, source, subject, tags, text
|
7
7
|
each_pair { |key, value| self[key] = nil if value and value.empty? }
|
8
8
|
end
|
9
9
|
|
@@ -11,6 +11,10 @@ module Signore
|
|
11
11
|
tags and tags.include?(tag)
|
12
12
|
end
|
13
13
|
|
14
|
+
def to_h
|
15
|
+
super.map { |key, val| [key.to_s, val] }.to_h.keep_if { |_, value| value }
|
16
|
+
end
|
17
|
+
|
14
18
|
def to_s
|
15
19
|
spaced = text.gsub("\n", "\n\n")
|
16
20
|
wrapped = LovelyRufus.wrap(spaced, width: 80)
|
data/signore.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.license = 'AGPL-3.0'
|
8
8
|
gem.name = 'signore'
|
9
9
|
gem.summary = 'signore: an email signature manager/randomiser'
|
10
|
-
gem.version = '0.
|
10
|
+
gem.version = '0.3.0'
|
11
11
|
|
12
12
|
gem.files = `git ls-files -z`.split "\0"
|
13
13
|
gem.executables = gem.files.grep(/^bin\//).map { |path| File.basename(path) }
|
@@ -21,5 +21,5 @@ Gem::Specification.new do |gem|
|
|
21
21
|
gem.add_development_dependency 'rake', '~> 10.1'
|
22
22
|
gem.add_development_dependency 'reek', '~> 1.3'
|
23
23
|
gem.add_development_dependency 'rerun', '~> 0.10.0'
|
24
|
-
gem.add_development_dependency 'rubocop', '~> 0.
|
24
|
+
gem.add_development_dependency 'rubocop', '~> 0.27.0'
|
25
25
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
signatures:
|
2
|
+
- !ruby/struct:Signore::Signature
|
3
|
+
text: She was good at playing abstract confusion in the same way a midget is good at being short.
|
4
|
+
author: Clive James
|
5
|
+
subject: on Marilyn Monroe
|
6
|
+
- !ruby/struct:Signore::Signature
|
7
|
+
text: You do have to be mad to work here, but it doesn’t help.
|
8
|
+
author: Gary Barnes
|
9
|
+
source: asr
|
10
|
+
tags: [tech, work]
|
11
|
+
- !ruby/struct:Signore::Signature
|
12
|
+
text: // sometimes I believe compiler ignores all my comments
|
13
|
+
tags: [programming, tech]
|
14
|
+
- !ruby/struct:Signore::Signature
|
15
|
+
text: Bruce Schneier knows Alice and Bob’s shared secret.
|
16
|
+
source: Bruce Schneier Facts
|
17
|
+
tags: [security, tech]
|
18
|
+
- !ruby/struct:Signore::Signature
|
19
|
+
text: stay-at-home executives vs. wallstreet dads
|
20
|
+
author: kodz
|
21
|
+
- !ruby/struct:Signore::Signature
|
22
|
+
text: Amateur fighter pilot ignores orders, listens to the voices in his head and slaughters thousands.
|
23
|
+
subject: Star Wars ending explained
|
@@ -1,23 +1,17 @@
|
|
1
1
|
signatures:
|
2
|
-
-
|
3
|
-
text: She was good at playing abstract confusion in the same way a midget is good at being short.
|
2
|
+
- text: She was good at playing abstract confusion in the same way a midget is good at being short.
|
4
3
|
author: Clive James
|
5
4
|
subject: on Marilyn Monroe
|
6
|
-
-
|
7
|
-
text: You do have to be mad to work here, but it doesn’t help.
|
5
|
+
- text: You do have to be mad to work here, but it doesn’t help.
|
8
6
|
author: Gary Barnes
|
9
7
|
source: asr
|
10
8
|
tags: [tech, work]
|
11
|
-
-
|
12
|
-
text: // sometimes I believe compiler ignores all my comments
|
9
|
+
- text: // sometimes I believe compiler ignores all my comments
|
13
10
|
tags: [programming, tech]
|
14
|
-
-
|
15
|
-
text: Bruce Schneier knows Alice and Bob’s shared secret.
|
11
|
+
- text: Bruce Schneier knows Alice and Bob’s shared secret.
|
16
12
|
source: Bruce Schneier Facts
|
17
13
|
tags: [security, tech]
|
18
|
-
-
|
19
|
-
text: stay-at-home executives vs. wallstreet dads
|
14
|
+
- text: stay-at-home executives vs. wallstreet dads
|
20
15
|
author: kodz
|
21
|
-
-
|
22
|
-
text: Amateur fighter pilot ignores orders, listens to the voices in his head and slaughters thousands.
|
16
|
+
- text: Amateur fighter pilot ignores orders, listens to the voices in his head and slaughters thousands.
|
23
17
|
subject: Star Wars ending explained
|
@@ -10,20 +10,27 @@ require_relative '../../lib/signore/tags'
|
|
10
10
|
module Signore
|
11
11
|
describe Database do
|
12
12
|
describe '#<<' do
|
13
|
+
let(:path) { Pathname.new(Tempfile.new('').path) }
|
14
|
+
let(:sig) { Signature.new(text: text) }
|
15
|
+
let(:text) { 'Normaliser Unix c’est comme pasteuriser le camembert.' }
|
16
|
+
|
13
17
|
it 'saves the provided signature to disk' do
|
14
|
-
text = 'Normaliser Unix c’est comme pasteuriser le camembert.'
|
15
|
-
sig = Signature.new(text)
|
16
|
-
path = Pathname.new(Tempfile.new('').path)
|
17
18
|
Database.new(path: path) << sig
|
18
19
|
path.read.must_include text
|
19
20
|
end
|
21
|
+
|
22
|
+
it 'rewrites legacy YAML files on save' do
|
23
|
+
FileUtils.cp Pathname.new('spec/fixtures/signatures.legacy.yml'), path
|
24
|
+
Database.new(path: path) << sig
|
25
|
+
path.read.wont_include 'Signore::Signature'
|
26
|
+
end
|
20
27
|
end
|
21
28
|
|
22
29
|
describe '#find' do
|
23
30
|
let(:database) { Database.new(path: path, sig_finder: sig_finder) }
|
24
31
|
let(:path) { Pathname.new('spec/fixtures/signatures.yml') }
|
25
32
|
let(:sig_finder) { fake(:sig_finder, as: :class) }
|
26
|
-
let(:sigs) {
|
33
|
+
let(:sigs) { database.sigs }
|
27
34
|
let(:store) { YAML::Store.new(path) }
|
28
35
|
|
29
36
|
it 'returns a random signature by default' do
|
@@ -46,6 +53,23 @@ module Signore
|
|
46
53
|
FileUtils.rmtree tempdir
|
47
54
|
end
|
48
55
|
end
|
56
|
+
|
57
|
+
it 'keeps working with legacy YAML files' do
|
58
|
+
path = Pathname.new('spec/fixtures/signatures.legacy.yml')
|
59
|
+
database = Database.new(path: path, sig_finder: sig_finder)
|
60
|
+
stub(sig_finder).find(sigs, tags: Tags.new) { sigs.last }
|
61
|
+
database.find.must_equal sigs.last
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '#sigs' do
|
66
|
+
it 'returns all the Signatures from the Database' do
|
67
|
+
path = Pathname.new('spec/fixtures/signatures.yml')
|
68
|
+
sigs = Database.new(path: path).sigs
|
69
|
+
sigs.size.must_equal 6
|
70
|
+
sigs.first.author.must_equal 'Clive James'
|
71
|
+
sigs.last.subject.must_equal 'Star Wars ending explained'
|
72
|
+
end
|
49
73
|
end
|
50
74
|
end
|
51
75
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
require_relative '../../lib/signore/mapper'
|
3
|
+
require_relative '../../lib/signore/signature'
|
4
|
+
|
5
|
+
module Signore
|
6
|
+
describe Mapper do
|
7
|
+
let(:sig_hash) do
|
8
|
+
{
|
9
|
+
'author' => 'Anonymous Coward',
|
10
|
+
'source' => '/.',
|
11
|
+
'subject' => 'on ‘Monty Wants to Save MySQL’',
|
12
|
+
'tags' => %w(/. MySQL),
|
13
|
+
'text' => text,
|
14
|
+
}
|
15
|
+
end
|
16
|
+
let(:signature) do
|
17
|
+
Signature.new(author: 'Anonymous Coward', source: '/.',
|
18
|
+
subject: 'on ‘Monty Wants to Save MySQL’',
|
19
|
+
tags: %w(/. MySQL), text: text)
|
20
|
+
end
|
21
|
+
let(:text) do
|
22
|
+
'For the sake of topic titles, I’d rather if Monty saved Python.'
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '.from_h' do
|
26
|
+
it 'deserializes a Signature from a Hash' do
|
27
|
+
Mapper.from_h(sig_hash).must_equal signature
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '.to_h' do
|
32
|
+
it 'serialises a Signature to a Hash' do
|
33
|
+
Mapper.to_h(signature).must_equal sig_hash
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -6,8 +6,7 @@ require_relative '../../lib/signore/tags'
|
|
6
6
|
module Signore
|
7
7
|
describe SigFinder do
|
8
8
|
let(:sigs) do
|
9
|
-
|
10
|
-
store.transaction(true) { store['signatures'] }
|
9
|
+
Database.new(path: Pathname.new('spec/fixtures/signatures.yml')).sigs
|
11
10
|
end
|
12
11
|
|
13
12
|
let(:sig_finder) { SigFinder.new(sigs) }
|
@@ -30,7 +30,8 @@ module Signore
|
|
30
30
|
sig = nil
|
31
31
|
capture_io { sig = SigFromStream.sig_from input }
|
32
32
|
text = 'You do have to be mad to work here, but it doesn’t help.'
|
33
|
-
sig.must_equal Signature.new(
|
33
|
+
sig.must_equal Signature.new(author: 'Gary Barnes', source: 'asr',
|
34
|
+
text: text)
|
34
35
|
end
|
35
36
|
|
36
37
|
it 'handles multi-line signatures' do
|
@@ -47,7 +48,7 @@ module Signore
|
|
47
48
|
‘You’ve got an interesting accent. Subtle. I can’t place it.’
|
48
49
|
‘It’s text-to-speech… I was raised by smartphones.’
|
49
50
|
end
|
50
|
-
sig.must_equal Signature.new(
|
51
|
+
sig.must_equal Signature.new(author: 'Patrick Ewing', text: text)
|
51
52
|
end
|
52
53
|
end
|
53
54
|
end
|
@@ -9,9 +9,9 @@ module Signore
|
|
9
9
|
source = 'A History of Modern Computing'
|
10
10
|
text = 'In 1940 he summarized his work in an influential book, ' \
|
11
11
|
'‘Punched Card Methods in Scientific Computation’.'
|
12
|
-
sig = Signature.new(
|
13
|
-
|
14
|
-
|
12
|
+
sig = Signature.new(author: 'Paul E. Ceruzzi', source: source,
|
13
|
+
subject: 'on Wallace Eckert',
|
14
|
+
tags: ['punched cards'], text: text)
|
15
15
|
sig.author.must_equal 'Paul E. Ceruzzi'
|
16
16
|
sig.source.must_equal source
|
17
17
|
sig.subject.must_equal 'on Wallace Eckert'
|
@@ -20,15 +20,16 @@ module Signore
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'nils empty parameters' do
|
23
|
-
new = Signature.new(
|
24
|
-
|
25
|
-
|
23
|
+
new = Signature.new(author: '', source: '', subject: '', tags: [],
|
24
|
+
text: '')
|
25
|
+
new.must_equal Signature.new(author: nil, source: nil, subject: nil,
|
26
|
+
tags: nil, text: nil)
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
29
30
|
describe '#tagged_with?' do
|
30
31
|
it 'says whether a tagged signature is tagged with a given tag' do
|
31
|
-
sig = Signature.new(
|
32
|
+
sig = Signature.new(tags: %w(programming tech), text: '')
|
32
33
|
refute sig.tagged_with?('fnord')
|
33
34
|
assert sig.tagged_with?('programming')
|
34
35
|
assert sig.tagged_with?('tech')
|
@@ -39,16 +40,33 @@ module Signore
|
|
39
40
|
end
|
40
41
|
end
|
41
42
|
|
43
|
+
describe '#to_h' do
|
44
|
+
it 'returns a String-keyed Hash representation of the Signature' do
|
45
|
+
text = 'For the sake of topic titles, I’d rather if Monty saved Python.'
|
46
|
+
sig = Signature.new(author: 'Anonymous Coward', source: '/.',
|
47
|
+
subject: 'on ‘Monty Wants to Save MySQL’',
|
48
|
+
tags: %w(/. MySQL), text: text)
|
49
|
+
sig.to_h.must_equal 'author' => 'Anonymous Coward', 'source' => '/.',
|
50
|
+
'subject' => 'on ‘Monty Wants to Save MySQL’',
|
51
|
+
'tags' => %w(/. MySQL), 'text' => text
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'removes non-existing keys' do
|
56
|
+
assert Signature.new.to_h.empty?
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
42
60
|
describe '#to_s' do
|
43
61
|
it 'does not show meta if there’s nothing to show' do
|
44
62
|
text = '// sometimes I believe compiler ignores all my comments'
|
45
|
-
sig = Signature.new(text)
|
63
|
+
sig = Signature.new(text: text)
|
46
64
|
sig.to_s.must_equal text
|
47
65
|
end
|
48
66
|
|
49
67
|
it 'shows author on its own' do
|
50
|
-
sig = Signature.new(
|
51
|
-
|
68
|
+
sig = Signature.new(author: 'kodz',
|
69
|
+
text: 'stay-at-home executives vs. wallstreet dads')
|
52
70
|
sig.to_s.must_equal <<-end.dedent.strip
|
53
71
|
stay-at-home executives vs. wallstreet dads
|
54
72
|
[kodz]
|
@@ -57,7 +75,7 @@ module Signore
|
|
57
75
|
|
58
76
|
it 'shows author and source, comma-separated' do
|
59
77
|
text = 'You do have to be mad to work here, but it doesn’t help.'
|
60
|
-
sig = Signature.new(
|
78
|
+
sig = Signature.new(author: 'Gary Barnes', source: 'asr', text: text)
|
61
79
|
sig.to_s.must_equal <<-end.dedent.strip
|
62
80
|
You do have to be mad to work here, but it doesn’t help.
|
63
81
|
[Gary Barnes, asr]
|
@@ -66,7 +84,7 @@ module Signore
|
|
66
84
|
|
67
85
|
it 'shows source on its own' do
|
68
86
|
text = 'Bruce Schneier knows Alice and Bob’s shared secret.'
|
69
|
-
sig = Signature.new(
|
87
|
+
sig = Signature.new(source: 'Bruce Schneier Facts', text: text)
|
70
88
|
sig.to_s.must_equal <<-end.dedent.strip
|
71
89
|
Bruce Schneier knows Alice and Bob’s shared secret.
|
72
90
|
[Bruce Schneier Facts]
|
@@ -76,8 +94,8 @@ module Signore
|
|
76
94
|
it 'shows author and subject, space separated' do
|
77
95
|
text = 'She was good at playing abstract confusion ' \
|
78
96
|
'in the same way a midget is good at being short.'
|
79
|
-
sig = Signature.new(
|
80
|
-
|
97
|
+
sig = Signature.new(author: 'Clive James', subject: 'on Marilyn Monroe',
|
98
|
+
text: text)
|
81
99
|
sig.to_s.must_equal <<-end.dedent.strip
|
82
100
|
She was good at playing abstract confusion in
|
83
101
|
the same way a midget is good at being short.
|
@@ -88,7 +106,7 @@ module Signore
|
|
88
106
|
it 'shows subject on its own' do
|
89
107
|
text = 'Amateur fighter pilot ignores orders, listens ' \
|
90
108
|
'to the voices in his head and slaughters thousands.'
|
91
|
-
sig = Signature.new(
|
109
|
+
sig = Signature.new(subject: 'Star Wars ending explained', text: text)
|
92
110
|
sig.to_s.must_equal <<-end.dedent.strip
|
93
111
|
Amateur fighter pilot ignores orders, listens to
|
94
112
|
the voices in his head and slaughters thousands.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: signore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Szotkowski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lovely_rufus
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.
|
117
|
+
version: 0.27.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.
|
124
|
+
version: 0.27.0
|
125
125
|
description: signore helps manage email signatures and select random ones based on
|
126
126
|
their tags
|
127
127
|
email: chastell@chastell.net
|
@@ -142,16 +142,19 @@ files:
|
|
142
142
|
- lib/signore.rb
|
143
143
|
- lib/signore/cli.rb
|
144
144
|
- lib/signore/database.rb
|
145
|
+
- lib/signore/mapper.rb
|
145
146
|
- lib/signore/settings.rb
|
146
147
|
- lib/signore/sig_finder.rb
|
147
148
|
- lib/signore/sig_from_stream.rb
|
148
149
|
- lib/signore/signature.rb
|
149
150
|
- lib/signore/tags.rb
|
150
151
|
- signore.gemspec
|
152
|
+
- spec/fixtures/signatures.legacy.yml
|
151
153
|
- spec/fixtures/signatures.yml
|
152
154
|
- spec/fixtures/wrapper.yml
|
153
155
|
- spec/signore/cli_spec.rb
|
154
156
|
- spec/signore/database_spec.rb
|
157
|
+
- spec/signore/mapper_spec.rb
|
155
158
|
- spec/signore/settings_spec.rb
|
156
159
|
- spec/signore/sig_finder_spec.rb
|
157
160
|
- spec/signore/sig_from_stream_spec.rb
|
@@ -184,6 +187,7 @@ summary: 'signore: an email signature manager/randomiser'
|
|
184
187
|
test_files:
|
185
188
|
- spec/signore/cli_spec.rb
|
186
189
|
- spec/signore/database_spec.rb
|
190
|
+
- spec/signore/mapper_spec.rb
|
187
191
|
- spec/signore/settings_spec.rb
|
188
192
|
- spec/signore/sig_finder_spec.rb
|
189
193
|
- spec/signore/sig_from_stream_spec.rb
|