days_picker 1.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,17 +1,18 @@
1
1
  module Constants
2
- BY = ['by_year','by_year_and_month']
2
+ BY = %w(by_year by_year_and_month)
3
3
  MONTHS_MAP = {:nil => :nil,
4
- :jan => 31,
5
- :feb => 28,
6
- :mar => 31,
7
- :apr => 30,
8
- :may => 31,
9
- :jun => 30,
10
- :jul => 31,
11
- :aug => 31,
12
- :sep => 30,
13
- :oct => 31,
14
- :nov => 30,
15
- :dec => 31}
16
- DAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
4
+ :jan => 31,
5
+ :feb => 28,
6
+ :mar => 31,
7
+ :apr => 30,
8
+ :may => 31,
9
+ :jun => 30,
10
+ :jul => 31,
11
+ :aug => 31,
12
+ :sep => 30,
13
+ :oct => 31,
14
+ :nov => 30,
15
+ :dec => 31}
16
+ DAYS= %w(Sunday Monday Tuesday Wednesday Thursday Friday Saturday Weekday)
17
+ WEEKDAYS = %w(1 2 3 4 5)
17
18
  end
@@ -4,36 +4,40 @@ require 'active_support/inflector'
4
4
 
5
5
  module Dates
6
6
  Constants::DAYS.each do |day|
7
- Dates.const_set(day, Class.new do
8
- attr_accessor :date ,:year ,:month
9
- define_method (:initialize) do |year=nil,month=nil|
10
- @year = year
11
- @month = month
12
- @date = @year && @month.nil? ? Date.new(year) : Date.new(year,month)
13
- end
14
-
15
- define_method("find_#{day.downcase.pluralize}") do
16
- @date.leap? ? Constants::MONTHS_MAP[:feb] = 29 : Constants::MONTHS_MAP
17
- dates = []
18
- year ,month = @date.year ,@date.month
19
- if @year && @month
20
- Constants::MONTHS_MAP.each_with_index { |(key,value),index| dates << find_dates(year,month,value,day) if month == index}
21
- else
22
- Constants::MONTHS_MAP.each_with_index { |(key,value),index| dates << find_dates(year,month = index,value,day) unless index==0}
23
- end
24
- dates
25
- end
7
+ Dates.const_set(day, Class.new do
8
+ attr_accessor :date ,:year ,:month
26
9
 
10
+ define_method (:initialize) do |*args|
11
+ @year = args[0]
12
+ @month = args[1]
13
+ @date = @year && @month.nil? ? Date.new(year) : Date.new(year,month)
14
+ end
27
15
 
28
- private
16
+ define_method("find_#{day.downcase.pluralize}") do
17
+ @date.leap? ? Constants::MONTHS_MAP[:feb] = 29 : Constants::MONTHS_MAP
18
+ dates = Array.new
19
+ year ,month = @date.year ,@date.month
20
+ if @year && @month
21
+ Constants::MONTHS_MAP.each_with_index { |(key,value),index| dates << find_dates(year,month,value,day) if month == index}
22
+ else
23
+ Constants::MONTHS_MAP.each_with_index { |(key,value),index| dates << find_dates(year,month = index,value,day) unless index==0}
24
+ end
25
+ dates.flatten!
26
+ end
29
27
 
30
- define_method(:find_dates) do |year,month,value,day|
31
- dates = Array.new
32
- 1.upto(value) {|o| dates << Date.new(year,month,o) if Date.new(year,month,o).send("#{day.downcase}?") }
33
- dates
34
- end
35
28
 
36
- end
37
- )
38
- end
29
+ private
30
+
31
+ define_method(:find_dates) do |year,month,value,day|
32
+ dates = Array.new
33
+ 1.upto(value) {|o| dates << Date.new(year,month,o) if day.eql?("Weekday") ? check_weekday(year,month,o): Date.new(year,month,o).send("#{day.downcase}?") }
34
+ dates.flatten
35
+ end
36
+
37
+ def check_weekday(*args)
38
+ Constants::WEEKDAYS.include?(Date.new(args[0],args[1],args[2]).wday.to_s)
39
+ end
40
+ end
41
+ )
42
+ end
39
43
  end
@@ -1,112 +1,23 @@
1
1
  module Helpers
