duffy 1.0.1 → 1.0.6
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/.github/workflows/rspec.yml +17 -0
- data/README.md +4 -8
- data/bin/console +14 -0
- data/doc/markdown.png +0 -0
- data/duffy.gemspec +4 -2
- data/lib/duffy/array.rb +34 -2
- data/lib/duffy/string.rb +13 -3
- data/lib/duffy/system.rb +15 -0
- data/lib/duffy/version.rb +6 -1
- data/spec/array_spec.rb +29 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/string_spec.rb +83 -0
- data/spec/system_spec.rb +34 -29
- metadata +33 -16
- data/.travis.yml +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b26949061663fcfd666bc4479d89671494dfc81d2e14a3bb3189970de202255
|
4
|
+
data.tar.gz: e8dc1912140fc07fb39c4f9d15070c26397d91b9cd63fdaa7fc164e889e4cf5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2816bf8e70c972cc7ce9e3066f8d54d9c93cb8e00958e2bd7ada8ab060163958faaeff52ca973af982039994acdcef6a0148b907d2193976ed4cbcf0787bfa11
|
7
|
+
data.tar.gz: '065851c6e0a9e97533715eef0800390cd0811c2ecc3453871479be7fb9d85056fbdc4327c54cbf4555819e5aa81b5f82c1007cd94525c316c17bb905f980dae0'
|
@@ -0,0 +1,17 @@
|
|
1
|
+
name: RSpec
|
2
|
+
on: push
|
3
|
+
jobs:
|
4
|
+
test:
|
5
|
+
strategy:
|
6
|
+
fail-fast: false
|
7
|
+
matrix:
|
8
|
+
os: [ubuntu-latest, macos-latest]
|
9
|
+
ruby: [2.6, 2.7, '3.0', 3.1]
|
10
|
+
runs-on: ${{ matrix.os }}
|
11
|
+
steps:
|
12
|
+
- uses: actions/checkout@v2
|
13
|
+
- uses: ruby/setup-ruby@v1
|
14
|
+
with:
|
15
|
+
ruby-version: ${{ matrix.ruby }}
|
16
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
17
|
+
- run: bundle exec rake
|
data/README.md
CHANGED
@@ -1,9 +1,5 @@
|
|
1
1
|
# Duffy
|
2
2
|
|
3
|
-
[](https://travis-ci.org/duffyjp/duffy)
|
4
|
-
[](https://codeclimate.com/github/duffyjp/duffy)
|
5
|
-
[](https://codeclimate.com/github/duffyjp/duffy/coverage)
|
6
|
-
|
7
3
|
This is a collection of reusable things I don't want to keep duplicating in tons of projects.
|
8
4
|
|
9
5
|
## Installation
|
@@ -39,10 +35,10 @@ to_ssn | "123456789" | "123-45-6789"
|
|
39
35
|
|
40
36
|
|
41
37
|
## Array Patches:
|
42
|
-
Method | Example
|
43
|
-
|
44
|
-
to_box | ['abc', 123].to_box
|
45
|
-
|
38
|
+
Method | Example | Output
|
39
|
+
------------------|---------------------------|-------
|
40
|
+
to_box | ['abc', 123].to_box | 
|
41
|
+
to_markdown | [[1,2],[3,4]].to_markdown | 
|
46
42
|
|
47
43
|
## Date Patches:
|
48
44
|
* See config to set your organization's fiscal year start.
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "duffy"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/doc/markdown.png
ADDED
Binary file
|
data/duffy.gemspec
CHANGED
@@ -19,8 +19,10 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency 'activesupport' # Required for ActiveSupport::Configurable
|
22
|
-
spec.add_development_dependency "bundler"
|
23
|
-
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "bundler"
|
23
|
+
spec.add_development_dependency "rake"
|
24
24
|
spec.add_development_dependency "rails", '>= 5.0'
|
25
25
|
spec.add_development_dependency "rspec"
|
26
|
+
spec.add_development_dependency "simplecov"
|
27
|
+
|
26
28
|
end
|
data/lib/duffy/array.rb
CHANGED
@@ -10,8 +10,40 @@ class Array
|
|
10
10
|
def to_box(safe: true)
|
11
11
|
return nil if self.empty?
|
12
12
|
b = safe ? "+-++ | +++" : "╔─╦╗ ║ ╚╩╝"
|
13
|
-
out = (b[0] + self.map{ |x| b[1] * (x.to_s.length + 2) }.join(b[2]) + b[3])[0,80] + "\n"
|
13
|
+
out = (b[0] + self.map{ |x| b[1] * (x.to_s.gsub(/\e\[([;\d]+)?m/, '').length + 2) }.join(b[2]) + b[3])[0,80] + "\n"
|
14
14
|
out << (b[5,2] + self.join(b[4,3]) + b[4,2])[0,80] + "\n"
|
15
|
-
out << (b[7] + self.map{ |x| b[1] * (x.to_s.length + 2) }.join(b[8]) + b[9])[0,80]
|
15
|
+
out << (b[7] + self.map{ |x| b[1] * (x.to_s.gsub(/\e\[([;\d]+)?m/, '').length + 2) }.join(b[8]) + b[9])[0,80]
|
16
16
|
end
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
# Create a markdown table from a 2D Array
|
21
|
+
#
|
22
|
+
# puts [["Car", "Boat", Date.today, 5],["Horse", "Car", nil, 0]].to_markdown
|
23
|
+
# String | String | Date | Integer
|
24
|
+
# -------|--------|------------|---------
|
25
|
+
# Car | Boat | 2022-01-12 | 5
|
26
|
+
# Horse | Car | | 0
|
27
|
+
#
|
28
|
+
def to_markdown
|
29
|
+
raise "expected 2D array" unless self.first.is_a?(Array)
|
30
|
+
|
31
|
+
# Find max widths of data/headers: eg => [10, 25, 18, 21, 6]
|
32
|
+
widths = self.transpose.map{ |col| ([col.first.class.to_s.length] + col.map{ |i| i.to_s.length }).max }
|
33
|
+
|
34
|
+
# Use the class of each cell in the first row for the table headers.
|
35
|
+
out = self.first.map.with_index{|c,i| c.class.to_s.ljust(widths[i])}.join(" | ") + "\n"
|
36
|
+
out << out.gsub(/[^|]/, "-") + "\n"
|
37
|
+
|
38
|
+
# Left justify each cell
|
39
|
+
self.each do |row|
|
40
|
+
out << row.map(&:to_s).map.with_index{|c,i| c.ljust(widths[i])}.join(" | ") + "\n"
|
41
|
+
end
|
42
|
+
out
|
43
|
+
|
44
|
+
rescue => e
|
45
|
+
warn "Unable to generate table: #{e}"
|
46
|
+
nil
|
47
|
+
end
|
48
|
+
|
17
49
|
end
|
data/lib/duffy/string.rb
CHANGED
@@ -113,11 +113,11 @@ class String
|
|
113
113
|
string = (self.upcase == self)? self.downcase : self
|
114
114
|
|
115
115
|
result = ""
|
116
|
-
string.gsub(
|
116
|
+
string.gsub('_', ' ').split(/( [:.;?!][ ] | (?:[ ]|^)[""] )/x).each do |s|
|
117
117
|
s.gsub!(/ \b( [[:alpha:]] [[:lower:].'']* )\b /x) do |w|
|
118
118
|
# Skip words with inresult dots, e.g. "del.icio.us" or "example.com"
|
119
119
|
(w =~ / [[:alpha:]] [.] [[:alpha:]] /x) ? w : w.capitalize
|
120
|
-
end
|
120
|
+
end
|
121
121
|
|
122
122
|
# Lowercase our list of small words:
|
123
123
|
s.gsub!(/\b(#{small_re})\b/io) { |w| w.downcase }
|
@@ -135,9 +135,19 @@ class String
|
|
135
135
|
# Special Cases:
|
136
136
|
upcase_re = (Array(Duffy.configuration.upcase_custom) + Array(Duffy.configuration.upcase_default)).uniq.join("|")
|
137
137
|
|
138
|
+
# Names with apostrophes; O'Brian, De'Wayne. 3+ Skips "I've" "Haven't" etc.
|
139
|
+
result.gsub!(/([A-Z][a-z]*)'([a-z]{3,})/) { "#{$1}'#{$2.capitalize}" }
|
140
|
+
|
138
141
|
result.gsub!(/ V(s?)\. /, ' v\1. ') # "v." and "vs."
|
142
|
+
|
139
143
|
result.gsub!(/([''])S\b/, '\1s') # 'S (otherwise you get "the SEC'S decision")
|
144
|
+
|
140
145
|
result.gsub!(/\b(#{upcase_re})\b/i) { |w| w.upcase } unless upcase_re.blank?
|
141
|
-
|
146
|
+
|
147
|
+
# Squash repeated whitespace characters
|
148
|
+
result.gsub!(/\s+/, ' ')
|
149
|
+
|
150
|
+
# Strip leading / tailing whitespace and return
|
151
|
+
result.strip
|
142
152
|
end
|
143
153
|
end
|
data/lib/duffy/system.rb
CHANGED
@@ -92,6 +92,20 @@ module Duffy
|
|
92
92
|
0
|
93
93
|
end
|
94
94
|
|
95
|
+
# The battery percentage 0.0 .. 100.0
|
96
|
+
# nil if no battery or error reading value.
|
97
|
+
# Darwin: pmset -g batt
|
98
|
+
# Linux:
|
99
|
+
def battery_percent
|
100
|
+
case RUBY_PLATFORM
|
101
|
+
when /darwin/ then `pmset -g batt`.scan(/^.*\t(.*%);/)[0][0].to_f
|
102
|
+
when /linux/ then File.read("/sys/class/power_supply/BAT0/charge_now").to_i * 100 / File.read("/sys/class/power_supply/BAT0/charge_full").to_i
|
103
|
+
else nil
|
104
|
+
end
|
105
|
+
rescue
|
106
|
+
nil
|
107
|
+
end
|
108
|
+
|
95
109
|
# Memory available for use in Megabytes
|
96
110
|
# Darwin: vm_stat (Pages Free + Pages Inactive)
|
97
111
|
# Linux: Read /proc/meminfo
|
@@ -119,6 +133,7 @@ module Duffy
|
|
119
133
|
0
|
120
134
|
end
|
121
135
|
|
136
|
+
|
122
137
|
private
|
123
138
|
|
124
139
|
# [CPU USE, CPU IDLE]
|
data/lib/duffy/version.rb
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
module Duffy
|
2
|
-
VERSION = '1.0.
|
2
|
+
VERSION = '1.0.6'
|
3
3
|
end
|
4
4
|
|
5
5
|
# History
|
6
|
+
# 1.0.6 - Add to_markdown Array method.
|
7
|
+
# 1.0.5 - Update smart_titlecase to better accommodate names.
|
8
|
+
# 1.0.4 - Added battery_percent method.
|
9
|
+
# 1.0.3 - to_box methods now accept ANSI colored strings.
|
10
|
+
# 1.0.2 - Added SimpleCov and added some more String tests.
|
6
11
|
# 1.0.1 - Added String.to_box and Array.to_box. Nice for text banners.
|
7
12
|
# 1.0.0 - Using Shellwords to escape directory listing in System.freespace.
|
8
13
|
# 0.3.6 - Added disk freespace method. Looks at working directory.
|
data/spec/array_spec.rb
CHANGED
@@ -21,4 +21,33 @@ describe Array do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
end
|
24
|
+
|
25
|
+
describe "to_markdown" do
|
26
|
+
|
27
|
+
it "creates a markdown compatible table" do
|
28
|
+
array = [[1,2,3],[4,5,6],[7,8,9]]
|
29
|
+
expect(array.to_markdown).to eq "Integer | Integer | Integer\n--------|---------|---------\n1 | 2 | 3 \n4 | 5 | 6 \n7 | 8 | 9 \n"
|
30
|
+
end
|
31
|
+
|
32
|
+
it "uses the first row for column header names" do
|
33
|
+
array = [[1, "a", Date.today]]
|
34
|
+
expect(array.to_markdown.lines.first).to eq "Integer | String | Date \n"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "arrays with very short data format correctly" do
|
38
|
+
array = [[1,2,3],[4,5,6],[7,8,9]]
|
39
|
+
expect(array.to_markdown).to eq "Integer | Integer | Integer\n--------|---------|---------\n1 | 2 | 3 \n4 | 5 | 6 \n7 | 8 | 9 \n"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "rejects non-2D arrays" do
|
43
|
+
array = ["Wisconsin", "cheese"]
|
44
|
+
expect{array.to_markdown}.to output("Unable to generate table: expected 2D array\n").to_stderr
|
45
|
+
end
|
46
|
+
|
47
|
+
it "rejects arrays with inconsistent dimensions" do
|
48
|
+
array = [[1],[2,3],[4,5,6]]
|
49
|
+
expect{array.to_markdown}.to output("Unable to generate table: element size differs (2 should be 1)\n").to_stderr
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
24
53
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/string_spec.rb
CHANGED
@@ -2,6 +2,89 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe String do
|
4
4
|
|
5
|
+
describe "md5" do
|
6
|
+
it "generates an md5sum of the given string" do
|
7
|
+
expect("foobar".md5).to eq "3858f62230ac3c915f300c664312c63f"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "pretty_phone" do
|
12
|
+
it "formats an American phone number with Area Code" do
|
13
|
+
expect("1234567890".pretty_phone).to eq "(123) 456-7890"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "formats an American phone number without Area Code" do
|
17
|
+
expect("4567890".pretty_phone).to eq "456-7890"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "leaves longer strings alone" do
|
21
|
+
expect("11234567890".pretty_phone).to eq "11234567890"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "leaves shorter strings alone" do
|
25
|
+
expect("1123".pretty_phone).to eq "1123"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "smart_titlecase" do
|
30
|
+
{
|
31
|
+
"123 Main St." => "123 Main St.", # Numbers are allowed
|
32
|
+
"A Tale Of Two Cities" => "A Tale of Two Cities", # Articles are only capitalized if first
|
33
|
+
"At mt. Kilimanjaro" => "At Mt. Kilimanjaro", # Small non-articles are capitalized
|
34
|
+
"De'wayne" => "De'Wayne", # Names with apostrophes (longer first half)
|
35
|
+
"Hyphenated-Lastname" => "Hyphenated-Lastname", # Hyphenated words retain hyphen and capitalize
|
36
|
+
"I'm Here Ma'am" => "I'm Here Ma'am", # Contractions are treated as a single word
|
37
|
+
"Miller (Smith)" => "Miller (Smith)", # Parentheses are allowed
|
38
|
+
"O'brian" => "O'Brian", # Names with apostrophes (single character first half)
|
39
|
+
"Sample" => "Sample", # Already Capitalized, all lower, all upper okay
|
40
|
+
"Under_scores" => "Under Scores", # Underscores are treated as spaces
|
41
|
+
|
42
|
+
"Double Space" => "Double Space", # Clear duplicated whitespace
|
43
|
+
" Leading Space" => "Leading Space", # Remove leading whitespace
|
44
|
+
"Trailing Space " => "Trailing Space", # Remove trailing whitespace
|
45
|
+
}.each do |before, after|
|
46
|
+
|
47
|
+
# As typed above
|
48
|
+
it "#{before.strip.ljust(22)} => #{after}" do
|
49
|
+
expect(before.smart_titlecase).to eq after
|
50
|
+
end
|
51
|
+
|
52
|
+
# As all-lowercase
|
53
|
+
it "#{before.strip.downcase.ljust(22)} => #{after}" do
|
54
|
+
expect(before.downcase.smart_titlecase).to eq after
|
55
|
+
end
|
56
|
+
|
57
|
+
# As all-uppercase
|
58
|
+
it "#{before.strip.upcase.ljust(22)} => #{after}" do
|
59
|
+
expect(before.upcase.smart_titlecase).to eq after
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# CamelCase words will be preserved.
|
64
|
+
{
|
65
|
+
"DreamWorks" => "DreamWorks",
|
66
|
+
"McDonald's happy-meal" => "McDonald's Happy-Meal",
|
67
|
+
}.each do |before, after|
|
68
|
+
|
69
|
+
# As typed above
|
70
|
+
it "#{before.ljust(22)} => #{after}" do
|
71
|
+
expect(before.smart_titlecase).to eq after
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "to_alpha" do
|
78
|
+
it "strips everything but a-z and A-Z" do
|
79
|
+
expect("123abc$%^DEF".to_alpha).to eq "abcDEF"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
describe "to_alpha_numeric" do
|
83
|
+
it "strips everything but a-z, A-Z and 0-9" do
|
84
|
+
expect("123abc$%^DEF".to_alpha_numeric).to eq "123abcDEF"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
5
88
|
describe "to_box" do
|
6
89
|
it "creates a safe box around a string" do
|
7
90
|
expect("foobar".to_box).to eq "+--------+\n| foobar |\n+--------+"
|
data/spec/system_spec.rb
CHANGED
@@ -3,10 +3,16 @@ describe Duffy::System do
|
|
3
3
|
|
4
4
|
# These methods return per-host settings. Verify the return object type and value within reason.
|
5
5
|
# This generates the documentation more than anything.
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
expect(Duffy::System.
|
6
|
+
|
7
|
+
describe "battery_percent" do
|
8
|
+
it "returns the percentage of battery remaining" do
|
9
|
+
expect([Float, nil]).to include Duffy::System.battery_percent.class
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "cpu_percent" do
|
14
|
+
it "returns the current cpu load percentage" do
|
15
|
+
expect(Duffy::System.cpu_percent).to be_a(Float)
|
10
16
|
end
|
11
17
|
end
|
12
18
|
|
@@ -17,6 +23,13 @@ describe Duffy::System do
|
|
17
23
|
end
|
18
24
|
end
|
19
25
|
|
26
|
+
describe "cpus" do
|
27
|
+
it "returns the number of physical cpus" do
|
28
|
+
expect(Duffy::System.cpus).to be_an(Integer)
|
29
|
+
expect(Duffy::System.cpus).to be >= 1
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
20
33
|
describe "freespace" do
|
21
34
|
it "returns working directory freespace in megabytes" do
|
22
35
|
expect(Duffy::System.freespace).to be_an(Integer)
|
@@ -24,23 +37,17 @@ describe Duffy::System do
|
|
24
37
|
end
|
25
38
|
end
|
26
39
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
expect(Duffy::System.
|
31
|
-
expect(Duffy::System.threads).to be >= 1
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe "virtual?" do
|
36
|
-
it "returns true if in a hypervisor, false otherwise." do
|
37
|
-
expect(Duffy::System.virtual?).to be_in [true, false]
|
40
|
+
describe 'mem_available' do
|
41
|
+
it "returns the amount of available memory in Megabytes" do
|
42
|
+
expect(Duffy::System.mem_available).to be_an(Integer)
|
43
|
+
expect(Duffy::System.mem_available).to be > 0
|
38
44
|
end
|
39
45
|
end
|
40
46
|
|
41
|
-
describe
|
42
|
-
it "returns the
|
43
|
-
expect(Duffy::System.
|
47
|
+
describe 'mem_percent' do
|
48
|
+
it "returns the amount of used memory as a percentage of total" do
|
49
|
+
expect(Duffy::System.mem_percent).to be_a(Float)
|
50
|
+
expect(Duffy::System.mem_percent).to be > 0
|
44
51
|
end
|
45
52
|
end
|
46
53
|
|
@@ -51,13 +58,6 @@ describe Duffy::System do
|
|
51
58
|
end
|
52
59
|
end
|
53
60
|
|
54
|
-
describe 'mem_available' do
|
55
|
-
it "returns the amount of available memory in Megabytes" do
|
56
|
-
expect(Duffy::System.mem_available).to be_an(Integer)
|
57
|
-
expect(Duffy::System.mem_available).to be > 0
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
61
|
describe 'mem_used' do
|
62
62
|
it "returns the amount of used memory in Megabytes" do
|
63
63
|
expect(Duffy::System.mem_used).to be_an(Integer)
|
@@ -65,12 +65,17 @@ describe Duffy::System do
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
-
describe
|
69
|
-
it "returns the
|
70
|
-
expect(Duffy::System.
|
71
|
-
expect(Duffy::System.
|
68
|
+
describe "threads" do
|
69
|
+
it "returns the total number of threads" do
|
70
|
+
expect(Duffy::System.threads).to be_an(Integer)
|
71
|
+
expect(Duffy::System.threads).to be >= 1
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
+
describe "virtual?" do
|
76
|
+
it "returns true if in a hypervisor, false otherwise." do
|
77
|
+
expect(Duffy::System.virtual?).to be_in [true, false]
|
78
|
+
end
|
79
|
+
end
|
75
80
|
|
76
81
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: duffy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jacob Duffy
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -28,30 +28,30 @@ dependencies:
|
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rails
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,23 +80,40 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
description: Random collection of useful things.
|
84
98
|
email:
|
85
99
|
- duffy.jp@gmail.com
|
86
|
-
executables:
|
100
|
+
executables:
|
101
|
+
- console
|
87
102
|
extensions: []
|
88
103
|
extra_rdoc_files: []
|
89
104
|
files:
|
105
|
+
- ".github/workflows/rspec.yml"
|
90
106
|
- ".gitignore"
|
91
107
|
- ".rspec"
|
92
108
|
- ".rubocop.yml"
|
93
|
-
- ".travis.yml"
|
94
109
|
- Gemfile
|
95
110
|
- LICENSE.txt
|
96
111
|
- README.md
|
97
112
|
- Rakefile
|
113
|
+
- bin/console
|
98
114
|
- doc/abc.png
|
99
115
|
- doc/abc123.png
|
116
|
+
- doc/markdown.png
|
100
117
|
- duffy.gemspec
|
101
118
|
- lib/duffy.rb
|
102
119
|
- lib/duffy/active_record.rb
|
@@ -123,7 +140,7 @@ homepage: https://github.com/duffyjp/duffy
|
|
123
140
|
licenses:
|
124
141
|
- MIT
|
125
142
|
metadata: {}
|
126
|
-
post_install_message:
|
143
|
+
post_install_message:
|
127
144
|
rdoc_options: []
|
128
145
|
require_paths:
|
129
146
|
- lib
|
@@ -138,8 +155,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
155
|
- !ruby/object:Gem::Version
|
139
156
|
version: '0'
|
140
157
|
requirements: []
|
141
|
-
rubygems_version: 3.
|
142
|
-
signing_key:
|
158
|
+
rubygems_version: 3.2.32
|
159
|
+
signing_key:
|
143
160
|
specification_version: 4
|
144
161
|
summary: Library of things
|
145
162
|
test_files:
|