signore 0.2.4 → 0.3.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/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
|