zodiac 0.1

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.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in zodiac.gemspec
4
+ gemspec
@@ -0,0 +1,12 @@
1
+ require 'bundler'
2
+ require 'rspec/core/rake_task'
3
+ Bundler::GemHelper.install_tasks
4
+
5
+ desc 'Fires up the console with preloaded zodiac'
6
+ task :console do
7
+ sh 'irb -I ./lib/ -rubygems -r ./lib/zodiac.rb'
8
+ end
9
+
10
+ RSpec::Core::RakeTask.new do |t|
11
+ t.rspec_opts = '--color --format doc'
12
+ end
@@ -0,0 +1,15 @@
1
+ en:
2
+ zodiac:
3
+ aries: Aries
4
+ taurus: Taurus
5
+ gemini: Gemini
6
+ cancer: Cancer
7
+ leo: Leo
8
+ virgo: Virgo
9
+ libra: Libra
10
+ scorpio: Scorpio
11
+ sagittarius: Sagittarius
12
+ capricorn: Capricorn
13
+ aquarius: Aquarius
14
+ pisces: Pisces
15
+
@@ -0,0 +1,15 @@
1
+ ru:
2
+ zodiac:
3
+ aries: Овен
4
+ taurus: Телец
5
+ gemini: Близнецы
6
+ cancer: Рак
7
+ leo: Лев
8
+ virgo: Дева
9
+ libra: Весы
10
+ scorpio: Скорпион
11
+ sagittarius: Стрелец
12
+ capricorn: Козерог
13
+ aquarius: Водолей
14
+ pisces: Рыбы
15
+
@@ -0,0 +1,6 @@
1
+ require 'funtimes'
2
+ require 'i18n'
3
+ I18n.config.load_path += Dir.glob(File.dirname(File.expand_path(__FILE__)) + '/locales/*.yml')
4
+
5
+ require 'zodiac/finder'
6
+ require 'zodiac/date'
@@ -0,0 +1,12 @@
1
+ module Zodiac
2
+ module Date
3
+ def zodiac_sign
4
+ raise "#{self} should respond_to #month and #day" unless respond_to?(:month) && respond_to?(:day)
5
+ Finder.sign_for(:month => self.month, :day => self.day)
6
+ end
7
+ end
8
+ end
9
+
10
+ [Time, Date, DateTime].each do |date_class|
11
+ date_class.send(:include, Zodiac::Date)
12
+ end
@@ -0,0 +1,38 @@
1
+ module Zodiac
2
+ module Finder
3
+ YEAR = 2011
4
+
5
+ def self.date_for(month, day)
6
+ DateTime.new(YEAR, month, day)
7
+ end
8
+
9
+ def self.range_for(month_start, day_start, month_end, day_end)
10
+ SimpleRange.new(date_for(month_start, day_start), date_for(month_end, day_end))
11
+ end
12
+
13
+ RANGES = {
14
+ range_for(1, 1, 1, 20) => :capricorn,
15
+ range_for(1, 21, 2, 19) => :aquarius,
16
+ range_for(2, 20, 3, 20) => :pisces,
17
+ range_for(3, 21, 4, 20) => :aries,
18
+ range_for(4, 21, 5, 21) => :taurus,
19
+ range_for(5, 22, 6, 21) => :gemini,
20
+ range_for(6, 22, 7, 22) => :cancer,
21
+ range_for(7, 23, 8, 21) => :leo,
22
+ range_for(8, 22, 9, 23) => :virgo,
23
+ range_for(9, 24, 10, 23) => :libra,
24
+ range_for(10, 24, 11, 22) => :scorpio,
25
+ range_for(11, 23, 12, 22) => :sagittarius,
26
+ range_for(12, 23, 12, 31) => :capricorn
27
+ }
28
+
29
+ def self.sign_for(date)
30
+ RANGES.each do |range, sign|
31
+ if range.days.include? date_for(date[:month], date[:day])
32
+ return I18n.t!("zodiac.#{sign}")
33
+ end
34
+ end
35
+ raise ArgumentError
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,3 @@
1
+ module Zodiac
2
+ VERSION = "0.1"
3
+ end
@@ -0,0 +1 @@
1
+ require 'zodiac'
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ module Zodiac
4
+ describe Date do
5
+ %w(Time Date DateTime).each do |date_class|
6
+ context "included into #{date_class}" do
7
+ before(:each) do
8
+ @date = Object.const_get(date_class).new(Finder::YEAR, 9, 27)
9
+ end
10
+
11
+ it 'provides #zodiac_sign' do
12
+ @date.zodiac_sign.should == I18n.t('zodiac.libra')
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ module Zodiac
4
+ describe Finder do
5
+ it "generates corect dates" do
6
+ Finder.date_for(9, 27).should == DateTime.new(Finder::YEAR, 9, 27)
7
+ end
8
+
9
+ it "returns correct zodiac sign" do
10
+ Finder.sign_for(:month => 9, :day => 27).should == I18n.t('zodiac.libra')
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "zodiac/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "zodiac"
7
+ s.version = Zodiac::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Vsevolod Romashov"]
10
+ s.email = ["7@7vn.ru"]
11
+ s.homepage = ""
12
+ s.summary = %q{Zodiac sign calculator for any date}
13
+ s.description = %q{Adds methods for getting a zodiac sign from any Date/Time object containing a date of birth}
14
+
15
+ s.add_dependency 'funtimes'
16
+ s.add_dependency 'i18n'
17
+ s.add_development_dependency 'rspec'
18
+
19
+ s.files = `git ls-files`.split("\n")
20
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
+ s.require_paths = ["lib"]
23
+ end
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: zodiac
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: "0.1"
6
+ platform: ruby
7
+ authors:
8
+ - Vsevolod Romashov
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-04-16 00:00:00 +04:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: funtimes
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: i18n
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: "0"
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: rspec
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id003
49
+ description: Adds methods for getting a zodiac sign from any Date/Time object containing a date of birth
50
+ email:
51
+ - 7@7vn.ru
52
+ executables: []
53
+
54
+ extensions: []
55
+
56
+ extra_rdoc_files: []
57
+
58
+ files:
59
+ - .gitignore
60
+ - Gemfile
61
+ - Rakefile
62
+ - lib/locales/en.yml
63
+ - lib/locales/ru.yml
64
+ - lib/zodiac.rb
65
+ - lib/zodiac/date.rb
66
+ - lib/zodiac/finder.rb
67
+ - lib/zodiac/version.rb
68
+ - spec/spec_helper.rb
69
+ - spec/zodiac/date_spec.rb
70
+ - spec/zodiac/finder_spec.rb
71
+ - zodiac.gemspec
72
+ has_rdoc: true
73
+ homepage: ""
74
+ licenses: []
75
+
76
+ post_install_message:
77
+ rdoc_options: []
78
+
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: "0"
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: "0"
93
+ requirements: []
94
+
95
+ rubyforge_project:
96
+ rubygems_version: 1.6.2
97
+ signing_key:
98
+ specification_version: 3
99
+ summary: Zodiac sign calculator for any date
100
+ test_files:
101
+ - spec/spec_helper.rb
102
+ - spec/zodiac/date_spec.rb
103
+ - spec/zodiac/finder_spec.rb