hijri_date 1.2.1 → 1.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 +5 -5
- data/.rubocop.yml +25 -1
- data/Rakefile +2 -0
- data/lib/hijri_date/constants.rb +5 -3
- data/lib/hijri_date/month_names.rb +3 -3
- data/lib/hijri_date/version.rb +3 -1
- data/lib/hijri_date.rb +13 -11
- metadata +7 -73
- data/.gitignore +0 -17
- data/.rubocop_todo.yml +0 -21
- data/Gemfile +0 -4
- data/hijri_date.gemspec +0 -27
- data/test/hijri_date_test.rb +0 -77
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: a37a88322fe5d8c847b858dc1c3d0b8c539ccbd2eda3bc7e4bef17c3f5c8b509
|
|
4
|
+
data.tar.gz: e002ee92d81b6e123ed9dc9ee8f9bb39235396cfd4a9cb184cbe5ad2e43e35d0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4e735148231f5502dbf37a6aa50019b7786654c87ea069bdb22bae698410301f081fa426af823846cce6a5cc617915e208dcbcce592d882020d59bafb44fcce9
|
|
7
|
+
data.tar.gz: d88d091d9c088d223d1d8fad47f346205fb5e042449cc508bbd12f464b444fba217e21ba92c4249a7b7a491fa4ef9717d9fc86da19ded4b7329e9bd6bd1f3aaa
|
data/.rubocop.yml
CHANGED
|
@@ -1,4 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
AllCops:
|
|
2
|
+
NewCops: enable
|
|
3
|
+
SuggestExtensions: false
|
|
4
|
+
TargetRubyVersion: 2.7
|
|
5
|
+
|
|
6
|
+
Metrics/AbcSize:
|
|
7
|
+
Max: 30
|
|
8
|
+
|
|
9
|
+
Metrics/MethodLength:
|
|
10
|
+
Max: 12
|
|
11
|
+
|
|
12
|
+
Lint/AmbiguousOperatorPrecedence:
|
|
13
|
+
Enabled: false
|
|
14
|
+
|
|
15
|
+
Lint/RedundantSplatExpansion:
|
|
16
|
+
Enabled: false
|
|
17
|
+
|
|
18
|
+
Gemspec/RequireMFA:
|
|
19
|
+
Enabled: false
|
|
20
|
+
|
|
21
|
+
Naming/BinaryOperatorParameterName:
|
|
22
|
+
Enabled: false
|
|
23
|
+
|
|
24
|
+
Naming/MethodParameterName:
|
|
25
|
+
Enabled: false
|
|
2
26
|
|
|
3
27
|
Style/Documentation:
|
|
4
28
|
Enabled: false
|
data/Rakefile
CHANGED
data/lib/hijri_date/constants.rb
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module HijriDate
|
|
2
4
|
# number of days in the year per month
|
|
3
|
-
DAYS_IN_YEAR = [30, 59, 89, 118, 148, 177, 207, 236, 266, 295, 325, 355]
|
|
5
|
+
DAYS_IN_YEAR = [30, 59, 89, 118, 148, 177, 207, 236, 266, 295, 325, 355].freeze
|
|
4
6
|
|
|
5
7
|
# number of days in 30-years per year
|
|
6
8
|
DAYS_IN_30_YEARS = [
|
|
7
9
|
354, 708, 1063, 1417, 1771, 2126, 2480, 2834, 3189, 3543,
|
|
8
10
|
3898, 4252, 4606, 4961, 5315, 5669, 6024, 6378, 6732, 7087,
|
|
9
11
|
7441, 7796, 8150, 8504, 8859, 9213, 9567, 9922, 10276, 10631
|
|
10
|
-
]
|
|
12
|
+
].freeze
|
|
11
13
|
|
|
12
|
-
KABISA_YEAR_REMAINDERS = [2, 5, 8, 10, 13, 16, 19, 21, 24, 27, 29]
|
|
14
|
+
KABISA_YEAR_REMAINDERS = [2, 5, 8, 10, 13, 16, 19, 21, 24, 27, 29].freeze
|
|
13
15
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module HijriDate
|
|
4
4
|
MONTH_NAMES = {
|
|
@@ -32,7 +32,7 @@ module HijriDate
|
|
|
32
32
|
'Zilqadah al-Haraam',
|
|
33
33
|
'Zilhaj al-Haraam'
|
|
34
34
|
]
|
|
35
|
-
}
|
|
35
|
+
}.freeze
|
|
36
36
|
|
|
37
37
|
MONTHNAMES_AR = MONTH_NAMES[:ar]
|
|
38
38
|
MONTHNAMES_EN = MONTH_NAMES[:en]
|
|
@@ -53,7 +53,7 @@ module HijriDate
|
|
|
53
53
|
'Zilqadah',
|
|
54
54
|
'Zilhaj'
|
|
55
55
|
]
|
|
56
|
-
}
|
|
56
|
+
}.freeze
|
|
57
57
|
|
|
58
58
|
SHORT_MONTHNAMES_EN = SHORT_MONTH_NAMES[:en]
|
|
59
59
|
end
|
data/lib/hijri_date/version.rb
CHANGED
data/lib/hijri_date.rb
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'date'
|
|
1
4
|
require 'hijri_date/constants'
|
|
2
5
|
require 'hijri_date/month_names'
|
|
3
6
|
require 'hijri_date/version'
|
|
@@ -5,7 +8,7 @@ require 'hijri_date/version'
|
|
|
5
8
|
module HijriDate
|
|
6
9
|
class Date
|
|
7
10
|
# create setters and getters
|
|
8
|
-
|
|
11
|
+
attr_reader :year, :month, :day
|
|
9
12
|
|
|
10
13
|
# constructor
|
|
11
14
|
def initialize(year = 1432, month = 4, day = 20)
|
|
@@ -26,7 +29,7 @@ module HijriDate
|
|
|
26
29
|
|
|
27
30
|
# number of days in this (or the specified) month and year
|
|
28
31
|
def days_in_month(month = self.month, year = self.year)
|
|
29
|
-
|
|
32
|
+
month == 12 && kabisa?(year) || month.odd? ? 30 : 29
|
|
30
33
|
end
|
|
31
34
|
|
|
32
35
|
# day of the year corresponding to this (or specified) Hijri date
|
|
@@ -39,7 +42,7 @@ module HijriDate
|
|
|
39
42
|
y30 = (date.year / 30.0).floor
|
|
40
43
|
day_number = 1948084 + y30 * 10631 + day_of_year(date)
|
|
41
44
|
|
|
42
|
-
if date.year % 30
|
|
45
|
+
if (date.year % 30).zero?
|
|
43
46
|
day_number
|
|
44
47
|
else
|
|
45
48
|
day_number + DAYS_IN_30_YEARS[date.year - y30 * 30 - 1]
|
|
@@ -48,10 +51,9 @@ module HijriDate
|
|
|
48
51
|
|
|
49
52
|
# comparison operator
|
|
50
53
|
def ==(other)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
fail TypeError, 'expected HijriDate::Date'
|
|
54
|
+
return false unless other.is_a?(Date)
|
|
55
|
+
|
|
56
|
+
other.year == year && other.month == month && other.day == day
|
|
55
57
|
end
|
|
56
58
|
|
|
57
59
|
# return a new HijriDate object that is n days after the current one.
|
|
@@ -60,7 +62,7 @@ module HijriDate
|
|
|
60
62
|
when Numeric
|
|
61
63
|
return HijriDate.jd(jd + n)
|
|
62
64
|
end
|
|
63
|
-
|
|
65
|
+
raise TypeError, 'expected numeric'
|
|
64
66
|
end
|
|
65
67
|
|
|
66
68
|
# return a new HijriDate object that is n days before the current one.
|
|
@@ -69,7 +71,7 @@ module HijriDate
|
|
|
69
71
|
when Numeric
|
|
70
72
|
return HijriDate.jd(jd - n)
|
|
71
73
|
end
|
|
72
|
-
|
|
74
|
+
raise TypeError, 'expected numeric'
|
|
73
75
|
end
|
|
74
76
|
|
|
75
77
|
# return the day of the week (0-6, Sunday is zero)
|
|
@@ -88,13 +90,13 @@ module HijriDate
|
|
|
88
90
|
i += 1 while left > DAYS_IN_30_YEARS[i]
|
|
89
91
|
|
|
90
92
|
year = (y30 * 30 + i).to_i
|
|
91
|
-
left -= DAYS_IN_30_YEARS[i - 1] if i
|
|
93
|
+
left -= DAYS_IN_30_YEARS[i - 1] if i.positive?
|
|
92
94
|
|
|
93
95
|
i = 0
|
|
94
96
|
i += 1 while left > DAYS_IN_YEAR[i]
|
|
95
97
|
|
|
96
98
|
month = (i + 1).to_i
|
|
97
|
-
day = i
|
|
99
|
+
day = i.positive? ? (left - DAYS_IN_YEAR[i - 1]) : left
|
|
98
100
|
|
|
99
101
|
Date.new(year, month, day)
|
|
100
102
|
end
|
metadata
CHANGED
|
@@ -1,71 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hijri_date
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Murtaza Gulamali
|
|
8
|
-
|
|
9
|
-
bindir: bin
|
|
8
|
+
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
12
|
-
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: bundler
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '1.10'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '1.10'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: minitest
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '5.8'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '5.8'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: rake
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - "~>"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '10.4'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - "~>"
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '10.4'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: rubocop
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - "~>"
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0.34'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - "~>"
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0.34'
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies: []
|
|
69
12
|
description: Manage Islamic Hijri dates.
|
|
70
13
|
email:
|
|
71
14
|
- mygulamali@gmail.com
|
|
@@ -73,24 +16,18 @@ executables: []
|
|
|
73
16
|
extensions: []
|
|
74
17
|
extra_rdoc_files: []
|
|
75
18
|
files:
|
|
76
|
-
- ".gitignore"
|
|
77
19
|
- ".rubocop.yml"
|
|
78
|
-
- ".rubocop_todo.yml"
|
|
79
|
-
- Gemfile
|
|
80
20
|
- LICENSE.txt
|
|
81
21
|
- README.md
|
|
82
22
|
- Rakefile
|
|
83
|
-
- hijri_date.gemspec
|
|
84
23
|
- lib/hijri_date.rb
|
|
85
24
|
- lib/hijri_date/constants.rb
|
|
86
25
|
- lib/hijri_date/month_names.rb
|
|
87
26
|
- lib/hijri_date/version.rb
|
|
88
|
-
- test/hijri_date_test.rb
|
|
89
27
|
homepage: https://github.com/mygulamali/hijri_date
|
|
90
28
|
licenses:
|
|
91
29
|
- MIT
|
|
92
30
|
metadata: {}
|
|
93
|
-
post_install_message:
|
|
94
31
|
rdoc_options: []
|
|
95
32
|
require_paths:
|
|
96
33
|
- lib
|
|
@@ -98,17 +35,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
98
35
|
requirements:
|
|
99
36
|
- - ">="
|
|
100
37
|
- !ruby/object:Gem::Version
|
|
101
|
-
version:
|
|
38
|
+
version: 2.7.0
|
|
102
39
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
40
|
requirements:
|
|
104
41
|
- - ">="
|
|
105
42
|
- !ruby/object:Gem::Version
|
|
106
43
|
version: '0'
|
|
107
44
|
requirements: []
|
|
108
|
-
|
|
109
|
-
rubygems_version: 2.4.5.1
|
|
110
|
-
signing_key:
|
|
45
|
+
rubygems_version: 3.7.1
|
|
111
46
|
specification_version: 4
|
|
112
47
|
summary: Hijri date object
|
|
113
|
-
test_files:
|
|
114
|
-
- test/hijri_date_test.rb
|
|
48
|
+
test_files: []
|
data/.gitignore
DELETED
data/.rubocop_todo.yml
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# This configuration was generated by
|
|
2
|
-
# `rubocop --auto-gen-config`
|
|
3
|
-
# on 2015-09-28 23:38:18 +0100 using RuboCop version 0.34.2.
|
|
4
|
-
# The point is for the user to remove these configuration records
|
|
5
|
-
# one by one as the offenses are removed from the code base.
|
|
6
|
-
# Note that changes in the inspected code, or installation of new
|
|
7
|
-
# versions of RuboCop, may require this file to be generated again.
|
|
8
|
-
|
|
9
|
-
# Offense count: 4
|
|
10
|
-
Metrics/AbcSize:
|
|
11
|
-
Max: 30
|
|
12
|
-
|
|
13
|
-
# Offense count: 1
|
|
14
|
-
# Configuration parameters: CountComments.
|
|
15
|
-
Metrics/MethodLength:
|
|
16
|
-
Max: 12
|
|
17
|
-
|
|
18
|
-
# Offense count: 2
|
|
19
|
-
Style/OpMethod:
|
|
20
|
-
Exclude:
|
|
21
|
-
- 'lib/hijri_date.rb'
|
data/Gemfile
DELETED
data/hijri_date.gemspec
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
-
require 'hijri_date/version'
|
|
5
|
-
|
|
6
|
-
Gem::Specification.new do |spec|
|
|
7
|
-
spec.required_ruby_version = '>= 2.0'
|
|
8
|
-
|
|
9
|
-
spec.name = 'hijri_date'
|
|
10
|
-
spec.version = HijriDate::VERSION
|
|
11
|
-
spec.authors = ['Murtaza Gulamali']
|
|
12
|
-
spec.email = ['mygulamali@gmail.com']
|
|
13
|
-
spec.description = 'Manage Islamic Hijri dates.'
|
|
14
|
-
spec.summary = 'Hijri date object'
|
|
15
|
-
spec.homepage = 'https://github.com/mygulamali/hijri_date'
|
|
16
|
-
spec.license = 'MIT'
|
|
17
|
-
|
|
18
|
-
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
|
19
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
20
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
21
|
-
spec.require_paths = ['lib']
|
|
22
|
-
|
|
23
|
-
spec.add_development_dependency 'bundler', '~> 1.10'
|
|
24
|
-
spec.add_development_dependency 'minitest', '~> 5.8'
|
|
25
|
-
spec.add_development_dependency 'rake', '~> 10.4'
|
|
26
|
-
spec.add_development_dependency 'rubocop', '~> 0.34'
|
|
27
|
-
end
|
data/test/hijri_date_test.rb
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
require 'date'
|
|
2
|
-
require 'hijri_date'
|
|
3
|
-
require 'minitest/autorun'
|
|
4
|
-
require 'minitest/pride'
|
|
5
|
-
|
|
6
|
-
class HijriDateTest < MiniTest::Test
|
|
7
|
-
def setup
|
|
8
|
-
@date = HijriDate::Date.new # 20/04/1432H = 25/03/2011AD
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def test_kabisa_year
|
|
12
|
-
refute @date.kabisa?
|
|
13
|
-
assert @date.kabisa? 1431
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def test_days_in_month
|
|
17
|
-
assert_equal 29, @date.days_in_month
|
|
18
|
-
assert_equal 29, @date.days_in_month(12)
|
|
19
|
-
assert_equal 30, @date.days_in_month(12, 1431)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def test_day_of_year
|
|
23
|
-
assert_equal 109, @date.day_of_year
|
|
24
|
-
assert_equal 10, HijriDate::Date.new(1432, 1, 10).day_of_year
|
|
25
|
-
assert_equal 355, HijriDate::Date.new(1431, 12, 30).day_of_year
|
|
26
|
-
assert_equal 354, HijriDate::Date.new(1432, 12, 29).day_of_year
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def test_conversion_to_jd
|
|
30
|
-
assert_equal 2455646, @date.jd
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def test_comparison
|
|
34
|
-
assert @date == HijriDate::Date.new(@date.year, @date.month, @date.day)
|
|
35
|
-
refute @date == HijriDate::Date.new(@date.year + 1, @date.month, @date.day)
|
|
36
|
-
refute @date == HijriDate::Date.new(@date.year, @date.month + 1, @date.day)
|
|
37
|
-
refute @date == HijriDate::Date.new(@date.year, @date.month, @date.day + 1)
|
|
38
|
-
|
|
39
|
-
assert_raises TypeError do
|
|
40
|
-
@date == Date.today
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def test_add
|
|
45
|
-
assert_equal 21, (@date + 1).day
|
|
46
|
-
|
|
47
|
-
date = HijriDate::Date.new(1432, 12, 29) + 1
|
|
48
|
-
assert_equal HijriDate::Date.new(1433, 1, 1), date
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def test_subtract
|
|
52
|
-
assert_equal 19, (@date - 1).day
|
|
53
|
-
|
|
54
|
-
date = HijriDate::Date.new(1433, 1, 1) - 1
|
|
55
|
-
assert_equal HijriDate::Date.new(1432, 12, 29), date
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def test_conversion_from_jd
|
|
59
|
-
assert_equal @date, HijriDate.jd(2455646)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def test_hijri_gregorian_conversion
|
|
63
|
-
date = Date.jd(@date.jd)
|
|
64
|
-
assert_equal 2011, date.year
|
|
65
|
-
assert_equal 3, date.month
|
|
66
|
-
assert_equal 25, date.day
|
|
67
|
-
|
|
68
|
-
date = HijriDate.jd(Date.new(2011, 3, 25).jd)
|
|
69
|
-
assert_equal 1432, date.year
|
|
70
|
-
assert_equal 4, date.month
|
|
71
|
-
assert_equal 20, date.day
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def test_day_of_week
|
|
75
|
-
assert_equal 5, @date.wday # Friday
|
|
76
|
-
end
|
|
77
|
-
end
|