periods 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +6 -0
- data/README.md +75 -19
- data/lib/periods/modules/period.rb +137 -1
- data/lib/periods/modules/quarter.rb +0 -8
- data/lib/periods/modules/year.rb +0 -4
- data/lib/periods/version.rb +1 -1
- data/spec/lib/halfyear_spec.rb +6 -6
- data/spec/lib/halfyearly_period_spec.rb +2 -2
- data/spec/lib/period_spec.rb +14 -0
- data/spec/lib/quarter_spec.rb +0 -13
- data/spec/lib/year_spec.rb +6 -14
- data/spec/lib/yearly_period_spec.rb +2 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8bca4bb489addf1c13b97b9393036dea7c7a8750
|
4
|
+
data.tar.gz: 6f9b873e913d076b08d1ea25aa6d8ccc1a275c55
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0fd1215e00f8890bab21bda707d6904a43d05aaa8717c3885e9114a9b41cc13fc16e3d30324ea8ade7669c4af1ea192266d5efe17bee639a66ea21bffd022ac0
|
7
|
+
data.tar.gz: 47461d42951e77ff77f8c57dd185b66b96e0e67f8a69ff7364996490ae1d90cb70d7b95ed323c13cb8cf972c693eb01ac4fbe498f715f925028e5ef198a244f5
|
data/.yardopts
ADDED
data/README.md
CHANGED
@@ -35,14 +35,11 @@ Require `periods` in your app:
|
|
35
35
|
|
36
36
|
A period is defined by a start and end date:
|
37
37
|
|
38
|
-
period = Period.
|
39
|
-
period.days # => 56
|
40
|
-
period.next # => 20.08.2015 - 14.10.2015
|
41
|
-
period.next.days # => 56
|
38
|
+
period = Period.new(Date.new(2015,6,25), Date.new(2015,8,19))
|
42
39
|
|
43
40
|
The start and end date can be a string too:
|
44
41
|
|
45
|
-
period = Period.
|
42
|
+
period = Period.new('25.06.2015', '19.08.2015')
|
46
43
|
|
47
44
|
All period models respond to the following interface:
|
48
45
|
|
@@ -55,42 +52,100 @@ All period models respond to the following interface:
|
|
55
52
|
|
56
53
|
Special period models may define additional methods (see below).
|
57
54
|
|
55
|
+
#### days
|
56
|
+
|
57
|
+
period = Period.new('25.06.2015', '19.08.2015')
|
58
|
+
period.days # => 56
|
59
|
+
|
60
|
+
#### next
|
61
|
+
|
62
|
+
period = Period.new('25.06.2015', '19.08.2015')
|
63
|
+
period.next # => 20.08.2015 - 14.10.2015
|
64
|
+
|
65
|
+
#### previous
|
66
|
+
|
67
|
+
period = Period.new('25.06.2015', '19.08.2015')
|
68
|
+
period.previous # => 30.04.2015 - 24.06.2015
|
69
|
+
|
70
|
+
#### include?
|
71
|
+
|
72
|
+
Test whether a date or a period is included in the given period:
|
73
|
+
|
74
|
+
period = Period.new('25.06.2015', '19.08.2015')
|
75
|
+
period.include?(Date.new(2015,6,25)) # => true
|
76
|
+
period.include?('25.06.2015') # => true
|
77
|
+
period.include?('24.06.2015') # => false
|
78
|
+
|
79
|
+
period.include?(Period.new('25.06.2015', '19.08.2015')) # => true
|
80
|
+
period.include?(Period.new('26.06.2015', '19.08.2015')) # => true
|
81
|
+
period.include?(Period.new('24.06.2015', '19.08.2015')) # => false
|
82
|
+
period.include?(Period.new('25.06.2015', '20.08.2015')) # => false
|
83
|
+
|
58
84
|
### MonthlyPeriod
|
59
85
|
|
60
86
|
If you need a constant monthly range use `MonthlyPeriod`:
|
61
87
|
|
62
|
-
monthly = MonthPeriod.for('01.01.2015') # => 01.01.2015 - 31.01.2015
|
63
|
-
monthly.next # => 01.02.2015 - 28.02.2015
|
64
|
-
|
65
88
|
monthly = MonthPeriod.for('25.06.2015') # => 25.06.2015 - 24.07.2015
|
66
|
-
monthly.next
|
67
|
-
monthly.
|
68
|
-
|
69
|
-
|
89
|
+
monthly.next # => 25.07.2015 - 24.08.2015
|
90
|
+
monthly.previous # => 25.05.2015 - 24.06.2015
|
91
|
+
|
70
92
|
### Month
|
71
93
|
|
72
94
|
If you need a calendar month starting at first day of month and ending at last day of month use `Month`:
|
73
95
|
|
74
|
-
january = Month.for('01.01.2015') # => 01.01.2015 - 31.01.2015
|
75
|
-
january.next # => 01.02.2015 - 28.02.2015
|
76
|
-
|
77
96
|
june = MonthPeriod.for('25.06.2015') # => 01.06.2015 - 30.06.2015
|
78
|
-
june.next
|
79
|
-
june.
|
80
|
-
june.
|
97
|
+
june.next # => 01.07.2015 - 31.07.2015
|
98
|
+
june.previous # => 01.05.2015 - 31.05.2015
|
99
|
+
june.month # => 6
|
100
|
+
june.year # => 2015
|
81
101
|
|
82
102
|
### QuarterlyPeriod
|
83
103
|
|
104
|
+
period = QuarterlyPeriod.for('25.06.2015') # => 25.06.2015 - 24.09.2015
|
105
|
+
|
84
106
|
### Quarter
|
85
107
|
|
108
|
+
A quarter starts at first day of a month and ends at last day three months later:
|
109
|
+
|
110
|
+
quarter = Quarter.for('01.02.2015') # => 01.02.2015 - 30.04.2015
|
111
|
+
quarter.next # => 01.05.2015 - 31.07.2015
|
112
|
+
quarter.previous # => 01.11.2014 - 31.01.2015
|
113
|
+
|
114
|
+
quarter = Quarter.for('01.12.2015') # => 01.12.2015 - 29.02.2016
|
115
|
+
quarter.start_year # => 2015
|
116
|
+
quarter.end_year # => 2016
|
117
|
+
quarter.months # => [Month.for('01.12.2015'), Month.for('01.01.2016'), Month.for('01.02.2016')]
|
118
|
+
|
86
119
|
### HalfyearlyPeriod
|
87
120
|
|
121
|
+
A HalfyearlyPeriod starts at the given date and ends six month later:
|
122
|
+
|
123
|
+
period = HalfyearlyPeriod.for('25.06.2015') # => 25.06.2015 - 24.12.2015
|
124
|
+
|
88
125
|
### Halfyear
|
89
126
|
|
90
|
-
|
127
|
+
A Halfyear starts at the first day of a month and ends six month later:
|
128
|
+
|
129
|
+
halfyear = HalfyearlyPeriod.for('25.06.2015') # => 01.06.2015 - 30.11.2015
|
130
|
+
halfyear.next # => 25.12.2015 - 24.06.2016
|
131
|
+
halfyear.previous # => 25.12.2014 - 24.06.2015
|
132
|
+
halfyear.months # => [Month.for('01.06.2015'), ..., Month.for('01.11.2015')]
|
133
|
+
|
134
|
+
### YearlyPeriod
|
135
|
+
|
136
|
+
A YearlyPeriod starts at the given date and ends one year later:
|
137
|
+
|
138
|
+
period = YearlyPeriod.for('25.06.2015') # => 25.06.2015 - 24.06.2016
|
91
139
|
|
92
140
|
### Year
|
93
141
|
|
142
|
+
A year starts at first day of a month and ends one year later:
|
143
|
+
|
144
|
+
year = Year.for('01.02.2015') # => 01.02.2015 - 31.01.2016
|
145
|
+
year.next # => 01.02.2016 - 31.01.2017
|
146
|
+
year.previous # => 01.02.2014 - 31.01.2015
|
147
|
+
year.months # => [Month.for('01.02.2015'), ..., Month.for('01.01.2016')]
|
148
|
+
|
94
149
|
### If constants already exist
|
95
150
|
|
96
151
|
In case constants like `Month` already exist in your code stop requiring `periods` in your `Gemfile`:
|
@@ -121,6 +176,7 @@ Write your own classes:
|
|
121
176
|
|
122
177
|
* Implement Week
|
123
178
|
* Use Time not Date
|
179
|
+
* Optimize README
|
124
180
|
* Comment Code
|
125
181
|
|
126
182
|
## Contributing
|
@@ -10,17 +10,54 @@ module Periods
|
|
10
10
|
end
|
11
11
|
|
12
12
|
module InstanceMethods
|
13
|
-
attr_reader :start_date, :end_date
|
14
13
|
|
14
|
+
# Returns the start date of this period.
|
15
|
+
# @return [Date] the start date of this period.
|
16
|
+
attr_reader :start_date
|
17
|
+
|
18
|
+
# Returns the end date of this period.
|
19
|
+
# @return [Date] the end date of this period.
|
20
|
+
attr_reader :end_date
|
21
|
+
|
22
|
+
##
|
23
|
+
# Initialize a new period with its start and end date.
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
#
|
27
|
+
# period = Period.new('10.04.2015', '20.05.2015')
|
28
|
+
#
|
15
29
|
def initialize(start_date, end_date)
|
16
30
|
@start_date = Date.parse(start_date.to_s)
|
17
31
|
@end_date = Date.parse(end_date.to_s)
|
18
32
|
end
|
19
33
|
|
34
|
+
##
|
35
|
+
# Test whether the given period is equal to this one.
|
36
|
+
# A period is considered equal if it has the same start and end date.
|
37
|
+
#
|
38
|
+
# @return [Boolean] true if period is equal, false otherwise.
|
39
|
+
#
|
40
|
+
# @since 0.0.3
|
41
|
+
#
|
42
|
+
# @example
|
43
|
+
#
|
44
|
+
# period1 = Period.new('10.04.2015', '20.05.2015')
|
45
|
+
# period2 = Period.new('10.04.2015', '20.05.2015')
|
46
|
+
# period3 = Period.new('09.04.2015', '20.05.2015')
|
47
|
+
# period1 == period2 # => true
|
48
|
+
# period1 == period3 # => false
|
49
|
+
#
|
20
50
|
def ==(period)
|
21
51
|
start_date == period.start_date && end_date == period.end_date
|
22
52
|
end
|
23
53
|
|
54
|
+
##
|
55
|
+
# Test whether the given period is older, newer or equal to this one.
|
56
|
+
#
|
57
|
+
# @return [Fixnum] 1 if period is older, -1 if newer, 0 if equal.
|
58
|
+
#
|
59
|
+
# @since 0.0.3
|
60
|
+
#
|
24
61
|
def <=>(period)
|
25
62
|
if start_date > period.start_date
|
26
63
|
1
|
@@ -31,18 +68,106 @@ module Periods
|
|
31
68
|
end
|
32
69
|
end
|
33
70
|
|
71
|
+
##
|
72
|
+
# Returns next period.
|
73
|
+
#
|
74
|
+
# @return [Period] the next period.
|
75
|
+
#
|
76
|
+
# @since 0.0.3
|
77
|
+
#
|
78
|
+
# @see Periods::Modules::Period#previous
|
79
|
+
#
|
80
|
+
# @example
|
81
|
+
#
|
82
|
+
# period = Period.new('10.04.2015', '20.05.2015')
|
83
|
+
# period.next # => 21.05.2015 - 30.06.2015
|
84
|
+
#
|
34
85
|
def next
|
35
86
|
self.class.new(start_date + days, end_date + days)
|
36
87
|
end
|
37
88
|
|
89
|
+
##
|
90
|
+
# Returns previous period.
|
91
|
+
#
|
92
|
+
# @return [Period] the previous period.
|
93
|
+
#
|
94
|
+
# @since 0.0.3
|
95
|
+
#
|
96
|
+
# @see Periods::Modules::Period#next
|
97
|
+
#
|
98
|
+
# @example
|
99
|
+
#
|
100
|
+
# period = Period.new('10.04.2015', '20.05.2015')
|
101
|
+
# period.previous # => 28.02.2015 - 09.04.2015
|
102
|
+
#
|
38
103
|
def previous
|
39
104
|
self.class.new(start_date - days, end_date - days)
|
40
105
|
end
|
41
106
|
|
107
|
+
##
|
108
|
+
# Returns number of days in period.
|
109
|
+
#
|
110
|
+
# @return [Fixnum] the number of days in period.
|
111
|
+
#
|
112
|
+
# @since 0.0.3
|
113
|
+
#
|
114
|
+
# @example
|
115
|
+
#
|
116
|
+
# Period.new('10.04.2015', '20.05.2015').days # => 41
|
117
|
+
#
|
42
118
|
def days
|
43
119
|
end_date.yday - start_date.yday + 1
|
44
120
|
end
|
45
121
|
|
122
|
+
##
|
123
|
+
# Returns start year of period.
|
124
|
+
#
|
125
|
+
# @return [Fixnum] start year of period.
|
126
|
+
#
|
127
|
+
# @since 0.0.3
|
128
|
+
#
|
129
|
+
# @example
|
130
|
+
#
|
131
|
+
# Period.new('10.04.2015', '20.05.2016').start_year # => 2015
|
132
|
+
#
|
133
|
+
def start_year
|
134
|
+
start_date.year
|
135
|
+
end
|
136
|
+
|
137
|
+
##
|
138
|
+
# Returns end year of period.
|
139
|
+
#
|
140
|
+
# @return [Fixnum] end year of period.
|
141
|
+
#
|
142
|
+
# @since 0.0.3
|
143
|
+
#
|
144
|
+
# @example
|
145
|
+
#
|
146
|
+
# Period.new('10.04.2015', '20.05.2016').end_year # => 2016
|
147
|
+
#
|
148
|
+
def end_year
|
149
|
+
end_date.year
|
150
|
+
end
|
151
|
+
|
152
|
+
##
|
153
|
+
# Test whether the given date or period is included in this one.
|
154
|
+
#
|
155
|
+
# @return [Boolean] true if date or period is included, false otherwise.
|
156
|
+
#
|
157
|
+
# @since 0.0.3
|
158
|
+
#
|
159
|
+
# @example
|
160
|
+
#
|
161
|
+
# Period.new('10.04.2015', '20.05.2015').include?('10.04.2015') # => true
|
162
|
+
# Period.new('10.04.2015', '20.05.2015').include?('20.05.2015') # => true
|
163
|
+
# Period.new('10.04.2015', '20.05.2015').include?('09.04.2015') # => false
|
164
|
+
# Period.new('10.04.2015', '20.05.2015').include?('21.05.2015') # => false
|
165
|
+
#
|
166
|
+
# Period.new('10.04.2015', '20.05.2015').include?(Period.new('10.04.2015', '20.05.2015')) # => true
|
167
|
+
# Period.new('10.04.2015', '20.05.2015').include?(Period.new('15.04.2015', '15.05.2015')) # => true
|
168
|
+
# Period.new('10.04.2015', '20.05.2015').include?(Period.new('09.04.2015', '20.05.2015')) # => false
|
169
|
+
# Period.new('10.04.2015', '20.05.2015').include?(Period.new('10.04.2015', '21.05.2015')) # => false
|
170
|
+
#
|
46
171
|
def include?(period)
|
47
172
|
if period.is_a?(Date)
|
48
173
|
start_date <= period && period <= end_date
|
@@ -56,6 +181,17 @@ module Periods
|
|
56
181
|
end
|
57
182
|
end
|
58
183
|
|
184
|
+
##
|
185
|
+
# Return string representation of period.
|
186
|
+
#
|
187
|
+
# @return [String] the string representation of period.
|
188
|
+
#
|
189
|
+
# @since 0.0.3
|
190
|
+
#
|
191
|
+
# @example
|
192
|
+
#
|
193
|
+
# Period.new('10.04.2015', '20.05.2015').to_s # => '10.04.2015 - 20.05.2015'
|
194
|
+
#
|
59
195
|
def to_s
|
60
196
|
"#{start_date.strftime("%d.%m.%Y")} - #{end_date.strftime("%d.%m.%Y")}"
|
61
197
|
end
|
data/lib/periods/modules/year.rb
CHANGED
data/lib/periods/version.rb
CHANGED
data/spec/lib/halfyear_spec.rb
CHANGED
@@ -8,23 +8,23 @@ describe Halfyear do
|
|
8
8
|
it_behaves_like "Lint Check"
|
9
9
|
|
10
10
|
describe ".for" do
|
11
|
-
it "returns
|
12
|
-
|
11
|
+
it "returns halfyear of given date included" do
|
12
|
+
halfyear = described_class.for('25.06.2015')
|
13
13
|
|
14
|
-
expect(
|
15
|
-
expect(
|
14
|
+
expect(halfyear.start_date).to eq Date('01.06.2015')
|
15
|
+
expect(halfyear.end_date).to eq Date('30.11.2015')
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
describe "#next" do
|
20
|
-
it "returns next
|
20
|
+
it "returns next halfyear" do
|
21
21
|
expect(described_class.for('25.06.2015').next).to eq described_class.for('01.12.2015')
|
22
22
|
expect(described_class.for('01.07.2015').next).to eq described_class.for('01.01.2016')
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "#previous" do
|
27
|
-
it "returns previous
|
27
|
+
it "returns previous halfyear" do
|
28
28
|
expect(described_class.for('25.06.2015').previous).to eq described_class.for('01.12.2014')
|
29
29
|
expect(described_class.for('01.07.2015').previous).to eq described_class.for('01.01.2015')
|
30
30
|
end
|
@@ -17,14 +17,14 @@ describe HalfyearlyPeriod do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
describe "#next" do
|
20
|
-
it "returns next
|
20
|
+
it "returns next period" do
|
21
21
|
expect(described_class.for('25.06.2015').next).to eq described_class.for('25.12.2015')
|
22
22
|
expect(described_class.for('01.07.2015').next).to eq described_class.for('01.01.2016')
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "#previous" do
|
27
|
-
it "returns previous
|
27
|
+
it "returns previous period" do
|
28
28
|
expect(described_class.for('25.06.2015').previous).to eq described_class.for('25.12.2014')
|
29
29
|
expect(described_class.for('01.07.2015').previous).to eq described_class.for('01.01.2015')
|
30
30
|
end
|
data/spec/lib/period_spec.rb
CHANGED
@@ -55,6 +55,20 @@ describe Period do
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
+
describe "#start_year" do
|
59
|
+
it "returns start year of quarter" do
|
60
|
+
expect(new_period("25.06.2015", "19.08.2015").start_year).to eq 2015
|
61
|
+
expect(new_period("25.06.2015", "20.05.2016").start_year).to eq 2015
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "#end_year" do
|
66
|
+
it "returns end year of quarter" do
|
67
|
+
expect(new_period("25.06.2015", "19.08.2015").end_year).to eq 2015
|
68
|
+
expect(new_period("25.06.2015", "20.05.2016").end_year).to eq 2016
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
58
72
|
describe "#include?" do
|
59
73
|
context "date included" do
|
60
74
|
it "returns true" do
|
data/spec/lib/quarter_spec.rb
CHANGED
@@ -101,17 +101,4 @@ describe Quarter do
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
|
-
describe "#start_year" do
|
105
|
-
it "returns start year of quarter" do
|
106
|
-
expect(described_class.for('01.06.2015').start_year).to eq 2015
|
107
|
-
expect(described_class.for('01.06.2016').start_year).to eq 2016
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
describe "#end_year" do
|
112
|
-
it "returns end year of quarter" do
|
113
|
-
expect(described_class.for('01.06.2015').end_year).to eq 2015
|
114
|
-
expect(described_class.for('01.12.2015').end_year).to eq 2016
|
115
|
-
end
|
116
|
-
end
|
117
104
|
end
|
data/spec/lib/year_spec.rb
CHANGED
@@ -8,36 +8,28 @@ describe Year do
|
|
8
8
|
it_behaves_like "Lint Check"
|
9
9
|
|
10
10
|
describe ".for" do
|
11
|
-
it "returns
|
12
|
-
|
11
|
+
it "returns year of given date included" do
|
12
|
+
year = described_class.for('25.06.2015')
|
13
13
|
|
14
|
-
expect(
|
15
|
-
expect(
|
14
|
+
expect(year.start_date).to eq Date('01.06.2015')
|
15
|
+
expect(year.end_date).to eq Date('31.05.2016')
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
describe "#next" do
|
20
|
-
it "returns next
|
20
|
+
it "returns next year" do
|
21
21
|
expect(described_class.for('25.06.2015').next).to eq described_class.for('01.06.2016')
|
22
22
|
expect(described_class.for('01.07.2015').next).to eq described_class.for('01.07.2016')
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "#previous" do
|
27
|
-
it "returns previous
|
27
|
+
it "returns previous year" do
|
28
28
|
expect(described_class.for('25.06.2015').previous).to eq described_class.for('01.06.2014')
|
29
29
|
expect(described_class.for('01.06.2015').previous).to eq described_class.for('01.06.2014')
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
describe "#year" do
|
34
|
-
it "returns year number" do
|
35
|
-
expect(described_class.for('01.01.2015').year).to eq 2015
|
36
|
-
expect(described_class.for('01.12.2015').year).to eq 2015
|
37
|
-
expect(described_class.for('01.01.2014').year).to eq 2014
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
33
|
describe "#months" do
|
42
34
|
it "returns months of year" do
|
43
35
|
expect(described_class.for('01.06.2015').months).
|
@@ -17,14 +17,14 @@ describe YearlyPeriod do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
describe "#next" do
|
20
|
-
it "returns next
|
20
|
+
it "returns next period" do
|
21
21
|
expect(described_class.for('25.06.2015').next).to eq described_class.for('25.06.2016')
|
22
22
|
expect(described_class.for('01.07.2015').next).to eq described_class.for('01.07.2016')
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "#previous" do
|
27
|
-
it "returns previous
|
27
|
+
it "returns previous period" do
|
28
28
|
expect(described_class.for('25.06.2015').previous).to eq described_class.for('25.06.2014')
|
29
29
|
expect(described_class.for('01.07.2015').previous).to eq described_class.for('01.07.2014')
|
30
30
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: periods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Baustert
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- ".gitignore"
|
63
63
|
- ".rspec"
|
64
64
|
- ".travis.yml"
|
65
|
+
- ".yardopts"
|
65
66
|
- Gemfile
|
66
67
|
- LICENSE
|
67
68
|
- README.md
|