hijri 0.2.0 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e6c03b308b3dc9f76fe9c48033d795dfa43735ef
4
- data.tar.gz: cb39d5115d8ab13f2f3d2a5f2751461e544cccb7
3
+ metadata.gz: 8a57a98c55f59a921c16661f2dde825a5600d32d
4
+ data.tar.gz: d1f368e87d525735c9e01afc3a4841e3ce2d1052
5
5
  SHA512:
6
- metadata.gz: 2ddcb00c583ae8a0c083d5e638d2ed33f77d6aa825d706f58b16b1796b314257a5b50fdaf665eab56884c4765da5b8b7d1804f4d5aa621181706f2231575b82a
7
- data.tar.gz: ba9cac95f86778db5c9049be96a221e4a4d1a6231016e6ccf3567d42385fbb498147a3fd5c1237982687a35508929adba7af904aefeda4963cc6b69b1ae4c18c
6
+ metadata.gz: 6d9061ec1e355f146a8be9b1ca1b58a2fe6c111078929fcb88b5aecc7d9edbf9dcaf5453ba120b899c5bdab8107c8b9c516e8adceea22ce40980cf974bb9ef35
7
+ data.tar.gz: 83e0d0511d673e93479a75520d9401f05aa5a6d6e3a7fb9911e508354e31aa8edf6b33e25438eeb59f31e9ea311bfb38e0fa55172e8480ab0824beaf8ea8401d
@@ -1,10 +1,13 @@
1
1
  language: ruby
2
+
2
3
  rvm:
3
4
  - "1.8.7"
4
5
  - "1.9.2"
5
6
  - "1.9.3"
6
7
  - "2.0.0"
7
- - "2.1.1"
8
+ - "2.1"
8
9
  - jruby-18mode # JRuby in 1.8 mode
9
10
  - jruby-19mode # JRuby in 1.9 mode
10
- - rbx
11
+ - rbx
12
+
13
+ sudo: false
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ === 0.2.5 / 2014-12-11
2
+
3
+ * Add Comparable for Hijri::Date.
4
+
1
5
  === 0.2.0 / 2014-12-09
2
6
 
3
7
  * hijri now tested and run in all major Ruby implementations and versions.
data/README.md CHANGED
@@ -27,12 +27,12 @@ Or install it yourself as:
27
27
  $ gem install hijri
28
28
 
29
29
  ###hijri tested and worked in:
30
- - Ruby MRI:
31
- - "1.8.7"
32
- - "1.9.2"
33
- - "1.9.3"
34
- - "2.0.0"
35
- - "2.1.1"
30
+ - Ruby MRI:
31
+ - 1.8.7
32
+ - 1.9.2
33
+ - 1.9.3
34
+ - 2.0.0
35
+ - 2.1
36
36
  - JRuby 1.7.16.1
37
37
  - jruby-18mode
38
38
  - jruby-19mode
@@ -45,12 +45,16 @@ require 'hijri'
45
45
 
46
46
  # you can create hijri date from stdlib Date class.
47
47
  h = Date.today.to_hijri # => #<Hijri::Date:0x007f875e8c84e8 @year=1436, @month=2, @day=16>
48
+
48
49
  # or you can initialize new one.
49
50
  hijri = Hijri::Date.new 1430, 1, 3 # => #<Hijri::Date:0x007f875e8dbb38 @year=1430, @month=1, @day=3>
51
+
50
52
  # or you get today hijri date directly.
51
53
  toady = Hijri::Date.today # => #<Hijri::Date:0x007f875e8d8410 @year=1436, @month=2, @day=16>
54
+
52
55
  # and you can convert hijri date to greogian date.
53
56
  hijri.to_greo # => #<Date: 2009-01-01 ((2454833j,0s,0n),+0s,2299161j)>
57
+
54
58
  # and there is DateTime too
55
59
  date_and_time = Hijri::DateTime.now # => #<Hijri::DateTime:0x007f875e8eac00 @year=1436, @month=2, @day=16, @hour=14, @minute=14, @second=39, @zone="+03:00">
