signore 0.6.0 → 1.0.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 +5 -5
- data/.overcommit.yml +4 -0
- data/.reek.yml +3 -0
- data/.rubocop.yml +20 -7
- data/.tool-versions +1 -0
- data/.travis.yml +6 -4
- data/README.md +1 -1
- data/Rakefile +2 -4
- data/bin/signore +0 -1
- data/gems.locked +98 -0
- data/{Gemfile → gems.rb} +0 -2
- data/lib/signore/cli.rb +4 -5
- data/lib/signore/repo.rb +25 -23
- data/lib/signore/settings.rb +2 -10
- data/lib/signore/sig_finder.rb +3 -11
- data/lib/signore/sig_from_stream.rb +8 -19
- data/lib/signore/signature.rb +11 -13
- data/lib/signore/tags.rb +3 -5
- data/lib/signore.rb +0 -2
- data/signore.gemspec +8 -15
- data/test/fixtures/wrapper.yml +28 -19
- data/test/signore/cli_test.rb +30 -25
- data/test/signore/repo_test.rb +43 -40
- data/test/signore/settings_test.rb +3 -28
- data/test/signore/sig_finder_test.rb +9 -14
- data/test/signore/sig_from_stream_test.rb +9 -10
- data/test/signore/signature_test.rb +33 -19
- data/test/signore/tags_test.rb +10 -12
- data/test/test_helper.rb +0 -13
- metadata +20 -70
- checksums.yaml.gz.sig +0 -0
- data/.reek +0 -2
- data/.ruby-version +0 -1
- data/Gemfile.lock +0 -67
- data/certs/chastell.pem +0 -21
- data/lib/signore/mapper.rb +0 -17
- data/test/signore/mapper_test.rb +0 -39
- data.tar.gz.sig +0 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 53a6bf3a2bc72020cf26754484238b4efb83028f771c395386e857a1916aea59
|
4
|
+
data.tar.gz: 278acaae1aee55674c1b736367f77b848bdad91d70d9fd47ba103d1fd55a19be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e5cce22deca6ff0ff82cda5297a301075a7549059849f26d993caf97c7cca1e265f89d02307ef90c748f0c390d78e07f7b70080e64810095caa196e3eab9c37
|
7
|
+
data.tar.gz: 15abbffeb0e9cd013381dfc273c451c9630738d459dd1fab35d0268aa94ccbfba207676ecb04f2532e3fafc01d5aa4c9f234df6d478264b7cabe551efc8efde9
|
data/.overcommit.yml
ADDED
data/.reek.yml
ADDED
data/.rubocop.yml
CHANGED
@@ -1,17 +1,30 @@
|
|
1
|
-
|
1
|
+
AllCops:
|
2
|
+
NewCops: enable
|
3
|
+
TargetRubyVersion: 3.2
|
4
|
+
|
5
|
+
Bundler/GemFilename:
|
6
|
+
Enabled: false
|
7
|
+
|
8
|
+
Gemspec/DevelopmentDependencies:
|
9
|
+
Enabled: false
|
10
|
+
|
11
|
+
Metrics/BlockLength:
|
12
|
+
AllowedMethods: describe
|
13
|
+
|
14
|
+
Naming/HeredocDelimiterCase:
|
15
|
+
Enabled: false
|
16
|
+
|
17
|
+
Naming/HeredocDelimiterNaming:
|
2
18
|
Enabled: false
|
3
19
|
|
4
20
|
Style/Documentation:
|
5
21
|
Enabled: false
|
6
22
|
|
7
|
-
Style/
|
23
|
+
Style/FrozenStringLiteralComment:
|
8
24
|
Enabled: false
|
9
25
|
|
10
26
|
Style/Not:
|
11
27
|
Enabled: false
|
12
28
|
|
13
|
-
Style/
|
14
|
-
|
15
|
-
|
16
|
-
Style/TrailingCommaInLiteral:
|
17
|
-
EnforcedStyleForMultiline: comma
|
29
|
+
Style/StructInheritance:
|
30
|
+
Enabled: false
|
data/.tool-versions
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby 2.6.1
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -86,4 +86,4 @@ signore stores the signatures in a YAML file (for ease of editing, if such a nee
|
|
86
86
|
|
87
87
|
---
|
88
88
|
|
89
|
-
© MMIX-
|
89
|
+
© MMIX-MMXIX Piotr Szotkowski <chastell@chastell.net>, licensed under AGPL-3.0 (see LICENCE)
|
data/Rakefile
CHANGED
@@ -1,10 +1,9 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'bundler/setup'
|
3
2
|
require 'rake/testtask'
|
4
3
|
require 'reek/rake/task'
|
5
4
|
require 'rubocop/rake_task'
|
6
5
|
|
7
|
-
task default: %i
|
6
|
+
task default: %i[test rubocop reek]
|
8
7
|
|
9
8
|
Rake::TestTask.new do |task|
|
10
9
|
task.pattern = 'test/**/*_test.rb'
|
@@ -13,7 +12,6 @@ end
|
|
13
12
|
|
14
13
|
Reek::Rake::Task.new do |task|
|
15
14
|
task.fail_on_error = false
|
16
|
-
task.reek_opts = '--no-wiki-links'
|
17
15
|
end
|
18
16
|
|
19
17
|
RuboCop::RakeTask.new do |task|
|
data/bin/signore
CHANGED
data/gems.locked
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
signore (0.7.0)
|
5
|
+
lovely_rufus (~> 1.0)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
ast (2.4.3)
|
11
|
+
bigdecimal (3.1.9)
|
12
|
+
concurrent-ruby (1.3.5)
|
13
|
+
dry-configurable (1.3.0)
|
14
|
+
dry-core (~> 1.1)
|
15
|
+
zeitwerk (~> 2.6)
|
16
|
+
dry-core (1.1.0)
|
17
|
+
concurrent-ruby (~> 1.0)
|
18
|
+
logger
|
19
|
+
zeitwerk (~> 2.6)
|
20
|
+
dry-inflector (1.2.0)
|
21
|
+
dry-initializer (3.2.0)
|
22
|
+
dry-logic (1.6.0)
|
23
|
+
bigdecimal
|
24
|
+
concurrent-ruby (~> 1.0)
|
25
|
+
dry-core (~> 1.1)
|
26
|
+
zeitwerk (~> 2.6)
|
27
|
+
dry-schema (1.14.1)
|
28
|
+
concurrent-ruby (~> 1.0)
|
29
|
+
dry-configurable (~> 1.0, >= 1.0.1)
|
30
|
+
dry-core (~> 1.1)
|
31
|
+
dry-initializer (~> 3.2)
|
32
|
+
dry-logic (~> 1.5)
|
33
|
+
dry-types (~> 1.8)
|
34
|
+
zeitwerk (~> 2.6)
|
35
|
+
dry-types (1.8.2)
|
36
|
+
bigdecimal (~> 3.0)
|
37
|
+
concurrent-ruby (~> 1.0)
|
38
|
+
dry-core (~> 1.0)
|
39
|
+
dry-inflector (~> 1.0)
|
40
|
+
dry-logic (~> 1.4)
|
41
|
+
zeitwerk (~> 2.6)
|
42
|
+
json (2.12.0)
|
43
|
+
language_server-protocol (3.17.0.5)
|
44
|
+
lint_roller (1.1.0)
|
45
|
+
logger (1.7.0)
|
46
|
+
lovely_rufus (1.3.0)
|
47
|
+
minitest (5.25.5)
|
48
|
+
minitest-focus (1.4.0)
|
49
|
+
minitest (>= 4, < 6)
|
50
|
+
parallel (1.27.0)
|
51
|
+
parser (3.3.8.0)
|
52
|
+
ast (~> 2.4.1)
|
53
|
+
racc
|
54
|
+
prism (1.4.0)
|
55
|
+
racc (1.8.1)
|
56
|
+
rainbow (3.1.1)
|
57
|
+
rake (13.2.1)
|
58
|
+
reek (6.5.0)
|
59
|
+
dry-schema (~> 1.13)
|
60
|
+
logger (~> 1.6)
|
61
|
+
parser (~> 3.3.0)
|
62
|
+
rainbow (>= 2.0, < 4.0)
|
63
|
+
rexml (~> 3.1)
|
64
|
+
regexp_parser (2.10.0)
|
65
|
+
rexml (3.4.1)
|
66
|
+
rubocop (1.75.6)
|
67
|
+
json (~> 2.3)
|
68
|
+
language_server-protocol (~> 3.17.0.2)
|
69
|
+
lint_roller (~> 1.1.0)
|
70
|
+
parallel (~> 1.10)
|
71
|
+
parser (>= 3.3.0.2)
|
72
|
+
rainbow (>= 2.2.2, < 4.0)
|
73
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
74
|
+
rubocop-ast (>= 1.44.0, < 2.0)
|
75
|
+
ruby-progressbar (~> 1.7)
|
76
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
77
|
+
rubocop-ast (1.44.1)
|
78
|
+
parser (>= 3.3.7.2)
|
79
|
+
prism (~> 1.4)
|
80
|
+
ruby-progressbar (1.13.0)
|
81
|
+
unicode-display_width (3.1.4)
|
82
|
+
unicode-emoji (~> 4.0, >= 4.0.4)
|
83
|
+
unicode-emoji (4.0.4)
|
84
|
+
zeitwerk (2.7.2)
|
85
|
+
|
86
|
+
PLATFORMS
|
87
|
+
ruby
|
88
|
+
|
89
|
+
DEPENDENCIES
|
90
|
+
minitest (~> 5.6)
|
91
|
+
minitest-focus (~> 1.1)
|
92
|
+
rake (~> 13.0)
|
93
|
+
reek (~> 6.0)
|
94
|
+
rubocop (~> 1.0)
|
95
|
+
signore!
|
96
|
+
|
97
|
+
BUNDLED WITH
|
98
|
+
2.6.9
|
data/{Gemfile → gems.rb}
RENAMED
data/lib/signore/cli.rb
CHANGED
@@ -1,15 +1,14 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require 'forwardable'
|
4
2
|
require_relative 'repo'
|
5
3
|
require_relative 'settings'
|
4
|
+
require_relative 'sig_finder'
|
6
5
|
require_relative 'sig_from_stream'
|
7
6
|
|
8
7
|
module Signore
|
9
8
|
class CLI
|
10
9
|
extend Forwardable
|
11
10
|
|
12
|
-
delegate %i
|
11
|
+
delegate %i[action tags] => :settings
|
13
12
|
|
14
13
|
def initialize(args = ARGV, repo: Repo.new)
|
15
14
|
@settings = Settings.new(args)
|
@@ -29,7 +28,7 @@ module Signore
|
|
29
28
|
attr_reader :repo, :settings
|
30
29
|
|
31
30
|
def prego
|
32
|
-
sig =
|
31
|
+
sig = SigFinder.find(repo.sigs, tags: tags)
|
33
32
|
puts case
|
34
33
|
when repo.empty? then 'No signatures found.'
|
35
34
|
when sig.empty? then "Sadly no signatures are tagged #{tags}."
|
@@ -38,7 +37,7 @@ module Signore
|
|
38
37
|
end
|
39
38
|
|
40
39
|
def create_sig_from(input)
|
41
|
-
SigFromStream.
|
40
|
+
SigFromStream.call(input, tags: tags).tap { |sig| repo << sig }
|
42
41
|
end
|
43
42
|
end
|
44
43
|
end
|
data/lib/signore/repo.rb
CHANGED
@@ -1,53 +1,55 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require 'forwardable'
|
2
|
+
require 'pathname'
|
4
3
|
require 'yaml/store'
|
5
|
-
require_relative '
|
6
|
-
require_relative 'settings'
|
7
|
-
require_relative 'sig_finder'
|
4
|
+
require_relative 'signature'
|
8
5
|
require_relative 'tags'
|
9
6
|
|
10
7
|
module Signore
|
11
8
|
class Repo
|
9
|
+
class << self
|
10
|
+
def default_path
|
11
|
+
dir = ENV.fetch('XDG_DATA_HOME') { File.expand_path('~/.local/share') }
|
12
|
+
Pathname.new(dir) / 'signore' / 'signatures.yml'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
12
16
|
extend Forwardable
|
13
17
|
|
14
|
-
def initialize(path:
|
15
|
-
@path
|
16
|
-
@sig_finder = sig_finder
|
18
|
+
def initialize(path: self.class.default_path)
|
19
|
+
@path = path
|
17
20
|
convert if legacy?
|
18
21
|
end
|
19
22
|
|
20
|
-
def <<(
|
21
|
-
|
23
|
+
def <<(signature)
|
24
|
+
self.hashes = hashes + [signature.to_h]
|
22
25
|
end
|
23
26
|
|
24
|
-
delegate empty?: :
|
25
|
-
|
26
|
-
def find(tags: Tags.new)
|
27
|
-
sig_finder.find(sigs, tags: tags)
|
28
|
-
end
|
27
|
+
delegate empty?: :hashes
|
29
28
|
|
30
29
|
def sigs
|
31
|
-
|
32
|
-
hashes = store.transaction(true) { store.fetch('signatures', []) }
|
33
|
-
hashes.map(&Mapper.method(:from_h))
|
34
|
-
end
|
30
|
+
hashes.map(&Signature.method(:from_h))
|
35
31
|
end
|
36
32
|
|
37
33
|
private
|
38
34
|
|
39
|
-
attr_reader :path
|
35
|
+
attr_reader :path
|
40
36
|
|
41
37
|
def convert
|
42
|
-
|
43
|
-
store['signatures'] = store.fetch('signatures', []).map(&:to_h)
|
44
|
-
end
|
38
|
+
self.hashes = hashes.map(&:to_h)
|
45
39
|
end
|
46
40
|
|
47
41
|
def legacy?
|
48
42
|
path.exist? and path.read.include?('Signore::Signature')
|
49
43
|
end
|
50
44
|
|
45
|
+
def hashes
|
46
|
+
store.transaction(true) { store.fetch('signatures', []) }
|
47
|
+
end
|
48
|
+
|
49
|
+
def hashes=(hashes)
|
50
|
+
store.transaction { store['signatures'] = hashes }
|
51
|
+
end
|
52
|
+
|
51
53
|
def store
|
52
54
|
@store ||= begin
|
53
55
|
path.dirname.mkpath
|
data/lib/signore/settings.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require 'pathname'
|
4
2
|
require_relative 'tags'
|
5
3
|
|
@@ -13,15 +11,9 @@ module Signore
|
|
13
11
|
args.first
|
14
12
|
end
|
15
13
|
|
16
|
-
# :reek:UtilityFunction
|
17
|
-
def repo_path
|
18
|
-
dir = ENV.fetch('XDG_DATA_HOME') { File.expand_path('~/.local/share') }
|
19
|
-
Pathname.new("#{dir}/signore/signatures.yml")
|
20
|
-
end
|
21
|
-
|
22
14
|
def tags
|
23
15
|
negated, required = tag_names.partition { |name| name.start_with?('~') }
|
24
|
-
Tags.new(forbidden: negated.map { |neg| neg[1
|
16
|
+
Tags.new(forbidden: negated.map { |neg| neg[1..] }, required: required)
|
25
17
|
end
|
26
18
|
|
27
19
|
private
|
@@ -29,7 +21,7 @@ module Signore
|
|
29
21
|
attr_reader :args
|
30
22
|
|
31
23
|
def tag_names
|
32
|
-
args[
|
24
|
+
args.empty? ? [] : args[1..]
|
33
25
|
end
|
34
26
|
end
|
35
27
|
end
|
data/lib/signore/sig_finder.rb
CHANGED
@@ -1,21 +1,13 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require_relative 'signature'
|
4
2
|
require_relative 'tags'
|
5
3
|
|
6
4
|
module Signore
|
7
|
-
|
8
|
-
|
9
|
-
@random = random
|
10
|
-
end
|
5
|
+
module SigFinder
|
6
|
+
module_function
|
11
7
|
|
12
|
-
def find(sigs, tags: Tags.new)
|
8
|
+
def find(sigs, random: Random.new, tags: Tags.new)
|
13
9
|
shuffled = sigs.shuffle(random: random)
|
14
10
|
shuffled.find(-> { Signature.new }) { |sig| tags.match?(sig.tags) }
|
15
11
|
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
attr_reader :random
|
20
12
|
end
|
21
13
|
end
|
@@ -1,12 +1,10 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require_relative 'signature'
|
4
2
|
require_relative 'tags'
|
5
3
|
|
6
4
|
module Signore
|
7
5
|
class SigFromStream
|
8
|
-
def self.
|
9
|
-
new(input, tags: tags).
|
6
|
+
def self.call(input, tags: Tags.new)
|
7
|
+
new(input, tags: tags).call
|
10
8
|
end
|
11
9
|
|
12
10
|
def initialize(input, tags: Tags.new)
|
@@ -14,31 +12,22 @@ module Signore
|
|
14
12
|
@tags = tags
|
15
13
|
end
|
16
14
|
|
17
|
-
def
|
15
|
+
def call
|
18
16
|
Signature.new(author: params.author, source: params.source,
|
19
17
|
subject: params.subject, tags: tags.required,
|
20
18
|
text: params.text)
|
21
19
|
end
|
22
20
|
|
21
|
+
Params = Struct.new(:text, :author, :subject, :source)
|
22
|
+
|
23
23
|
private
|
24
24
|
|
25
25
|
attr_reader :input, :tags
|
26
26
|
|
27
|
-
Params = Struct.new(:text, :author, :subject, :source)
|
28
|
-
|
29
27
|
def get_param(param)
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
input.gets.strip
|
34
|
-
end
|
35
|
-
|
36
|
-
# :reek:FeatureEnvy
|
37
|
-
def get_text # rubocop:disable AccessorMethodName
|
38
|
-
puts 'text?'
|
39
|
-
value = ''
|
40
|
-
value += input.gets until value.lines.to_a.last == "\n"
|
41
|
-
value.strip
|
28
|
+
puts "\n#{param}?"
|
29
|
+
separator = param == :text ? "\n\n" : "\n"
|
30
|
+
input.gets(separator).strip
|
42
31
|
end
|
43
32
|
|
44
33
|
def params
|
data/lib/signore/signature.rb
CHANGED
@@ -1,31 +1,29 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require 'lovely_rufus'
|
4
2
|
|
5
3
|
module Signore
|
6
|
-
Signature
|
4
|
+
class Signature < Struct.new(:text, :author, :source, :subject, :tags)
|
5
|
+
class << self
|
6
|
+
def from_h(hash)
|
7
|
+
new(**hash.transform_keys(&:to_sym))
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
7
11
|
def initialize(author: '', source: '', subject: '', tags: [], text: '')
|
8
|
-
super
|
12
|
+
super(text, author, source, subject, tags)
|
9
13
|
end
|
10
14
|
|
11
15
|
def empty?
|
12
16
|
to_s.empty?
|
13
17
|
end
|
14
18
|
|
15
|
-
undef text if defined?(:text)
|
16
|
-
def text
|
17
|
-
self[:text] or ''
|
18
|
-
end
|
19
|
-
|
20
19
|
def to_h
|
21
|
-
super.map { |key, val|
|
22
|
-
|
23
|
-
end
|
20
|
+
super.map { |key, val| { key.to_s => val } }.reduce({}, :merge)
|
21
|
+
.compact.reject { |_, val| val.empty? }
|
24
22
|
end
|
25
23
|
|
26
24
|
def to_s
|
27
25
|
spaced = text.gsub("\n", "\n\n")
|
28
|
-
wrapped = LovelyRufus.wrap(spaced, width:
|
26
|
+
wrapped = LovelyRufus.wrap(spaced, width: 50)
|
29
27
|
squeezed = wrapped.gsub("\n\n", "\n").chomp
|
30
28
|
squeezed + meta_for(squeezed)
|
31
29
|
end
|
data/lib/signore/tags.rb
CHANGED
@@ -1,17 +1,15 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
module Signore
|
4
2
|
Tags = Struct.new(:forbidden, :required) do
|
5
3
|
def initialize(forbidden: [], required: [])
|
6
|
-
super
|
4
|
+
super(forbidden, required)
|
7
5
|
end
|
8
6
|
|
9
7
|
def match?(sig_tags)
|
10
|
-
(required & sig_tags) == required and (
|
8
|
+
(required & sig_tags) == required and not forbidden.intersect?(sig_tags) # rubocop:disable Style/BitwisePredicate
|
11
9
|
end
|
12
10
|
|
13
11
|
def to_s
|
14
|
-
(required + forbidden.map { |tag|
|
12
|
+
(required + forbidden.map { |tag| "~#{tag}" }).join(' ')
|
15
13
|
end
|
16
14
|
end
|
17
15
|
end
|
data/lib/signore.rb
CHANGED
data/signore.gemspec
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require 'English'
|
4
2
|
require 'pathname'
|
5
3
|
|
@@ -9,28 +7,23 @@ Gem::Specification.new do |gem|
|
|
9
7
|
'random ones based on their tags'
|
10
8
|
gem.email = 'chastell@chastell.net'
|
11
9
|
gem.homepage = 'http://github.com/chastell/signore'
|
12
|
-
gem.license = 'AGPL-3.0'
|
10
|
+
gem.license = 'AGPL-3.0-or-later'
|
13
11
|
gem.name = 'signore'
|
14
12
|
gem.summary = 'signore: an email signature manager/randomiser'
|
15
|
-
gem.version = '0.
|
13
|
+
gem.version = '1.0.0'
|
16
14
|
|
17
|
-
gem.required_ruby_version = '~> 2
|
15
|
+
gem.required_ruby_version = '~> 3.2'
|
18
16
|
|
19
17
|
gem.files = `git ls-files -z`.split "\0"
|
20
18
|
gem.executables = gem.files.grep(%r{^bin/}).map { |path| File.basename(path) }
|
21
|
-
gem.test_files = gem.files.grep(%r{^test/.*\.rb$})
|
22
|
-
|
23
|
-
gem.cert_chain = ['certs/chastell.pem']
|
24
|
-
if Pathname.new($PROGRAM_NAME).basename == Pathname.new('gem')
|
25
|
-
gem.signing_key = Pathname.new('~/.ssh/gem-private_key.pem').expand_path
|
26
|
-
end
|
27
19
|
|
28
20
|
gem.add_dependency 'lovely_rufus', '~> 1.0'
|
29
21
|
|
30
|
-
gem.add_development_dependency 'bogus', '~> 0.1.3'
|
31
22
|
gem.add_development_dependency 'minitest', '~> 5.6'
|
32
23
|
gem.add_development_dependency 'minitest-focus', '~> 1.1'
|
33
|
-
gem.add_development_dependency 'rake', '~>
|
34
|
-
gem.add_development_dependency 'reek', '~>
|
35
|
-
gem.add_development_dependency 'rubocop', '~>
|
24
|
+
gem.add_development_dependency 'rake', '~> 13.0'
|
25
|
+
gem.add_development_dependency 'reek', '~> 6.0'
|
26
|
+
gem.add_development_dependency 'rubocop', '~> 1.0'
|
27
|
+
|
28
|
+
gem.metadata['rubygems_mfa_required'] = 'true'
|
36
29
|
end
|
data/test/fixtures/wrapper.yml
CHANGED
@@ -16,8 +16,9 @@
|
|
16
16
|
- - !ruby/struct:Signore::Signature
|
17
17
|
text: It may look like I’m just sitting here doing nothing. But I’m really actively waiting for all my problems to go away.
|
18
18
|
- |-
|
19
|
-
It may look like I’m just sitting here
|
20
|
-
I’m really actively
|
19
|
+
It may look like I’m just sitting here
|
20
|
+
doing nothing. But I’m really actively
|
21
|
+
waiting for all my problems to go away.
|
21
22
|
|
22
23
|
# meta info is right-aligned to the longest line
|
23
24
|
- - !ruby/struct:Signore::Signature
|
@@ -37,11 +38,13 @@
|
|
37
38
|
author: M. Edward (Ed) Borasky, Matt Lawrence, Gregory Brown
|
38
39
|
source: ruby-talk
|
39
40
|
- |-
|
40
|
-
‘The Ruby community should proceed
|
41
|
-
|
41
|
+
‘The Ruby community should proceed
|
42
|
+
with all deliberate speed towards
|
43
|
+
ISO standardization of the language.’
|
42
44
|
‘Yeah, look what it did to Forth.’
|
43
|
-
‘Don’t just say it, show it.
|
44
|
-
|
45
|
+
‘Don’t just say it, show it.
|
46
|
+
<http://vividpicture.com/aleks/atari/forth.jpg>’
|
47
|
+
[M. Edward (Ed) Borasky, Matt Lawrence, Gregory Brown, ruby-talk]
|
45
48
|
|
46
49
|
# long meta info is flushed left
|
47
50
|
- - !ruby/struct:Signore::Signature
|
@@ -53,14 +56,18 @@
|
|
53
56
|
author: Spehro Pefhany, CyberCypher, Jess Askin, don groves
|
54
57
|
source: alt.usage.english
|
55
58
|
- |-
|
56
|
-
‘The Guardian also had a pre-election column, in
|
57
|
-
“ironic joke” was open to other
|
58
|
-
|
59
|
-
|
60
|
-
|
59
|
+
‘The Guardian also had a pre-election column, in
|
60
|
+
which an allegedly “ironic joke” was open to other
|
61
|
+
interpretations: “John Wilkes Booth, Lee Harvey
|
62
|
+
Oswald, John Hinckley Jr., where are you now
|
63
|
+
that we need you?” They removed the column
|
64
|
+
from on-line access and apologized.’
|
65
|
+
‘They should have. Hinckley missed
|
66
|
+
the vital spot, so who needs him?’
|
61
67
|
‘As everybody knows, Reagan was killed in
|
62
68
|
that attack and a lookalike was substituted.’
|
63
|
-
‘You mean we were governed
|
69
|
+
‘You mean we were governed
|
70
|
+
all those years by an ACTOR!’
|
64
71
|
[Spehro Pefhany, CyberCypher, Jess Askin, don groves, alt.usage.english]
|
65
72
|
|
66
73
|
# wrapping doesn’t left one-letter words at the end of lines
|
@@ -77,10 +84,11 @@
|
|
77
84
|
text: Better to teach a man to fish than to give him a fish. And if he can’t be bothered to learn to fish and starves to death, that’s a good enough outcome for me.
|
78
85
|
author: Steve VanDevender
|
79
86
|
- |-
|
80
|
-
Better to teach a man to fish than to give
|
81
|
-
And if he can’t be bothered
|
82
|
-
to
|
83
|
-
|
87
|
+
Better to teach a man to fish than to give
|
88
|
+
him a fish. And if he can’t be bothered
|
89
|
+
to learn to fish and starves to death,
|
90
|
+
that’s a good enough outcome for me.
|
91
|
+
[Steve VanDevender]
|
84
92
|
|
85
93
|
# for two-line signatures, first line is considered for hangouts
|
86
94
|
- - !ruby/struct:Signore::Signature
|
@@ -89,6 +97,7 @@
|
|
89
97
|
subject: on subway engines
|
90
98
|
source: asr
|
91
99
|
- |-
|
92
|
-
Well, the old ones go mmmmmbbbbzzzzttteeeeeep
|
93
|
-
and the new ones go
|
94
|
-
|
100
|
+
Well, the old ones go mmmmmbbbbzzzzttteeeeeep
|
101
|
+
as they start up and the new ones go
|
102
|
+
whupwhupwhupwhooopwhooooopwhooooooommmmmmmmmm.
|
103
|
+
[Graham Reed on subway engines, asr]
|