shengxiao 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9f6587ce08492dcb26cc5194affe8b7fe600313f
4
+ data.tar.gz: 5720baf0f0b1abe4182e40a90f2cef9d467b53dc
5
+ SHA512:
6
+ metadata.gz: def06517a83744837725e7470a932e7c5967b9f20cd2c613d8bac242a70b8b147e4206eb00cbebd50a6af2ca8ff105d385a11333f8af887b5a1ffa7922d4a904
7
+ data.tar.gz: 8176aac47d31184ffbb37a766b62db8d0ce6c267101a8bad98e837e43b60f0bd9bd4682936079b94459632a3f3cfab098fa1d3badec92741ff7c6e1042a0890d
@@ -0,0 +1,146 @@
1
+ [
2
+ { "year": "1900", "start_date": "31 Jan", "sign": "rat" },
3
+ { "year": "1901", "start_date": "19 Feb", "sign": "ox" },
4
+ { "year": "1902", "start_date": "08 Feb", "sign": "tiger" },
5
+ { "year": "1903", "start_date": "29 Jan", "sign": "rabbit" },
6
+ { "year": "1904", "start_date": "16 Feb", "sign": "dragon" },
7
+ { "year": "1905", "start_date": "04 Feb", "sign": "snake" },
8
+ { "year": "1906", "start_date": "25 Jan", "sign": "horse" },
9
+ { "year": "1907", "start_date": "13 Feb", "sign": "goat" },
10
+ { "year": "1908", "start_date": "02 Feb", "sign": "monkey" },
11
+ { "year": "1909", "start_date": "22 Jan", "sign": "rooster" },
12
+ { "year": "1910", "start_date": "10 Feb", "sign": "dog" },
13
+ { "year": "1911", "start_date": "30 Jan", "sign": "pig" },
14
+ { "year": "1912", "start_date": "18 Feb", "sign": "rat" },
15
+ { "year": "1913", "start_date": "06 Feb", "sign": "ox" },
16
+ { "year": "1914", "start_date": "26 Jan", "sign": "tiger" },
17
+ { "year": "1915", "start_date": "14 Feb", "sign": "rabbit" },
18
+ { "year": "1916", "start_date": "03 Feb", "sign": "dragon" },
19
+ { "year": "1917", "start_date": "23 Jan", "sign": "snake" },
20
+ { "year": "1918", "start_date": "11 Feb", "sign": "horse" },
21
+ { "year": "1919", "start_date": "01 Feb", "sign": "goat" },
22
+ { "year": "1920", "start_date": "20 Feb", "sign": "monkey" },
23
+ { "year": "1921", "start_date": "08 Feb", "sign": "rooster" },
24
+ { "year": "1922", "start_date": "28 Jan", "sign": "dog" },
25
+ { "year": "1923", "start_date": "16 Feb", "sign": "pig" },
26
+ { "year": "1924", "start_date": "05 Feb", "sign": "rat" },
27
+ { "year": "1925", "start_date": "24 Jan", "sign": "ox" },
28
+ { "year": "1926", "start_date": "13 Feb", "sign": "tiger" },
29
+ { "year": "1927", "start_date": "02 Feb", "sign": "rabbit" },
30
+ { "year": "1928", "start_date": "23 Jan", "sign": "dragon" },
31
+ { "year": "1929", "start_date": "10 Feb", "sign": "snake" },
32
+ { "year": "1930", "start_date": "30 Jan", "sign": "horse" },
33
+ { "year": "1931", "start_date": "17 Feb", "sign": "goat" },
34
+ { "year": "1932", "start_date": "06 Feb", "sign": "monkey" },
35
+ { "year": "1933", "start_date": "26 Jan", "sign": "rooster" },
36
+ { "year": "1934", "start_date": "14 Feb", "sign": "dog" },
37
+ { "year": "1935", "start_date": "04 Feb", "sign": "pig" },
38
+ { "year": "1936", "start_date": "24 Jan", "sign": "rat" },
39
+ { "year": "1937", "start_date": "11 Feb", "sign": "ox" },
40
+ { "year": "1938", "start_date": "31 Jan", "sign": "tiger" },
41
+ { "year": "1939", "start_date": "19 Feb", "sign": "rabbit" },
42
+ { "year": "1940", "start_date": "08 Feb", "sign": "dragon" },
43
+ { "year": "1941", "start_date": "27 Jan", "sign": "snake" },
44
+ { "year": "1942", "start_date": "15 Feb", "sign": "horse" },
45
+ { "year": "1943", "start_date": "05 Feb", "sign": "goat" },
46
+ { "year": "1944", "start_date": "25 Jan", "sign": "monkey" },
47
+ { "year": "1945", "start_date": "13 Feb", "sign": "rooster" },
48
+ { "year": "1946", "start_date": "02 Feb", "sign": "dog" },
49
+ { "year": "1947", "start_date": "22 Jan", "sign": "pig" },
50
+ { "year": "1948", "start_date": "10 Feb", "sign": "rat" },
51
+ { "year": "1949", "start_date": "29 Jan", "sign": "ox" },
52
+ { "year": "1950", "start_date": "17 Feb", "sign": "tiger" },
53
+ { "year": "1951", "start_date": "06 Feb", "sign": "rabbit" },
54
+ { "year": "1952", "start_date": "27 Jan", "sign": "dragon" },
55
+ { "year": "1953", "start_date": "14 Feb", "sign": "snake" },
56
+ { "year": "1954", "start_date": "03 Feb", "sign": "horse" },
57
+ { "year": "1955", "start_date": "24 Jan", "sign": "goat" },
58
+ { "year": "1956", "start_date": "12 Feb", "sign": "monkey" },
59
+ { "year": "1957", "start_date": "31 Jan", "sign": "rooster" },
60
+ { "year": "1958", "start_date": "18 Feb", "sign": "dog" },
61
+ { "year": "1959", "start_date": "08 Feb", "sign": "pig" },
62
+ { "year": "1960", "start_date": "28 Jan", "sign": "rat" },
63
+ { "year": "1961", "start_date": "15 Feb", "sign": "ox" },
64
+ { "year": "1962", "start_date": "05 Feb", "sign": "tiger" },
65
+ { "year": "1963", "start_date": "25 Jan", "sign": "rabbit" },
66
+ { "year": "1964", "start_date": "13 Feb", "sign": "dragon" },
67
+ { "year": "1965", "start_date": "02 Feb", "sign": "snake" },
68
+ { "year": "1966", "start_date": "21 Jan", "sign": "horse" },
69
+ { "year": "1967", "start_date": "09 Feb", "sign": "goat" },
70
+ { "year": "1968", "start_date": "30 Jan", "sign": "monkey" },
71
+ { "year": "1969", "start_date": "17 Feb", "sign": "rooster" },
72
+ { "year": "1970", "start_date": "06 Feb", "sign": "dog" },
73
+ { "year": "1971", "start_date": "27 Jan", "sign": "pig" },
74
+ { "year": "1972", "start_date": "15 Feb", "sign": "rat" },
75
+ { "year": "1973", "start_date": "03 Feb", "sign": "ox" },
76
+ { "year": "1974", "start_date": "23 Jan", "sign": "tiger" },
77
+ { "year": "1975", "start_date": "11 Feb", "sign": "rabbit" },
78
+ { "year": "1976", "start_date": "31 Jan", "sign": "dragon" },
79
+ { "year": "1977", "start_date": "18 Feb", "sign": "snake" },
80
+ { "year": "1978", "start_date": "07 Feb", "sign": "horse" },
81
+ { "year": "1979", "start_date": "28 Jan", "sign": "goat" },
82
+ { "year": "1980", "start_date": "16 Feb", "sign": "monkey" },
83
+ { "year": "1981", "start_date": "05 Feb", "sign": "rooster" },
84
+ { "year": "1982", "start_date": "25 Jan", "sign": "dog" },
85
+ { "year": "1983", "start_date": "13 Feb", "sign": "pig" },
86
+ { "year": "1984", "start_date": "02 Feb", "sign": "rat" },
87
+ { "year": "1985", "start_date": "20 Feb", "sign": "ox" },
88
+ { "year": "1986", "start_date": "09 Feb", "sign": "tiger" },
89
+ { "year": "1987", "start_date": "29 Jan", "sign": "rabbit" },
90
+ { "year": "1988", "start_date": "17 Feb", "sign": "dragon" },
91
+ { "year": "1989", "start_date": "06 Feb", "sign": "snake" },
92
+ { "year": "1990", "start_date": "27 Jan", "sign": "horse" },
93
+ { "year": "1991", "start_date": "15 Feb", "sign": "goat" },
94
+ { "year": "1992", "start_date": "04 Feb", "sign": "monkey" },
95
+ { "year": "1993", "start_date": "23 Jan", "sign": "rooster" },
96
+ { "year": "1994", "start_date": "10 Feb", "sign": "dog" },
97
+ { "year": "1995", "start_date": "31 Jan", "sign": "pig" },
98
+ { "year": "1996", "start_date": "19 Feb", "sign": "rat" },
99
+ { "year": "1997", "start_date": "07 Feb", "sign": "ox" },
100
+ { "year": "1998", "start_date": "27 Jan", "sign": "tiger" },
101
+ { "year": "1999", "start_date": "16 Feb", "sign": "rabbit" },
102
+ { "year": "2000", "start_date": "05 Feb", "sign": "dragon" },
103
+ { "year": "2001", "start_date": "24 Jan", "sign": "snake" },
104
+ { "year": "2002", "start_date": "12 Feb", "sign": "horse" },
105
+ { "year": "2003", "start_date": "01 Feb", "sign": "goat" },
106
+ { "year": "2004", "start_date": "22 Jan", "sign": "monkey" },
107
+ { "year": "2005", "start_date": "09 Feb", "sign": "rooster" },
108
+ { "year": "2006", "start_date": "29 Jan", "sign": "dog" },
109
+ { "year": "2007", "start_date": "18 Feb", "sign": "pig" },
110
+ { "year": "2008", "start_date": "07 Feb", "sign": "rat" },
111
+ { "year": "2009", "start_date": "26 Jan", "sign": "ox" },
112
+ { "year": "2010", "start_date": "10 Feb", "sign": "tiger" },
113
+ { "year": "2011", "start_date": "03 Feb", "sign": "rabbit" },
114
+ { "year": "2012", "start_date": "23 Jan", "sign": "dragon" },
115
+ { "year": "2013", "start_date": "10 Feb", "sign": "snake" },
116
+ { "year": "2014", "start_date": "31 Jan", "sign": "horse" },
117
+ { "year": "2015", "start_date": "19 Feb", "sign": "goat" },
118
+ { "year": "2016", "start_date": "09 Feb", "sign": "monkey" },
119
+ { "year": "2017", "start_date": "28 Jan", "sign": "rooster" },
120
+ { "year": "2018", "start_date": "16 Feb", "sign": "dog" },
121
+ { "year": "2019", "start_date": "05 Feb", "sign": "pig" },
122
+ { "year": "2020", "start_date": "25 Jan", "sign": "rat" },
123
+ { "year": "2021", "start_date": "12 Feb", "sign": "ox" },
124
+ { "year": "2022", "start_date": "01 Feb", "sign": "tiger" },
125
+ { "year": "2023", "start_date": "22 Jan", "sign": "rabbit" },
126
+ { "year": "2024", "start_date": "10 Feb", "sign": "dragon" },
127
+ { "year": "2025", "start_date": "29 Jan", "sign": "snake" },
128
+ { "year": "2026", "start_date": "17 Feb", "sign": "horse" },
129
+ { "year": "2027", "start_date": "06 Feb", "sign": "goat" },
130
+ { "year": "2028", "start_date": "26 Jan", "sign": "monkey" },
131
+ { "year": "2029", "start_date": "13 Feb", "sign": "rooster" },
132
+ { "year": "2030", "start_date": "03 Feb", "sign": "dog" },
133
+ { "year": "2031", "start_date": "23 Jan", "sign": "pig" },
134
+ { "year": "2032", "start_date": "11 Feb", "sign": "rat" },
135
+ { "year": "2033", "start_date": "31 Jan", "sign": "ox" },
136
+ { "year": "2034", "start_date": "19 Feb", "sign": "tiger" },
137
+ { "year": "2035", "start_date": "08 Feb", "sign": "rabbit" },
138
+ { "year": "2036", "start_date": "28 Jan", "sign": "dragon" },
139
+ { "year": "2037", "start_date": "15 Feb", "sign": "snake" },
140
+ { "year": "2038", "start_date": "04 Feb", "sign": "horse" },
141
+ { "year": "2039", "start_date": "24 Jan", "sign": "goat" },
142
+ { "year": "2040", "start_date": "12 Feb", "sign": "monkey" },
143
+ { "year": "2041", "start_date": "01 Feb", "sign": "rooster" },
144
+ { "year": "2042", "start_date": "22 Jan", "sign": "dog" },
145
+ { "year": "2043", "start_date": "10 Feb", "sign": "pig" }
146
+ ]
@@ -0,0 +1,15 @@
1
+ en:
2
+ shengxiao:
3
+ signs:
4
+ rat: Rat
5
+ ox: Ox
6
+ tiger: Tiger
7
+ rabbit: Rabbit
8
+ dragon: Dragon
9
+ snake: Snake
10
+ horse: Horse
11
+ goat: Goat
12
+ monkey: Monkey
13
+ rooster: Rooster
14
+ dog: Dog
15
+ pig: Pig
@@ -0,0 +1,15 @@
1
+ ru:
2
+ shengxiao:
3
+ signs:
4
+ rat: Крыса
5
+ ox: Бык
6
+ tiger: Тигр
7
+ rabbit: Кролик
8
+ dragon: Дракон
9
+ snake: Змея
10
+ horse: Лошадь
11
+ goat: Коза
12
+ monkey: Обезъяна
13
+ rooster: Петух
14
+ dog: Собака
15
+ pig: Свинья
@@ -0,0 +1,15 @@
1
+ zh-CN:
2
+ shengxiao:
3
+ signs:
4
+ rat: 鼠
5
+ ox: 牛
6
+ tiger: 虎
7
+ rabbit: 兔
8
+ dragon: 龙
9
+ snake: 蛇
10
+ horse: 马
11
+ goat: 羊
12
+ monkey: 猴
13
+ rooster: 鸡
14
+ dog: 狗
15
+ pig: 猪
data/lib/shengxiao.rb ADDED
@@ -0,0 +1,15 @@
1
+ require 'i18n'
2
+ glob = Dir.glob(File.dirname(File.expand_path(__FILE__)))
3
+ I18n.config.load_path += Dir[File.join(glob, 'locales', '*.yml')]
4
+
5
+ require 'date'
6
+ require 'json'
7
+ require 'shengxiao/finder'
8
+
9
+ module ShengXiao
10
+ def self.sign(date)
11
+ ShengXiao::Finder.sign_for(date)
12
+ end
13
+ end
14
+
15
+ require 'shengxiao/date'
@@ -0,0 +1,11 @@
1
+ module ShengXiao
2
+ module SxDate
3
+ def chinese_zodiac_sign
4
+ Finder.sign_for(self)
5
+ end
6
+ end
7
+ end
8
+
9
+ [Date, DateTime].each do |date_class|
10
+ date_class.send(:include, ShengXiao::SxDate)
11
+ end
@@ -0,0 +1,42 @@
1
+ module ShengXiao
2
+ module Finder
3
+ @data = []
4
+
5
+ class << self
6
+ def sign_for(date)
7
+ date = Date.parse(date) unless date.is_a?(Date)
8
+ year = date.year
9
+
10
+ parse_data_from_file if @data.empty?
11
+ year_data = get_year_data(year)
12
+
13
+ raise "Date should be specified in the given range: "\
14
+ "#{@data_start} - #{@data_end}. "\
15
+ "You specified: #{date}." unless year_data
16
+
17
+ year_start_date = Date.parse("#{year_data['start_date']} #{year}")
18
+ if date < year_start_date
19
+ year_data = get_year_data(year-1)
20
+ raise "Given date should be no earlier than #{@data_start}. "\
21
+ "You specified: #{date}." unless year_data
22
+ end
23
+
24
+ sign = year_data["sign"]
25
+ I18n.t("shengxiao.signs.#{sign}")
26
+ end
27
+
28
+ private
29
+
30
+ def parse_data_from_file
31
+ data_file = File.read(File.join(File.dirname(__FILE__), '..', 'data', 'data.json'))
32
+ @data = JSON.parse(data_file)
33
+ @data_start = Date.parse("#{@data.first['start_date']} #{@data.first['year']}")
34
+ @data_end = Date.parse("31 Jan #{@data.last['year']}")
35
+ end
36
+
37
+ def get_year_data(year)
38
+ @data.detect { |d| d['year'] == year.to_s }
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,3 @@
1
+ module ShengXiao
2
+ VERSION = '0.1.0'
3
+ end
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shengxiao
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Albina Yusupova
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-03-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: i18n
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.8.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.8.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: Chinese zodiac calculator gem
42
+ email: yusupova.albina@gmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/data/data.json
48
+ - lib/locales/en.yml
49
+ - lib/locales/ru.yml
50
+ - lib/locales/zh-CN.yml
51
+ - lib/shengxiao.rb
52
+ - lib/shengxiao/date.rb
53
+ - lib/shengxiao/finder.rb
54
+ - lib/shengxiao/version.rb
55
+ homepage: https://github.com/yusupova/shengxiao
56
+ licenses:
57
+ - MIT
58
+ metadata: {}
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements: []
74
+ rubyforge_project:
75
+ rubygems_version: 2.6.10
76
+ signing_key:
77
+ specification_version: 4
78
+ summary: Chinese zodiac (Shengxiao) calculator
79
+ test_files: []