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.
Files changed (5) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +3 -0
  3. data/lib/jb3/version.rb +5 -0
  4. data/lib/jb3.rb +112 -0
  5. 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
@@ -0,0 +1,3 @@
1
+ # JB3
2
+
3
+ A loose collection of hacky scripts and library-ish code that I reuse frequently.
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JB3
4
+ VERSION = '0.0.1'
5
+ end
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: []