2
- class Sundays
3
- class << self
4
- Constants::BY.each do |method|
5
- define_method(method) do |year=nil,month=nil|
6
- eval("Dates" + "::" + "Sunday").new(year,month).send("find_sundays")
7
- end
8
- end
9
-
10
- Constants::MONTHS_MAP.each_with_index do |(key,value),index|
11
- define_method("in_#{key.to_s}") do |year=nil,month=nil|
12
- eval("Dates" + "::" + "Sunday").new(year,month = index).send("find_sundays")
13
- end
14
- end
15
- end
16
- end
17
-
18
- class Mondays
19
- class << self
20
- Constants::BY.each do |method|
21
- define_method(method) do |year=nil,month=nil|
22
- eval("Dates" + "::" + "Monday").new(year,month).send("find_mondays")
23
- end
24
- end
25
-
26
- Constants::MONTHS_MAP.each_with_index do |(key,value),index|
27
- define_method("in_#{key.to_s}") do |year=nil,month=nil|
28
- eval("Dates" + "::" + "Monday").new(year,month = index).send("find_mondays")
29
- end
30
- end
31
- end
32
- end
33
-
34
- class Tuesdays
35
- class << self
36
- Constants::BY.each do |method|
37
- define_method(method) do |year=nil,month=nil|
38
- eval("Dates" + "::" + "Tuesday").new(year,month).send("find_tuesdays")
39
- end
40
- end
41
-
42
- Constants::MONTHS_MAP.each_with_index do |(key,value),index|
43
- define_method("in_#{key.to_s}") do |year=nil,month=nil|
44
- eval("Dates" + "::" + "Tuesday").new(year,month = index).send("find_tuesdays")
45
- end
46
- end
47
- end
48
- end
49
- class Wednesdays
50
- class << self
51
- Constants::BY.each do |method|
52
- define_method(method) do |year=nil,month=nil|
53
- eval("Dates" + "::" + "Wednesday").new(year,month).send("find_wednesdays")
54
- end
55
- end
56
-
57
- Constants::MONTHS_MAP.each_with_index do |(key,value),index|
58
- define_method("in_#{key.to_s}") do |year=nil,month=nil|
59
- eval("Dates" + "::" + "Wednesday").new(year,month = index).send("find_wednesdays")
60
- end
61
- end
62
- end
63
- end
64
- class Thursdays
65
- class << self
66
- Constants::BY.each do |method|
67
- define_method(method) do |year=nil,month=nil|
68
- eval("Dates" + "::" + "Thursday").new(year,month).send("find_thursdays")
69
- end
70
- end
71
-
72
- Constants::MONTHS_MAP.each_with_index do |(key,value),index|
73
- define_method("in_#{key.to_s}") do |year=nil,month=nil|
74
- eval("Dates" + "::" + "Thursday").new(year,month = index).send("find_thursdays")
75
- end
76
- end
77
- end
78
- end
79
- class Fridays
80
- class << self
81
- Constants::BY.each do |method|
82
- define_method(method) do |year=nil,month=nil|
83
- eval("Dates" + "::" + "Friday").new(year,month).send("find_fridays")
84
- end
85
- end
86
-
87
- Constants::MONTHS_MAP.each_with_index do |(key,value),index|
88
- define_method("in_#{key.to_s}") do |year=nil,month=nil|
89
- eval("Dates" + "::" + "Friday").new(year,month = index).send("find_fridays")
90
- end
91
- end
92
- end
93
- end
94
-
95
- class Saturdays
96
- class << self
97
- Constants::BY.each do |method|
98
- define_method(method) do |year=nil,month=nil|
99
- eval("Dates" + "::" + "Saturday").new(year,month).send("find_saturdays")
100
- end
101
- end
102
-
103
- Constants::MONTHS_MAP.each_with_index do |(key,value),index|
104
- define_method("in_#{key.to_s}") do |year=nil,month=nil|
105
- eval("Dates" + "::" + "Saturday").new(year,month = index).send("find_saturdays")
106
- end
107
- end
108
- end
109
- end
2
+ Constants::DAYS.each do |day|
3
+ const_set(day.pluralize, Class.new do
4
+ class << self
5
+ Constants::BY.each do |method|
6
+ define_method(method) do |year=nil,month=nil|
7
+ klass_name = self.to_s.split("::").last
8
+ eval("Dates" + "::" + klass_name.singularize).new(year,month).send("find_#{klass_name.downcase}")
9
+ end
10
+ end
11
+ Constants::MONTHS_MAP.each_with_index do |(key,value),index|
12
+ define_method("in_#{key.to_s}") do |year=nil,month=nil|
13
+ klass_name = self.to_s.split("::").last
14
+ eval("Dates" + "::" + klass_name.singularize).new(year,month = index).send("find_#{klass_name.downcase}")
15
+ end
16
+ end
17
+ end
18
+ end
19
+ )
110
20
  end
21
+ end
111
22
 
112
23
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: days_picker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,9 +11,9 @@ bindir: bin
11
11
  cert_chain: []
12
12
  date: 2012-07-01 00:00:00.000000000 Z
13
13
  dependencies: []
14
- description: Days Picker helps you find the total Sundays, Mondays, Tuesdays, Wednesdays,
15
- Thursdays, Fridays and Saturdays of a Month or in a Year. (ie Sundays.in_jan(2012)
16
- ,Saturdays.by_year(2012) .. )
14
+ description: Days Picker helps you find the total Weekdays, Sundays, Mondays, Tuesdays,
15
+ Wednesdays, Thursdays, Fridays and Saturdays of a Month or in a Year. (ie Weekdays.in_jan(2012),
16
+ Sundays.in_jan(2012) ,Saturdays.by_year(2012) .. )
17
17
  email: ankit.gupta8898@gmail.com
18
18
  executables:
19
19
  - days_picker
@@ -48,7 +48,7 @@ rubyforge_project:
48
48
  rubygems_version: 1.8.10
49
49
  signing_key:
50
50
  specification_version: 3
51
- summary: Days Picker helps you find the total Sundays, Mondays, Tuesdays, Wednesdays,
52
- Thursdays, Fridays and Saturdays of a Month or in a Year. (ie Sundays.in_jan(2012)
53
- ,Saturdays.by_year(2012) .. )
51
+ summary: Days Picker helps you find the total Weekdays, Sundays, Mondays, Tuesdays,
52
+ Wednesdays, Thursdays, Fridays and Saturdays of a Month or in a Year. (ie Weekdays.in_jan(2012),
53
+ Sundays.in_jan(2012) ,Saturdays.by_year(2012) .. )
54
54
  test_files: []