jb3 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []