parsi-date 0.2.6 → 0.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 09d7a4dd729c919bfe1581622f91a4bbd6683c07
4
- data.tar.gz: 5ecfbdb3ca6b71f33801bc23e982d92216b27f55
3
+ metadata.gz: 7f6591ac27ee5b75937f1c0009193a2365581714
4
+ data.tar.gz: c8f6ff22752cffe88c9c7a53f31bb2b18771ad15
5
5
  SHA512:
6
- metadata.gz: 2ddd7582efd18f2a11529c84e40bcc025acdcccc49312f6e03c2a6056b248d72c55058c1c35ed7d0f7f8b9787ca223bc0fea87c0dc4cda160b91b7b57f445d72
7
- data.tar.gz: 15e6155dfec566a015303c58e16518e20e9e67c72e9093f9bfcf601c63408dbda1fccb0faaf2f7ac8229a77afd3b75bc3bcce3b009b68902f02ef3db9e171802
6
+ metadata.gz: f9b2772a0a521e5c28d3b48b47730e383cfea864953c0a76deaa0827826552afdca71cc7535fde7b8eb79f50c7ce9838bb616d735938e784fa4cc4b42aa7ed4a
7
+ data.tar.gz: 821b2229b82af844d9cb1b0cdd2daac1fce70ad7d433e795e951fc8b741c8a31e26e5276626ce7de1a85dae7aaccdfbfde42bf0e52feeee17df66b153ff4c3ae
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
1
  --color
2
2
  --format progress
3
+ --require spec_helper
@@ -0,0 +1,14 @@
1
+ module Parsi::DateAccessors
2
+ def parsi_date_accessor(*names)
3
+ names.each do |name|
4
+ define_method("#{name}_parsi") do
5
+ send(name).to_parsi rescue nil
6
+ end
7
+
8
+ define_method("#{name}_parsi=") do |value|
9
+ value = Parsi::Date.parse(value) if value.is_a?(String)
10
+ send("#{name}=", value.to_gregorian)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -61,6 +61,8 @@
61
61
  require 'date'
62
62
 
63
63
  module Parsi
64
+ autoload 'DateAccessors', 'parsi-date-accessors'
65
+
64
66
  # Class representing a date.
65
67
  #
66
68
  # See the documentation to the file parsi-date.rb for an overview.
@@ -1,5 +1,5 @@
1
1
  module Parsi
2
2
  class Date
3
- VERSION = "0.2.6"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
@@ -21,4 +21,6 @@ Gem::Specification.new do |s|
21
21
  s.add_development_dependency("bundler", "~> 1.4")
22
22
  s.add_development_dependency("rake", "~> 10.0")
23
23
  s.add_development_dependency("rspec", "~> 2.0")
24
+ s.add_development_dependency("activerecord", "~> 4.2")
25
+ s.add_development_dependency("sqlite3", "~> 1.3")
24
26
  end
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
1
  describe "Parsi::Date#ajd" do
4
2
  it "determines the Astronomical Julian day" do
5
3
  Parsi::Date.civil(1391, 8, 6).ajd.should == Rational(4912455, 2)
@@ -0,0 +1,71 @@
1
+ require 'active_record'
2
+ require 'sqlite3'
3
+
4
+ ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
5
+
6
+ ActiveRecord::Schema.verbose = false
7
+ ActiveRecord::Schema.define do
8
+ create_table :models do |t|
9
+ t.date :start_date
10
+ end
11
+ end
12
+
13
+ class Model < ActiveRecord::Base
14
+ extend Parsi::DateAccessors
15
+ parsi_date_accessor :start_date
16
+ end
17
+
18
+ class Record
19
+ extend Parsi::DateAccessors
20
+ attr_accessor :created_at, :updated_at
21
+ parsi_date_accessor :created_at, :updated_at
22
+ end
23
+
24
+ describe "Record extended with Parsi::Date::Accessors" do
25
+ it "has parsi postfixed accessor for giver attributes" do
26
+ record = Record.new
27
+ %i(created_at_parsi created_at_parsi= updated_at_parsi updated_at_parsi).each do |name|
28
+ expect(record.respond_to?(name)).to be_truthy
29
+ end
30
+ end
31
+
32
+ describe "created getter" do
33
+ it "returen given date converted to jalali" do
34
+ record = Record.new
35
+ record.created_at = Date.today
36
+ expect(record.created_at_parsi).to be == Parsi::Date.today
37
+ end
38
+ end
39
+
40
+ describe "created setter" do
41
+ it "sets date attribute to given date concerted to gregorian" do
42
+ record = Record.new
43
+ record.created_at_parsi = Parsi::Date.today
44
+ expect(record.created_at).to be == Date.today
45
+ end
46
+
47
+ context "with string arg" do
48
+ it "sets date attribute to given date when parsable" do
49
+ record = Record.new
50
+ record.created_at_parsi = "1393-12-12"
51
+ date = Parsi::Date.parse "1393-12-12"
52
+ expect(record.created_at_parsi).to be == date
53
+ expect(record.created_at).to be == date.to_gregorian
54
+ end
55
+
56
+ it "raises error when string is not a date" do
57
+ record = Record.new
58
+ expect {record.created_at_parsi = "1393-13-11" }.to raise_error
59
+ end
60
+ end
61
+ end
62
+
63
+ context "for active_record subclasses" do
64
+ it "saves attributes to datebase" do
65
+ model = Model.new start_date_parsi: Parsi::Date.today
66
+ expect(model[:start_date]).to be == Date.today
67
+ model.save
68
+ expect(Model.first.start_date).to be == Date.today
69
+ end
70
+ end
71
+ end
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
1
  describe "Parsi::Date#>>" do
