payment_day 0.2.0 → 0.2.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/README.md +14 -11
- data/lib/payment_day/cli.rb +4 -3
- data/lib/payment_day/version.rb +1 -1
- data/lib/payment_day.rb +34 -20
- metadata +2 -3
- data/Gemfile.lock +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9cff6548d69331df6551413e6022e1096cd9c98229bcc609c1d2eb4ff532411d
|
4
|
+
data.tar.gz: a794a8df445185ee98c59b8425cfdf9237a24fc384f6c21559be6699355d4d70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53b211a666cddc455973b8e52705316ee9e854b8cbe1f5b88c371c412861b57749a2cb76dbff7b91c7a41ccb7dfd8c38b4f2a404231807670433fff2fdd1c87e
|
7
|
+
data.tar.gz: c65095ab77e8d6574e9aea507d7ca5b6e9356604b747d486fa19dbaffa62f730e74721d7e1fa8669b0253c2af0b78707612f156476a046844d7cbbc43fdaa4f9
|
data/README.md
CHANGED
@@ -1,34 +1,36 @@
|
|
1
1
|
# PaymentDay
|
2
2
|
|
3
|
+
[](https://app.travis-ci.com/the-pulli/payment_day)
|
4
|
+
|
3
5
|
Provides a class PaymentDay::View. This class generates the pay days for the given year(s).
|
4
6
|
|
5
7
|
## Installation
|
6
8
|
|
7
9
|
Install the gem and add to the application's Gemfile by executing:
|
8
10
|
|
9
|
-
$ bundle add
|
11
|
+
$ bundle add payment_day
|
10
12
|
|
11
13
|
If bundler is not being used to manage dependencies, install the gem by executing:
|
12
14
|
|
13
|
-
$ gem install
|
15
|
+
$ gem install payment_day
|
14
16
|
|
15
17
|
## Usage
|
16
18
|
|
17
19
|
```ruby
|
18
20
|
# Get the pay days
|
19
|
-
PaymentDay::View(2023).pay_days # return Array of Hash(es) with the pay_days
|
20
|
-
PaymentDay::View("2023").pay_days # accept String as input
|
21
|
-
PaymentDay::View(2023, 2024).pay_days # accept multiple years
|
22
|
-
PaymentDay::View([2023]).pay_days # accept Array's as input
|
23
|
-
PaymentDay::View("2023-2024").pay_days # accept String ranges
|
24
|
-
PaymentDay::View(2023..2024).pay_days # accept Range as input
|
25
|
-
PaymentDay::View(2023..2024, 2025, '2026').pay_days # accept a mix of all of them
|
21
|
+
PaymentDay::View.create(2023).pay_days # return Array of Hash(es) with the pay_days
|
22
|
+
PaymentDay::View.create("2023").pay_days # accept String as input
|
23
|
+
PaymentDay::View.create(2023, 2024).pay_days # accept multiple years
|
24
|
+
PaymentDay::View.create([2023]).pay_days # accept Array's as input
|
25
|
+
PaymentDay::View.create("2023-2024").pay_days # accept String ranges
|
26
|
+
PaymentDay::View.create(2023..2024).pay_days # accept Range as input
|
27
|
+
PaymentDay::View.create(2023..2024, 2025, '2026').pay_days # accept a mix of all of them
|
26
28
|
|
27
29
|
# Last parameter defines the options if set
|
28
30
|
# shows 2023 twice in the list of pay_days, default is false
|
29
|
-
PaymentDay::View(2023..2024, 2023, duplicates: true).pay_days
|
31
|
+
PaymentDay::View.create(2023..2024, 2023, duplicates: true).pay_days
|
30
32
|
|
31
|
-
table = PaymentDay::View(2023).list # returns a Terminal::Table instance
|
33
|
+
table = PaymentDay::View.create(2023).list # returns a Terminal::Table instance
|
32
34
|
puts table # which can be printed like this
|
33
35
|
```
|
34
36
|
|
@@ -37,6 +39,7 @@ puts table # which can be printed like this
|
|
37
39
|
Option | Negated | Shortcut | Default
|
38
40
|
--- | ---: | ---: | ---:
|
39
41
|
--ascii | --no-ascii | -a | false
|
42
|
+
--colors | --no-colors | | true
|
40
43
|
--columns | | -c | 10
|
41
44
|
--dayname | --no-dayname | -e | true
|
42
45
|
--duplicates | --no-duplicates | -d | false
|
data/lib/payment_day/cli.rb
CHANGED
@@ -13,19 +13,20 @@ module PaymentDay
|
|
13
13
|
desc "view YEARS", "Lists all pay days for the given year(s)"
|
14
14
|
method_option :ascii, aliases: "-a", type: :boolean, default: false, desc: "Do you want to have a ASCII table printed?"
|
15
15
|
method_option :columns, aliases: "-c", type: :numeric, default: 10, desc: "How many years (columns) do you wanna display in one table?"
|
16
|
+
method_option :colors, type: :boolean, default: true, desc: "Do you want colored output?"
|
16
17
|
method_option :dayname, aliases: "-e", type: :boolean, default: true, desc: "Do you want see the day name?"
|
17
18
|
method_option :duplicates, aliases: "-d", type: :boolean, default: false, desc: "Do you want see duplicates?"
|
18
19
|
method_option :footer, aliases: "-f", type: :boolean, default: true, desc: "Do you want see the table footer?"
|
19
20
|
method_option :header, aliases: "-h", type: :boolean, default: true, desc: "Do you wanna see the table title?"
|
20
21
|
method_option :separator, aliases: "-s", type: :boolean, default: true, desc: "Do you want to have a separator for the rows printed?"
|
21
22
|
def view(*years)
|
22
|
-
years = PaymentDay::View.
|
23
|
+
years = PaymentDay::View.create(years, options).years
|
23
24
|
years = years.each_slice(options[:columns])
|
24
|
-
years.each_with_index do |
|
25
|
+
years.each_with_index do |years_chunk, page|
|
25
26
|
year_options = options.dup
|
26
27
|
year_options[:page] = page.next
|
27
28
|
year_options[:pages] = years.to_a.length
|
28
|
-
puts PaymentDay::View.
|
29
|
+
puts PaymentDay::View.create(years_chunk, year_options).list
|
29
30
|
end
|
30
31
|
end
|
31
32
|
end
|
data/lib/payment_day/version.rb
CHANGED
data/lib/payment_day.rb
CHANGED
@@ -10,6 +10,8 @@ module PaymentDay
|
|
10
10
|
class View
|
11
11
|
DEFAULT_OPTIONS = {
|
12
12
|
ascii: false,
|
13
|
+
colors: true,
|
14
|
+
columns: 10,
|
13
15
|
dayname: false,
|
14
16
|
duplicates: false,
|
15
17
|
footer: true,
|
@@ -18,6 +20,8 @@ module PaymentDay
|
|
18
20
|
separator: true
|
19
21
|
}.freeze
|
20
22
|
|
23
|
+
private_class_method :new
|
24
|
+
|
21
25
|
attr_reader :pay_days, :years
|
22
26
|
|
23
27
|
def initialize(*years)
|
@@ -28,12 +32,18 @@ module PaymentDay
|
|
28
32
|
@pay_days = find_pay_days
|
29
33
|
end
|
30
34
|
|
35
|
+
def self.create(*years)
|
36
|
+
new(*years)
|
37
|
+
end
|
38
|
+
|
31
39
|
def list
|
32
40
|
Terminal::Table.new do |t|
|
33
|
-
t.title =
|
34
|
-
t.headings = [
|
41
|
+
t.title = format("Pay days", :bright)
|
42
|
+
t.headings = [format("Month", :bright)] + @years.map do |y|
|
43
|
+
{ value: format(y, :bright), alignment: :center }
|
44
|
+
end
|
35
45
|
t.style = { all_separators: @options[:separator], border: border }
|
36
|
-
t.rows = @months.map { |m|
|
46
|
+
t.rows = @months.map { |m| format(m, :cyan) }.zip(*format_pay_days)
|
37
47
|
@years.each_index { |v| t.align_column v.next, :center }
|
38
48
|
page = @options[:page]
|
39
49
|
pages = @options[:pages]
|
@@ -48,6 +58,10 @@ module PaymentDay
|
|
48
58
|
|
49
59
|
private
|
50
60
|
|
61
|
+
def format(value, color)
|
62
|
+
@options[:colors] ? Rainbow(value).send(color) : value
|
63
|
+
end
|
64
|
+
|
51
65
|
def prepare_years(years)
|
52
66
|
result = years.flatten.map do |year|
|
53
67
|
case year
|
@@ -70,32 +84,32 @@ module PaymentDay
|
|
70
84
|
end
|
71
85
|
|
72
86
|
def find_pay_days
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
year_hsh[year] = (1..12).to_a.map do |month|
|
77
|
-
last_day = Date.parse("#{year}-#{month}-01").next_month.prev_day
|
78
|
-
@months.push(last_day.strftime("%B")) if index.zero?
|
79
|
-
prev(last_day)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
return year_hsh
|
83
|
-
end
|
84
|
-
|
85
|
-
@years.map.with_index do |year, index|
|
86
|
-
(1..12).to_a.map do |month|
|
87
|
+
year_hsh = {}
|
88
|
+
years_ary = @years.map.with_index do |year, index|
|
89
|
+
year_hsh[year] = (1..12).to_a.map do |month|
|
87
90
|
last_day = Date.parse("#{year}-#{month}-01").next_month.prev_day
|
88
91
|
@months.push(last_day.strftime("%B")) if index.zero?
|
89
92
|
prev(last_day)
|
90
93
|
end
|
91
94
|
end
|
95
|
+
return years_ary if @options[:duplicates]
|
96
|
+
|
97
|
+
year_hsh
|
92
98
|
end
|
93
99
|
|
94
100
|
def format_pay_days
|
95
101
|
format = @options[:dayname] ? "%a, %d" : "%d"
|
96
|
-
|
97
|
-
|
98
|
-
|
102
|
+
formatter = lambda { |d|
|
103
|
+
day = d.strftime(format)
|
104
|
+
format(day, :green)
|
105
|
+
}
|
106
|
+
|
107
|
+
p @pay_days.is_a?(Hash)
|
108
|
+
@pay_days.map do |_, years|
|
109
|
+
p years
|
110
|
+
# mapping_object = @options[:duplicates] ? year : days
|
111
|
+
years.map { |d| formatter.call(d) }
|
112
|
+
end
|
99
113
|
end
|
100
114
|
|
101
115
|
def prev(day)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: payment_day
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- PuLLi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rainbow
|
@@ -64,7 +64,6 @@ extra_rdoc_files: []
|
|
64
64
|
files:
|
65
65
|
- CHANGELOG.md
|
66
66
|
- Gemfile
|
67
|
-
- Gemfile.lock
|
68
67
|
- LICENSE.txt
|
69
68
|
- README.md
|
70
69
|
- Rakefile
|
data/Gemfile.lock
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
payment_day (0.1.2)
|
5
|
-
rainbow (~> 3.1)
|
6
|
-
terminal-table (~> 3.0)
|
7
|
-
thor (~> 1.2)
|
8
|
-
|
9
|
-
GEM
|
10
|
-
remote: https://rubygems.org/
|
11
|
-
specs:
|
12
|
-
minitest (5.16.3)
|
13
|
-
rainbow (3.1.1)
|
14
|
-
rake (13.0.6)
|
15
|
-
terminal-table (3.0.2)
|
16
|
-
unicode-display_width (>= 1.1.1, < 3)
|
17
|
-
thor (1.2.1)
|
18
|
-
unicode-display_width (2.3.0)
|
19
|
-
|
20
|
-
PLATFORMS
|
21
|
-
arm64-darwin-22
|
22
|
-
|
23
|
-
DEPENDENCIES
|
24
|
-
minitest (~> 5.0)
|
25
|
-
payment_day!
|
26
|
-
rake (~> 13.0)
|
27
|
-
|
28
|
-
BUNDLED WITH
|
29
|
-
2.4.1
|