pigeon_band 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 89627bdafb67b4c29ff45d574a94a89035841c07
4
- data.tar.gz: 9a2a36e86ea842aaff7908415f9dcbe3fd31679a
3
+ metadata.gz: f9bb12b73441bd04685095520d4beb619b64b821
4
+ data.tar.gz: db6173092cf90a4a29deb5ca97dc3bc602744114
5
5
  SHA512:
6
- metadata.gz: 287cb8976481aa8447c2ebaa9d36556bf4af979f56605f275b9dbe8be51eee237a1d9c4b388002e71fe300dc14766c5306f986d7a14cd2fa22cf6ab099b1443c
7
- data.tar.gz: cffffe5db7db81b60baa52f800e47eea305dca968f13cfb73cc704c1d16e02b1f3ef86f0751b90420b0601f5aa7c794428b951167da2310e7a1e1fe48bd47955
6
+ metadata.gz: 855afe5fddec55de982a639dcef2fede78965998f28a14db6e0e737db3296a4d72fe668a0c64d2335d4760926bf4f5108f049b4f648cb5da32752c259da23bbc
7
+ data.tar.gz: cd104cd192bc447279a57ff88d7ceb2e1e164b943a15d1d9ed07b6771bb6c9f7e85622359f618a448fac73140f1c1db51cb7bc4b221b3c1a4854c8e327c2789f
data/README.md CHANGED
@@ -35,12 +35,7 @@ above bands a input, a call to PigeonBand#format would return the following hash
35
35
 
36
36
  ```ruby
37
37
  PigeonBand.format("DV-06914-12-479")
38
- {
39
- band: "DV-06914-12-479"
40
- slug: "DV-06914-12-0479"
41
- year: 2012
42
- code: "DE"
43
- }
38
+ { band: "DV-06914-12-479" coll: "DV-06914-12-0479" year: 2012 code: "DE" }
44
39
  ```
45
40
  ## Development
46
41
 
data/lib/pigeon_band.rb CHANGED
@@ -2,7 +2,7 @@ require "pigeon_band/version"
2
2
 
3
3
  module PigeonBand
4
4
  def self.format(band, country = COUNTRY)
5
- raise "missing input for pigeon band" if band.nil? or band == ""
5
+ return { error: "missing input for pigeon band" } if band.nil? or band.match(/\A[[:space:]]*\z/)
6
6
  band_msg = "in pigeon band '#{band}'"
7
7
  band.upcase!
8
8
  band.tr!('. /', '---')
@@ -11,49 +11,57 @@ module PigeonBand
11
11
  case list[0]
12
12
  when 'B'
13
13
  year = get_year(band, list[1], band_msg)
14
+ return year if year.is_a?(Hash)
14
15
  sequ = get_number(band, list[2], "counter", 1, 9999999, band_msg)
16
+ return sequ if sequ.is_a?(Hash)
15
17
  band = sprintf("B-%02d-%07d", year % 100, sequ)
16
- slug = band
18
+ coll = band
17
19
  code = 'BE'
18
20
  when 'DV'
19
21
  club = get_number(band, list[1], "club", 1, 9999, band_msg)
22
+ return club if club.is_a?(Hash)
20
23
  year = get_year(band, list[2], band_msg)
24
+ return year if year.is_a?(Hash)
21
25
  sequ = get_number(band, list[3], "counter", 1, 9999, band_msg)
26
+ return sequ if sequ.is_a?(Hash)
22
27
  band = sprintf("DV-0%d-%02d-%d", club, year % 100, sequ)
23
- slug = sprintf("DV-%05d-%02d-%04d", club, year % 100, sequ)
28
+ coll = sprintf("DV-%05d-%02d-%04d", club, year % 100, sequ)
24
29
  code = 'DE'
25
30
  when 'NL'
26
31
  year = get_year(band, list[1], band_msg)
32
+ return year if year.is_a?(Hash)
27
33
  sequ = get_number(band, list[2], "counter", 1, 9999999, band_msg)
34
+ return sequ if sequ.is_a?(Hash)
28
35
  band = sprintf("NL-%02d-%07d", year % 100, sequ)
29
- slug = band
36
+ coll = band
30
37
  code = 'NL'
31
38
  else
32
- raise "Please add more formats at https://github.com/volkerwiegand/pigeon_band"
39
+ url = PigeonBand::HOMEPAGE
40
+ return { error: "unknown country '#{list[0]}'. Please add more countries at #{url}" }
33
41
  end
34
- { band: band, slug: slug, year: year, code: code }
42
+ { band: band, coll: coll, year: year, code: code, error: nil}
35
43
  end
36
44
 
37
45
  private
38
46
 
47
+ def self.get_number(band, num, num_type, min_num, max_num, band_msg)
48
+ return { error: "missing #{num_type} #{band_msg}" } if num.nil? or num.empty?
49
+ return { error: "invalid #{num_type} '#{num}' #{band_msg}" } unless num.match(/^\d/)
50
+ num = num.to_i
51
+ return { error: "#{num_type} '#{num}' too small #{band_msg}" } if num < min_num
52
+ return { error: "#{num_type} '#{num}' too big #{band_msg}" } if num > max_num
53
+ return num
54
+ end
55
+
39
56
  def self.get_year(band, year, band_msg)
40
- raise "missing year #{band_msg}" if year.nil? or year == ""
41
- raise "invalid year '#{year}' #{band_msg}" unless year.match(/^\d/)
57
+ return { error: "missing year #{band_msg}" } if year.nil? or year.empty?
58
+ return { error: "invalid year '#{year}' #{band_msg}" } unless year.match(/^\d/)
42
59
  year = year.to_i
43
- raise "year '#{year}' out of range #{band_msg}" if year < 0 or year > 99
60
+ return { error: "year '#{year}' out of range #{band_msg}" } if year < 0 or year > 99
44
61
  year += 2000
45
62
  year -= 100 if year > (Time.now.to_date.year + 5)
46
63
  return year
47
64
  end
48
-
49
- def self.get_number(band, num, num_type, min_num, max_num, band_msg)
50
- raise "missing #{num_type} #{band_msg}" if num.nil? or num == ""
51
- raise "invalid #{num_type} '#{num}' #{band_msg}" unless num.match(/^\d/)
52
- num = num.to_i
53
- raise "#{num_type} '#{num}' too small #{band_msg}" if num < min_num
54
- raise "#{num_type} '#{num}' too big #{band_msg}" if num > max_num
55
- return num
56
- end
57
65
  end
58
66
 
59
67
  # vim: set et ts=2 sw=2 ai:
@@ -1,4 +1,5 @@
1
1
  module PigeonBand
2
- VERSION = "0.1.0"
2
+ VERSION = "1.0.0"
3
3
  COUNTRY = "DV"
4
+ HOMEPAGE = "https://github.com/volkerwiegand/pigeon_band"
4
5
  end
data/pigeon_band.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["volker.wiegand@cvw.de"]
11
11
  spec.summary = %q{Pigeon band formatter}
12
12
  spec.description = %q{Format year and collation sequence for pigeon bands of various countries}
13
- spec.homepage = "https://github.com/volkerwiegand/pigeon_band"
13
+ spec.homepage = PigeonBand::HOMEPAGE
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pigeon_band
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Volker Wiegand
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-01 00:00:00.000000000 Z
11
+ date: 2015-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord