petrarca 0.2.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 78b04a2cf61f74ad207570c95631cf1a2187be066ee096ab0a321799e45fb986
4
- data.tar.gz: 12625949933981779b0cc28a3b5267565e877a1e27dbe4ecfd9f92ecc68bee9a
3
+ metadata.gz: e588fc804e558ead549eeb33f9eeecf157c2d0652927a8ec8057f0057400f932
4
+ data.tar.gz: e25faf3cf900c1ced7f34884e347c21b3094db97e3ad49640ed8a721c07dc376
5
5
  SHA512:
6
- metadata.gz: 58460aad6cbfc5b8c251a1dd9ab897cae10366cb46b8db8374c6242818364bca9875ce6bc3413262fc71a729f87ab1df87f5cd13fb4bc442e2bc1358634dff71
7
- data.tar.gz: b25f466050d74bf9b2b2182aeb2174c5e480b71c31de54fa1aed7ce5168c40cd1c975ff1194ff8d30c0539413212e42e84d4ae550754f32e159b5bcf408887ab
6
+ metadata.gz: 4c0add5276c9ab9f1c1babae1d7838771eaf693eda6acf6840fb5c94e78fc85ac70b2e659db2c37e1afa8757f4cba205120f7687385e3406c8b44127dfbd8ce7
7
+ data.tar.gz: 0efc1a6cdda198cec9799242a976fc5403d9374ec54237027133d181507e79c933606fcba37d11214d712c7fc79748fd664d54bc385f5a44a0868cbc2fa7d136
@@ -59,12 +59,12 @@ module Petrarca
59
59
  end
60
60
 
61
61
  def to_10(isbn13)
62
- s = isbn13.to_s.delete("-")[3..11]
62
+ s = isbn13.to_s.delete("-")[3, 9]
63
63
  ISBN10.hyphenate(s + ISBN10.calc_check_digit(s))
64
64
  end
65
65
 
66
66
  def to_13(isbn10)
67
- s = "978" + isbn10.to_s.delete("-")[0..8]
67
+ s = "978" + isbn10.to_s.delete("-")[0, 9]
68
68
  ISBN13.hyphenate(s + ISBN13.calc_check_digit(s))
69
69
  end
70
70
 
@@ -1,28 +1,22 @@
1
1
  module Petrarca
2
2
  module Helpers
3
3
 
4
+ extend self
5
+
4
6
  def split_to_parts(body, ranges)
5
- g = ""
6
- ranges.each do |range_str|
7
+ ranges.map do |range_str|
7
8
  s, e = range_str.split("-")
8
- g = body[0..(s.size - 1)]
9
- break if Range.new(s.to_i, e.to_i).cover?(g.to_i)
10
- end
11
- [g, body[(g.size)..]]
12
- end
13
-
14
- def hyphenate13(isbn)
15
- ean_prefix = isbn[0..2]
16
- body = isbn[3..11]
17
- check_digit = isbn[12..12]
18
- registration_group, body = split_to_parts(body, REGISTRATION_GROUP_RANGES[ean_prefix])
19
- prefix = "#{ean_prefix}-#{registration_group}"
20
- registrant, publication = split_to_parts(body, REGISTRANT_RANGES[prefix])
21
- [ean_prefix, registration_group, registrant, publication, check_digit].join("-")
9
+ prefix = body[0, s.size]
10
+ if Range.new(s.to_i, e.to_i).cover?(prefix.to_i)
11
+ [prefix, body[(prefix.size)..]]
12
+ else
13
+ nil
14
+ end
15
+ end.compact.first
22
16
  end
23
17
 
24
18
 
25
- def self.load_ranges(range_file)
19
+ def load_ranges(range_file)
26
20
  ranges = {}
27
21
  File.open(range_file, "r") do |f|
28
22
  f.each_line do |line|
@@ -4,8 +4,6 @@ require "petrarca/helpers"
4
4
  module Petrarca
5
5
  module ISBN10
6
6
 
7
- include Helpers
8
-
9
7
  extend self
10
8
 
11
9
  def valid?(isbn)
@@ -18,7 +16,7 @@ module Petrarca
18
16
  end
19
17
 
20
18
  def calc_check_digit(isbn)
21
- nums = isbn.delete("-").split("")[0..8].map{|x| x.to_i }
19
+ nums = isbn.delete("-").split("")[0, 9].map{|x| x.to_i }
22
20
  sum = nums.zip((2..10).to_a.reverse).map{|x, y| x * y }.inject(:+)
23
21
  check_digit = 11 - (sum % 11)
24
22
  case check_digit
@@ -32,7 +30,7 @@ module Petrarca
32
30
  end
33
31
 
34
32
  def hyphenate(isbn)
35
- s = hyphenate13("978" + isbn)
33
+ s = ISBN13.hyphenate("978" + isbn)
36
34
  s.sub(/^978-/, "")
37
35
  end
38
36
 
@@ -4,8 +4,6 @@ require "petrarca/helpers"
4
4
  module Petrarca
5
5
  module ISBN13
6
6
 
7
- include Helpers
8
-
9
7
  extend self
10
8
 
11
9
  def valid?(isbn)
@@ -18,14 +16,20 @@ module Petrarca
18
16
  end
19
17
 
20
18
  def calc_check_digit(isbn)
21
- nums = isbn.delete("-").split("")[0..11].map{|x| x.to_i }
19
+ nums = isbn.delete("-").split("")[0, 12].map{|x| x.to_i }
22
20
  sum = nums.zip([1, 3] * 6).map{|x, y| x * y }.inject(:+)
23
21
  check_digit = 10 - (sum % 10)
24
22
  check_digit == 10 ? "0" : check_digit.to_s
25
23
  end
26
24
 
27
25
  def hyphenate(isbn)
28
- hyphenate13(isbn)
26
+ ean_prefix = isbn[0, 3]
27
+ body = isbn[3, 9]
28
+ check_digit = isbn[12, 1]
29
+ registration_group, body = Helpers.split_to_parts(body, REGISTRATION_GROUP_RANGES[ean_prefix])
30
+ prefix = "#{ean_prefix}-#{registration_group}"
31
+ registrant, publication = Helpers.split_to_parts(body, REGISTRANT_RANGES[prefix])
32
+ [ean_prefix, registration_group, registrant, publication, check_digit].join("-")
29
33
  end
30
34
 
31
35
  end
@@ -1,3 +1,3 @@
1
1
  module Petrarca
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -13,6 +13,8 @@ Gem::Specification.new do |spec|
13
13
  spec.description = %q{Library to manipulate ISBN numbers for Ruby.}
14
14
  spec.homepage = "https://github.com/takatoh/Petrarca"
15
15
 
16
+ spec.licenses = ["MIT"]
17
+
16
18
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
19
  # to allow pushing to a single host or delete this section to allow pushing to any host.
18
20
  # if spec.respond_to?(:metadata)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: petrarca
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - takatoh
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-30 00:00:00.000000000 Z
11
+ date: 2020-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -76,7 +76,8 @@ files:
76
76
  - lib/petrarca/version.rb
77
77
  - petrarca.gemspec
78
78
  homepage: https://github.com/takatoh/Petrarca
79
- licenses: []
79
+ licenses:
80
+ - MIT
80
81
  metadata: {}
81
82
  post_install_message:
82
83
  rdoc_options: []