feast_fast 0.1.0 → 0.2.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.
data/README.md CHANGED
@@ -38,10 +38,14 @@ if days_till_easter > 50
38
38
  if today.feasts.any?
39
39
  puts "Don't be sad, today you can celebrate #{today.feasts.first}"
40
40
  else
41
- remaining_feasts = Date.with_feasts(today.year, FeastFast::Feast::STATUS::TWELVE).select{ |feast_day| feast_day > today }
41
+ remaining_feasts = Date.with_feasts(
42
+ today.year,
43
+ FeastFast::Feast::STATUS::TWELVE,
44
+ FeastFast::Feast::STATUS::GREAT
45
+ ).drop_while{ |feast_day| feast_day <= today }
42
46
  if remaining_feasts.size > 1
43
47
  puts "Don't be sad, there are still #{remaining_feasts.size} Great Feasts in this year:"
44
- remaining_feasts.sort.each { |date| puts "At #{date.strftime('%d %b')}: #{date.feasts.first}" }
48
+ remaining_feasts.each { |date| puts "At #{date.strftime('%d %b')}: #{date.feasts.first}" }
45
49
  end
46
50
  end
47
51
  puts "And don't forget to fast today!" if today.fast?
@@ -5,7 +5,7 @@ module FeastFast
5
5
  def self.build_data(year)
6
6
 
7
7
  year = year.to_i
8
- easter = Date.easter
8
+ easter = Date.easter(year)
9
9
 
10
10
  hash = Hash.new do |h, day|
11
11
  h[day] = {
@@ -16,8 +16,8 @@ class Date
16
16
  self.new(year, m, d) + 13
17
17
  end
18
18
 
19
- def self.with_feasts(year, status)
20
- FeastFast::DB.feasts(year, status).map{|a| a[0]}
19
+ def self.with_feasts(year, *statuses)
20
+ FeastFast::DB.feasts(year, *statuses).keys.sort
21
21
  end
22
22
 
23
23
  def feasts
@@ -37,6 +37,15 @@ class Date
37
37
 
38
38
  def feasts?() self.feasts.any? end
39
39
 
40
+ def next_with_feast(*statuses)
41
+ self.class.with_feasts(self.year, *statuses).find{|d| d > self } || self.class.with_feasts(self.year + 1, *statuses).first
42
+ end
43
+
44
+ def prev_with_feast(*statuses)
45
+ self.class.with_feasts(self.year, *statuses).reverse.find{|d| d < self } || self.class.with_feasts(self.year - 1, *statuses).last
46
+ end
47
+
48
+
40
49
  def next_date(n=1) self + n end
41
50
  def prev_date(n=1) self - n end
42
51
 
data/lib/feast_fast/db.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  module FeastFast
2
2
  module DB
3
3
  def self.data(year)
4
- year = year.to_i
5
4
  return @data[year] if @data && @data.has_key?( year )
6
5
 
7
6
  @data ||= {}
@@ -20,12 +19,15 @@ module FeastFast
20
19
  self.data(date.year)[:days][date]
21
20
  end
22
21
 
23
- def self.feasts(year, status)
24
- year = year.to_i
25
- self.data(year)[:days].select do |date, hash|
26
- hash[:feasts].map{|feast| feast.status == status}.any?
22
+ def self.feasts(year, *params)
23
+ days = self.data(year)[:days].select do |date, hash|
24
+ if params.any?
25
+ hash[:feasts].map{|feast| params.include? feast.status}.any?
26
+ else
27
+ hash[:feasts].any?
28
+ end
27
29
  end
30
+ Hash[days]
28
31
  end
29
-
30
32
  end
31
33
  end
@@ -1,3 +1,3 @@
1
1
  module FeastFast
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,33 +1,25 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: feast_fast
3
- version: !ruby/object:Gem::Version
4
- hash: 27
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - ilzoff
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-06-08 00:00:00 Z
12
+ date: 2012-06-09 00:00:00.000000000 Z
19
13
  dependencies: []
20
-
21
- description: Feasts and Fasts of Eastern Orthodox Church hardcoded and calculated based on easter.
22
- email:
14
+ description: Feasts and Fasts of Eastern Orthodox Church hardcoded and calculated
15
+ based on easter.
16
+ email:
23
17
  - il.zoff@gmail.com
24
- executables:
18
+ executables:
25
19
  - feast_fast
26
20
  extensions: []
27
-
28
21
  extra_rdoc_files: []
29
-
30
- files:
22
+ files:
31
23
  - .gitignore
32
24
  - Gemfile
33
25
  - LICENSE
@@ -43,37 +35,28 @@ files:
43
35
  - lib/feast_fast/feast.rb
44
36
  - lib/feast_fast/version.rb
45
37
  homepage: https://github.com/ilzoff/feast_fast
46
- licenses:
38
+ licenses:
47
39
  - MIT
48
40
  post_install_message:
49
41
  rdoc_options: []
50
-
51
- require_paths:
42
+ require_paths:
52
43
  - lib
53
- required_ruby_version: !ruby/object:Gem::Requirement
44
+ required_ruby_version: !ruby/object:Gem::Requirement
54
45
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
62
- required_rubygems_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
51
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- hash: 3
68
- segments:
69
- - 0
70
- version: "0"
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
71
56
  requirements: []
72
-
73
57
  rubyforge_project:
74
58
  rubygems_version: 1.8.24
75
59
  signing_key:
76
60
  specification_version: 3
77
61
  summary: Feasts and Fasts of Eastern Orthodox Church hardcoded and calculated
78
62
  test_files: []
79
-