jb3 0.0.1
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 +7 -0
- data/README.md +3 -0
- data/lib/jb3/version.rb +5 -0
- data/lib/jb3.rb +112 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ee0f280bd573785df12e50573fc8ab936cfc414cc997c7a78ff3c96f89548c83
|
4
|
+
data.tar.gz: c0019452fa6f029b217c645139c16d8f61d140733cf7b5c73101b93151168d38
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 44a5cad1528fc472f48b499ccb18148f57f2e956c820332a8f37c7fdcc972b7ffb4d82339723e8ab3c627734eda8de14f4c9aa92fd8310331a928aec7f92f06e
|
7
|
+
data.tar.gz: 8239f0524afbcba269ec0e1ad572993f9c65ed7a4aec497f6150aa12414502fbfe59b64508596f7c5d5c2aa00ebc4b9c3271ebe255a4b443c8653d4f1918cc1b
|
data/README.md
ADDED
data/lib/jb3/version.rb
ADDED
data/lib/jb3.rb
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'jb3/version'
|
4
|
+
require 'logger'
|
5
|
+
|
6
|
+
module JB3
|
7
|
+
class << self
|
8
|
+
attr_accessor :logger
|
9
|
+
attr_accessor :logger_name
|
10
|
+
private :logger=
|
11
|
+
|
12
|
+
def create_logger
|
13
|
+
logger = Logger.new($stderr)
|
14
|
+
logger.formatter =
|
15
|
+
proc do |severity, _datetime, _progname, msg|
|
16
|
+
colored_severity =
|
17
|
+
case severity
|
18
|
+
when 'INFO', 'DEBUG'
|
19
|
+
Util.light_grey(severity)
|
20
|
+
when 'WARN'
|
21
|
+
Util.magenta(severity)
|
22
|
+
when 'ERROR', 'FATAL'
|
23
|
+
Util.bold(Util.red(severity))
|
24
|
+
else
|
25
|
+
raise "Unknown log level? #{severity}"
|
26
|
+
end
|
27
|
+
|
28
|
+
prefix = "[#{logger_name}] " if logger_name
|
29
|
+
|
30
|
+
Util.light_grey("#{prefix}#{colored_severity} #{msg}\n")
|
31
|
+
end
|
32
|
+
|
33
|
+
logger
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
self.logger = create_logger
|
38
|
+
|
39
|
+
module Util
|
40
|
+
# Omit keys from a hash
|
41
|
+
#
|
42
|
+
# @example
|
43
|
+
def self.omit(hash, keys)
|
44
|
+
hash.reject { |key,| keys.include?(key) }
|
45
|
+
end
|
46
|
+
|
47
|
+
# Same as #omit, but all keys are validated.
|
48
|
+
def self.omit!(hash, keys)
|
49
|
+
keys.each do |key|
|
50
|
+
next if hash.key?(key)
|
51
|
+
|
52
|
+
raise("Expected #{key.inspect} to exist in target hash!")
|
53
|
+
end
|
54
|
+
|
55
|
+
omit(hash, keys)
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.one(array)
|
59
|
+
return array.first if array.one?
|
60
|
+
|
61
|
+
raise SizeError, array.size
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.slice!(hash, keys)
|
65
|
+
hash.slice(*keys).tap do |slice|
|
66
|
+
raise "Expected #{keys - slice.keys} to be present" unless slice.size.equal?(keys.size)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
module Color
|
71
|
+
def red(str)
|
72
|
+
colorize(str, 31)
|
73
|
+
end
|
74
|
+
|
75
|
+
def green(str)
|
76
|
+
colorize(str, 32)
|
77
|
+
end
|
78
|
+
|
79
|
+
def yellow(str)
|
80
|
+
colorize(str, 33)
|
81
|
+
end
|
82
|
+
|
83
|
+
def light_blue(str)
|
84
|
+
colorize(str, 36)
|
85
|
+
end
|
86
|
+
|
87
|
+
def bold(str)
|
88
|
+
colorize(str, 1)
|
89
|
+
end
|
90
|
+
|
91
|
+
def magenta(str)
|
92
|
+
colorize(str, 35)
|
93
|
+
end
|
94
|
+
|
95
|
+
def grey(str)
|
96
|
+
colorize(str, 243)
|
97
|
+
end
|
98
|
+
|
99
|
+
def light_grey(str)
|
100
|
+
colorize(str, 37)
|
101
|
+
end
|
102
|
+
|
103
|
+
private
|
104
|
+
|
105
|
+
def colorize(str, color_code)
|
106
|
+
"\e[#{color_code}m#{str}\e[0m"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
extend Color
|
111
|
+
end
|
112
|
+
end
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jb3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- John Backus
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-11-18 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: If you are not John B, this is probably not for you
|
14
|
+
email:
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- README.md
|
20
|
+
- lib/jb3.rb
|
21
|
+
- lib/jb3/version.rb
|
22
|
+
homepage: https://johnback.us
|
23
|
+
licenses: []
|
24
|
+
metadata:
|
25
|
+
rubygems_mfa_required: 'true'
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 2.6.0
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubygems_version: 3.1.4
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: Collection of utility tools for John B.
|
45
|
+
test_files: []
|