56
60
  ```
@@ -62,8 +66,8 @@ date_and_time = Hijri::DateTime.now # => #<Hijri::DateTime:0x007f875e8eac00 @yea
62
66
  - [x] Accept test error with one day range.
63
67
  - [x] Add Hijri::DateTime.now to create Hijri::DateTime object.
64
68
  - [x] Add Hijri::Date.today to create Hijri::Date object with today date.
69
+ - [x] Add Comparable for Hijri::Date.
65
70
  - [ ] Implement strftime method.
66
- - [ ] Add Comparable for Hijri::Date.
67
71
 
68
72
 
69
73
  ## Contributing
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
10
10
  gem.license = "MIT"
11
11
  gem.authors = ["Abdulaziz AlShetwi"]
12
12
  gem.email = "ecleeld@gmail.com"
13
- gem.homepage = "https://rubygems.org/gems/hijri"
13
+ gem.homepage = "https://github.com/ecleel/hijri"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -1,10 +1,19 @@
1
1
  module Hijri
2
2
  class Date
3
3
 
4
+ include Comparable
5
+
4
6
  attr_accessor :day, :month, :year
5
7
  MONTHNAMES_EN = %w(Muharram Safar Rabia-Awwal Rabia-Thani Jumaada-Awal Jumaada-Thani Rajab Sha'ban Ramadan Shawwal Dhul-Qi'dah Dhul-Hijjah)
6
8
  DAYNAMES = %w(as-Sabt al-Ahad al-Ithnayn ath-Thalaathaa al-Arba'aa' al-Khamis al-Jumu'ah)
7
9
 
10
+ class << self
11
+ def today
12
+ date = ::Date.today
13
+ date.to_hijri
14
+ end
15
+ end
16
+
8
17
  def initialize(year=1, month=1, day=1)
9
18
  @year, @month, @day = year, month, day
10
19
  end
@@ -22,12 +31,24 @@ module Hijri
22
31
  "#{@year}-#{sprintf('%02d', @month)}-#{sprintf('%02d', @day)}"
23
32
  end
24
33
 
34
+ def <=>(date)
35
+ # Make sure the date is a Hijri::Date instance
36
+ date = date.to_hijri
37
+ if self.to_s == date.to_s
38
+ return 0
39
+ elsif @year > date.year || (@year == date.year && @month > date.month) || (@year == date.year && @month == date.month && @day > date.day)
40
+ return 1
41
+ else
42
+ return -1
43
+ end
44
+ end
45
+
25
46
  def to_abs
26
47
  month_days = 29 * (month - 1) # days on this year
27
48
  nonleap_year_days = 354 * (year - 1)
28
49
  leap_year_days = (3 + (11 * year)) / 30.0
29
50
  this_year = (month / 2.0).to_i
30
-
51
+
31
52
  return (day + month_days + this_year + nonleap_year_days + leap_year_days + Hijri::ISLAMIC_EPOCH).to_i
32
53
  end
33
54
 
@@ -35,12 +56,10 @@ module Hijri
35
56
  ::Date.new *Converter.hijri_to_greo(self)
36
57
  end
37
58
 
38
- class << self
39
- def today
40
- date = ::Date.today
41
- date.to_hijri
42
- end
59
+ # Just to have a consistent Interface.
60
+ def to_hijri
61
+ self
43
62
  end
44
63
 
45
64
  end
46
- end
65
+ end
@@ -112,22 +112,22 @@ class Date
112
112
  class Bag # :nodoc:
113
113
 
114
114
  def initialize
115
- @elem = {}
115
+ @elem = {}
116
116
  end
117
117
 
118
118
  def method_missing(t, *args, &block)
119
- t = t.to_s
120
- set = t.chomp!('=')
121
- t = t.intern
122
- if set
123
- @elem[t] = args[0]
124
- else
125
- @elem[t]
126
- end
119
+ t = t.to_s
120
+ set = t.chomp!('=')
121
+ t = t.intern
122
+ if set
123
+ @elem[t] = args[0]
124
+ else
125
+ @elem[t]
126
+ end
127
127
  end
128
128
 
129
129
  def to_hash
130
- @elem.reject{|k, v| /\A_/ =~ k.to_s || v.nil?}
130
+ @elem.reject{|k, v| /\A_/ =~ k.to_s || v.nil?}
131
131
  end
132
132
 
133
133
  end
@@ -2,7 +2,7 @@ class Date
2
2
  def to_hijri
3
3
  Hijri::Date.new *Hijri::Converter.greo_to_hijri(self)
4
4
  end
5
-
5
+
6
6
  def last_day_of_gregorian_month(month)
7
7
  # Compute the last date of the month for the Gregorian calendar.
8
8
  if month == 2
@@ -10,7 +10,7 @@ class Date
10
10
  end
11
11
  return [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1]
12
12
  end
13
-
13
+
14
14
  def to_abs
15
15
  @d = self.day
16
16
  @m = self.month - 1
@@ -25,10 +25,10 @@ class DateTime
25
25
  def to_hijri
26
26
  Hijri::DateTime.new *Hijri::Converter.greo_to_hijri(self)
27
27
  end
28
-
28
+
29
29
  if RUBY_VERSION < '1.8.8'
30
30
  alias :minute :min
31
31
  alias :second :sec
32
32
  end
33
-
34
- end
33
+
34
+ end
@@ -1,3 +1,3 @@
1
1
  module Hijri
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.5"
3
3
  end
@@ -53,5 +53,10 @@ class TestHijri < MiniTest::Unit::TestCase
53
53
  assert_equal g_datetime.zone, exact_date.zone
54
54
  end
55
55
 
56
- # TODO test hijri.now
56
+ def test_comparing_two_hijri_date
57
+ date1 = Hijri::Date.new 1435, 1, 1
58
+ date2 = Hijri::Date.new 1435, 1, 1
59
+
60
+ assert_equal date1, date2
61
+ end
57
62
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hijri
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abdulaziz AlShetwi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-09 00:00:00.000000000 Z
11
+ date: 2014-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -68,17 +68,17 @@ files:
68
68
  - README.md
69
69
  - Rakefile
70
70
  - hijri.gemspec
71
- - lib/format.rb
72
71
  - lib/hijri.rb
73
72
  - lib/hijri/absolute.rb
74
73
  - lib/hijri/converter.rb
75
74
  - lib/hijri/date.rb
76
75
  - lib/hijri/datetime.rb
76
+ - lib/hijri/format.rb
77
77
  - lib/hijri/gregorian.rb
78
78
  - lib/hijri/version.rb
79
79
  - test/helper.rb
80
80
  - test/test_hijri.rb
81
- homepage: https://rubygems.org/gems/hijri
81
+ homepage: https://github.com/ecleel/hijri
82
82
  licenses:
83
83
  - MIT
84
84
  metadata: {}