4
2
  it "adds the number of months to a Parsi::Date" do
5
3
  d = Parsi::Date.civil(1391, 2, 27) >> 10
@@ -26,4 +24,4 @@ describe "Parsi::Date#>>" do
26
24
  it "raise a TypeError when passed an Object" do
27
25
  lambda { Parsi::Date.civil(1391, 2, 27) >> Object.new }.should raise_error(TypeError)
28
26
  end
29
- end
27
+ end
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
1
  describe "Parsi::Date#+" do
4
2
  it "adds the number of days to a Parsi::Date" do
5
3
  d = Parsi::Date.civil(1391, 2, 27) + 10
@@ -26,4 +24,4 @@ describe "Parsi::Date#+" do
26
24
  it "raises a TypeError when passed an Object" do
27
25
  lambda { Parsi::Date.civil(1391, 2, 27) + Object.new }.should raise_error(TypeError)
28
26
  end
29
- end
27
+ end
@@ -1,4 +1,3 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
1
  require 'date'
3
2
 
4
3
  describe "Parsi::Date#<=>" do
@@ -28,4 +27,4 @@ describe "Parsi::Date#<=>" do
28
27
  it "returns 1 when self is greater than a Numeric" do
29
28
  (Parsi::Date.civil(1391, 4, 6) <=> Rational(4912208,2)).should == 1
30
29
  end
31
- end
30
+ end
@@ -1,6 +1,4 @@
1
1
  # encoding: utf-8
2
- require File.expand_path('../../spec_helper', __FILE__)
3
-
4
2
  describe "Date constants" do
5
3
  it "defines MONTHNAMES" do
6
4
  Parsi::Date::MONTHNAMES.should == [nil] +
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
1
  describe Parsi::Date do
4
2
  context "civil" do
5
3
  it "constructs a date with arguments" do
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
1
  describe "Parsi::Date.jd" do
4
2
  it "constructs a date form given Chronological Julian day number" do
5
3
  Parsi::Date.jd(2456228).should == Parsi::Date.civil(1391, 8, 6)
@@ -35,4 +33,4 @@ describe "Date#to_parsi" do
35
33
  date.should be_a(Parsi::Date)
36
34
  date.should == Parsi::Date.civil(1391, 8, 7)
37
35
  end
38
- end
36
+ end
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
1
  describe "Parsi::Date#leap?" do
4
2
  it "returns true if a year is a leap year in the Parsi (Jalali) calendar" do
5
3
  Parsi::Date.leap?(1387).should be_truthy
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
1
  describe "Parsi::Date#step" do
4
2
 
5
3
  it "steps forward in time" do
@@ -49,4 +47,4 @@ describe "Parsi::Date#step" do
49
47
  de.step(ds, -1) do |d|; count += 1; end
50
48
  count.should == 0
51
49
  end
52
- end
50
+ end
@@ -1,6 +1,4 @@
1
1
  # encoding: utf-8
2
- require File.expand_path('../../spec_helper', __FILE__)
3
-
4
2
  describe "Parsi::Date#strftime" do
5
3
 
6
4
  it "should be able to print the date" do
@@ -107,4 +105,4 @@ describe "Parsi::Date#strftime" do
107
105
  Parsi::Date.civil(1390, 4, 6).strftime("%x").should == Parsi::Date.civil(1390, 4, 6).strftime('%y/%m/%d')
108
106
  end
109
107
 
110
- end
108
+ end
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
1
  describe "Parsi::Date#cwday?" do
4
2
  it "returns the day of calendar week (1-7, Monday is 1)" do
5
3
  Parsi::Date.civil(1393, 12, 3).cwday.should == 7
@@ -3,10 +3,4 @@ require 'parsi-date'
3
3
  RSpec.configure do |config|
4
4
  config.treat_symbols_as_metadata_keys_with_true_values = true
5
5
  config.run_all_when_everything_filtered = true
6
-
7
- # Run specs in random order to surface order dependencies. If you find an
8
- # order dependency and want to debug it, you can fix the order by providing
9
- # the seed, which is printed after each run.
10
- # --seed 1234
11
- # config.order = 'random'
12
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parsi-date
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hassan Zamani
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-23 00:00:00.000000000 Z
11
+ date: 2015-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activerecord
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '4.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.3'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.3'
55
83
  description: A Solar Hijri (Jalali) date library for Ruby, whitch provides much of
56
84
  Ruby's built-in date class
57
85
  email: hsn.zamani@gmail.com
@@ -66,11 +94,13 @@ files:
66
94
  - MIT-LICENSE
67
95
  - README.rdoc
68
96
  - TODO
97
+ - lib/parsi-date-accessors.rb
69
98
  - lib/parsi-date.rb
70
99
  - lib/parsi-datetime.rb
71
100
  - lib/version.rb
72
101
  - parsi-date.gemspec
73
102
  - spec/parsi-date/accessor_spec.rb
103
+ - spec/parsi-date/accessors_helper_spec.rb
74
104
  - spec/parsi-date/add_month_spec.rb
75
105
  - spec/parsi-date/add_spec.rb
76
106
  - spec/parsi-date/comp_spec.rb
@@ -108,6 +138,7 @@ specification_version: 4
108
138
  summary: Solar Hijri (Jalali, Persian, Parsi) date library for Ruby
109
139
  test_files:
110
140
  - spec/parsi-date/accessor_spec.rb
141
+ - spec/parsi-date/accessors_helper_spec.rb
111
142
  - spec/parsi-date/add_month_spec.rb
112
143
  - spec/parsi-date/add_spec.rb
113
144
  - spec/parsi-date/comp_spec.rb