check_please 0.3.0 → 0.5.2
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/.gitignore +3 -1
- data/Gemfile.lock +1 -1
- data/README.md +306 -29
- data/Rakefile +50 -3
- data/bin/gh-md-toc +350 -0
- data/lib/check_please.rb +136 -14
- data/lib/check_please/cli.rb +4 -37
- data/lib/check_please/cli/parser.rb +24 -19
- data/lib/check_please/cli/runner.rb +3 -3
- data/lib/check_please/comparison.rb +135 -40
- data/lib/check_please/diff.rb +3 -3
- data/lib/check_please/diffs.rb +13 -8
- data/lib/check_please/error.rb +24 -0
- data/lib/check_please/flag.rb +88 -0
- data/lib/check_please/flags.rb +46 -0
- data/lib/check_please/path.rb +151 -6
- data/lib/check_please/path_segment.rb +88 -0
- data/lib/check_please/printers.rb +8 -7
- data/lib/check_please/refinements.rb +16 -0
- data/lib/check_please/reification.rb +50 -0
- data/lib/check_please/version.rb +1 -1
- data/usage_examples.rb +24 -2
- metadata +8 -3
- data/lib/check_please/cli/flag.rb +0 -40
@@ -0,0 +1,50 @@
|
|
1
|
+
module CheckPlease
|
2
|
+
|
3
|
+
module Reification
|
4
|
+
def self.included(receiver)
|
5
|
+
receiver.extend ClassMethods
|
6
|
+
receiver.send :include, InstanceMethods
|
7
|
+
end
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def reifiable
|
11
|
+
@_reifiable ||= []
|
12
|
+
end
|
13
|
+
|
14
|
+
def can_reify(*klasses)
|
15
|
+
klasses.flatten!
|
16
|
+
|
17
|
+
unless ( klasses - [nil] ).all? { |e| e.is_a?(Class) }
|
18
|
+
raise ArgumentError, "classes (or nil) only, please"
|
19
|
+
end
|
20
|
+
|
21
|
+
reifiable.concat klasses
|
22
|
+
reifiable.uniq!
|
23
|
+
nil
|
24
|
+
end
|
25
|
+
|
26
|
+
def reify(primitive_or_object)
|
27
|
+
case primitive_or_object
|
28
|
+
when self ; return primitive_or_object
|
29
|
+
when Array ; return primitive_or_object.map { |e| reify(e) }
|
30
|
+
when *reifiable ; return new(primitive_or_object)
|
31
|
+
end
|
32
|
+
# note early return ^^^
|
33
|
+
|
34
|
+
# that didn't work? complain!
|
35
|
+
acceptable = reifiable.map { |e| Class === e ? e.name : e.inspect }
|
36
|
+
raise ArgumentError, <<~EOF
|
37
|
+
#{self}.reify was given: #{primitive_or_object.inspect}
|
38
|
+
but only accepts: #{acceptable.join(", ")}
|
39
|
+
EOF
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
module InstanceMethods
|
44
|
+
def reify(x)
|
45
|
+
self.class.reify(x)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
data/lib/check_please/version.rb
CHANGED
data/usage_examples.rb
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
require 'check_please'
|
2
2
|
|
3
|
-
reference = { foo
|
4
|
-
candidate = { bar
|
3
|
+
reference = { "foo" => "wibble" }
|
4
|
+
candidate = { "bar" => "wibble" }
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
##### Printing diffs #####
|
5
9
|
|
6
10
|
puts CheckPlease.render_diff(reference, candidate)
|
7
11
|
|
@@ -12,3 +16,21 @@ _ = <<EOF
|
|
12
16
|
missing | /foo | wibble |
|
13
17
|
extra | /bar | | wibble
|
14
18
|
EOF
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
##### Doing your own thing with diffs #####
|
23
|
+
|
24
|
+
diffs = CheckPlease.diff(reference, candidate)
|
25
|
+
|
26
|
+
# `diffs` is a custom collection (type: CheckPlease::Diffs) that contains
|
27
|
+
# individual Diff objects for you to inspect as you see fit.
|
28
|
+
#
|
29
|
+
# If you come up with a useful way to present these, feel free to submit a PR
|
30
|
+
# with a new class in `lib/check_please/printers` !
|
31
|
+
|
32
|
+
# To print these in the console, you can just do:
|
33
|
+
puts diffs
|
34
|
+
|
35
|
+
# If for some reason you want to print the JSON version, it gets a little more verbose:
|
36
|
+
puts diffs.to_s(format: :json)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: check_please
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Livingston-Gray
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: table_print
|
@@ -71,23 +71,28 @@ files:
|
|
71
71
|
- README.md
|
72
72
|
- Rakefile
|
73
73
|
- bin/console
|
74
|
+
- bin/gh-md-toc
|
74
75
|
- bin/setup
|
75
76
|
- check_please.gemspec
|
76
77
|
- exe/check_please
|
77
78
|
- lib/check_please.rb
|
78
79
|
- lib/check_please/cli.rb
|
79
|
-
- lib/check_please/cli/flag.rb
|
80
80
|
- lib/check_please/cli/parser.rb
|
81
81
|
- lib/check_please/cli/runner.rb
|
82
82
|
- lib/check_please/comparison.rb
|
83
83
|
- lib/check_please/diff.rb
|
84
84
|
- lib/check_please/diffs.rb
|
85
85
|
- lib/check_please/error.rb
|
86
|
+
- lib/check_please/flag.rb
|
87
|
+
- lib/check_please/flags.rb
|
86
88
|
- lib/check_please/path.rb
|
89
|
+
- lib/check_please/path_segment.rb
|
87
90
|
- lib/check_please/printers.rb
|
88
91
|
- lib/check_please/printers/base.rb
|
89
92
|
- lib/check_please/printers/json.rb
|
90
93
|
- lib/check_please/printers/table_print.rb
|
94
|
+
- lib/check_please/refinements.rb
|
95
|
+
- lib/check_please/reification.rb
|
91
96
|
- lib/check_please/version.rb
|
92
97
|
- usage_examples.rb
|
93
98
|
homepage: https://github.com/RealGeeks/check_please
|
@@ -1,40 +0,0 @@
|
|
1
|
-
module CheckPlease
|
2
|
-
module CLI
|
3
|
-
|
4
|
-
class Flag
|
5
|
-
ATTR_NAMES = %i[ short long desc key block ]
|
6
|
-
attr_accessor(*ATTR_NAMES)
|
7
|
-
|
8
|
-
def initialize(*args)
|
9
|
-
self.short = args.shift if args.any?
|
10
|
-
self.long = args.shift if args.any?
|
11
|
-
|
12
|
-
yield self if block_given?
|
13
|
-
|
14
|
-
missing = ATTR_NAMES.select { |e| self.send(e).nil? }
|
15
|
-
missing -= %i[ short ] # short is optional!
|
16
|
-
if missing.any?
|
17
|
-
raise ArgumentError, "Missing attributes: #{missing.join(', ')}"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def visit_option_parser(parser, options)
|
22
|
-
parser.on(short, long, desc) do |value|
|
23
|
-
block.call options, value
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def set_key(key, message = nil, &b)
|
28
|
-
raise ArgumentError if message && b
|
29
|
-
raise ArgumentError if !message && !b
|
30
|
-
|
31
|
-
self.key = key
|
32
|
-
self.block = ->(options, value) {
|
33
|
-
b ||= message.to_sym.to_proc
|
34
|
-
options[key] = b.call(value)
|
35
|
-
}
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|