upc_gen 0.0.2 → 1.0.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: 7b17879a6472555c7f49860082ec16180efc0ddeefa372f37b041464f75d0a6e
4
- data.tar.gz: 8b208d0fad9c7d34b2ffbadd9c196cbc0638293cc94345b3d549f87332ad7e5b
3
+ metadata.gz: 592ae5a99b0110eac6fec211170bc5f0c77e16523832368853e4e5cb71c7bf1e
4
+ data.tar.gz: e1f5806b26bc879c00ecc35036607c4391b7b4103494a527d05965d5a83fd5e7
5
5
  SHA512:
6
- metadata.gz: 2e3700d5a596218846ecec4f2f418d4de349d2f6349e9c478cc3db287bb85c8402ae9ff456dab42924f15b3e77aad7184a0356ef097f0a11cb3774833479bf65
7
- data.tar.gz: 4a1a7317ef4c0e5ab93cc4fe8389c25f5c5f11e5fd5c0f3449b5cecd83789bf30c795824496c740d1c696da9cbda548768e7599843318e126ab1430467d9eabd
6
+ metadata.gz: 2e8802781913349d4d3ee41229ce33cbc465b505d9de88584cadd8c1cb64c95d5bf743cc2da8a3afdf16a1951aa9a4d98dacabcbbaf7eaa46a9e3bc8d431b174
7
+ data.tar.gz: 68920cbbce0c8b7161226a97a42ec9c6e28893ae5519fc8b5dec854e694a73ac156dac892ab48b3677cf8e430bd12103d230dc93e4d31e24cd8c2d55f88d1f8f
data/.rubocop.yml ADDED
@@ -0,0 +1,18 @@
1
+ Layout/LineLength:
2
+ Max: 120
3
+ Style/Documentation:
4
+ Enabled: false
5
+ Style/FrozenStringLiteralComment:
6
+ Enabled: false
7
+ Style/StringLiterals:
8
+ Enabled: false
9
+ Style/BlockDelimiters:
10
+ EnforcedStyle: semantic
11
+ Layout/SpaceInsideHashLiteralBraces:
12
+ EnforcedStyle: no_space
13
+ AllCops:
14
+ TargetRubyVersion: 2.4.0
15
+ NewCops: enable
16
+ Metrics/BlockLength:
17
+ Exclude:
18
+ - 'spec/**/*_spec.rb'
data/Gemfile CHANGED
@@ -3,9 +3,10 @@ source "https://rubygems.org"
3
3
  # Specify your gem's dependencies in upc_gen.gemspec
4
4
  gemspec
5
5
 
6
+ gem "guard-rspec"
7
+ gem "pry-byebug"
6
8
  gem "rake", "~> 12.0"
7
- gem "rspec", "~> 3.0"
9
+ gem "rspec", "~> 3.10.0"
8
10
  gem "simplecov"
9
- gem "pry-byebug"
10
- gem "guard-rspec"
11
11
  gem "solargraph"
12
+ gem "standard"
data/Guardfile CHANGED
@@ -1,6 +1,6 @@
1
- guard :rspec, cmd: 'rspec', failed_mode: :keep do
1
+ guard :rspec, cmd: "rspec", failed_mode: :keep do
2
2
  watch(%r{^spec/.+_spec\.rb$})
3
3
  watch(%r{^spec/support/(.+)\.rb$})
4
- watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
5
- watch('spec/spec_helper.rb') { "spec" }
4
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
5
+ watch("spec/spec_helper.rb") { "spec" }
6
6
  end
data/README.md CHANGED
@@ -15,12 +15,14 @@ Run on command line like `upc_gen <optional-number-string><optional-char>`
15
15
  - If the string of numbers is followed by a '-', a code will be found that ends with those digits, including check digit
16
16
 
17
17
  Examples:
18
- >: upc_gen 001234
19
- 2938210012347
20
- >: upc_gen 001234.
21
- 0012348367936
22
- >: upc_gen 001234-
23
- 4493664001234
18
+ ```
19
+ >: upc_gen 001234
20
+ 2938210012347
21
+ >: upc_gen 001234.
22
+ 0012348367936
23
+ >: upc_gen 001234-
24
+ 4493664001234
25
+ ````
24
26
 
25
27
  ## Development
26
28
 
data/Rakefile CHANGED
@@ -3,4 +3,4 @@ require "rspec/core/rake_task"
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
data/exe/upc_gen CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'upc_gen'
3
+ require "upc_gen"
4
4
  UpcGen::Shell.start(ARGV)
data/lib/upc_gen/shell.rb CHANGED
@@ -1,38 +1,41 @@
1
- require 'optparse'
1
+ require "optparse"
2
2
 
3
3
  module UpcGen
4
4
  class Shell
5
- BANNER = <<"EOT"
6
- usage: #{$0} <optional-number-string><optional-char>
5
+ BANNER = <<~"MSG".freeze
6
+ usage: #{$PROGRAM_NAME} <optional-number-string><optional-char>
7
7
 
8
- Prints a random UPC code
8
+ Prints a random UPC code
9
9
 
10
- If a number string is passed, the code before the check digit will end with those digits
11
- If the string of numbers is followed by a '.', the random code will start with those digits
12
- If the string of numbers is followed by a '-', a code will be found that ends with those digits, including check digit
13
- EOT
10
+ If a number string is passed, the code before the check digit will end with those digits
11
+ If the string of numbers is followed by a '.', the random code will start with those digits
12
+ If the string of numbers is followed by a '-', a code will be found that ends with those digits, including check digit
13
+ MSG
14
14
 
15
- def self.usage(err: STDERR)
15
+ def self.usage(err: $stderr)
16
16
  err.puts BANNER
17
17
  exit 1
18
18
  end
19
19
 
20
- def self.start(argv, out: STDOUT, err: STDERR)
20
+ def self.gather_options(argv)
21
21
  options = {
22
22
  show_version: false
23
23
  }
24
24
 
25
- OptionParser.new do |parser|
25
+ OptionParser.new { |parser|
26
26
  parser.banner = BANNER
27
27
 
28
28
  parser.on("-v", "--version", "Show version") do |version|
29
29
  options[:version] = version
30
30
  end
31
- end.parse! argv
31
+ }.parse! argv
32
+ options
33
+ end
34
+
35
+ def self.start(argv, out: $stdout, err: $stderr) # rubocop:disable Lint/UnusedMethodArgument
36
+ options = gather_options(argv)
32
37
 
33
- if options.delete(:version)
34
- out.puts "version: #{UpcGen::VERSION}"
35
- end
38
+ out.puts "version: #{UpcGen::VERSION}" if options.delete(:version)
36
39
 
37
40
  out.puts UpcGenerator.new(argv[0]).generate
38
41
  end
@@ -1,6 +1,6 @@
1
- require 'ean13'
1
+ require "ean13"
2
2
 
3
- Encoding.default_external = 'UTF-8'
3
+ Encoding.default_external = "UTF-8"
4
4
 
5
5
  module UpcGen
6
6
  class UpcGenerator
@@ -8,47 +8,57 @@ module UpcGen
8
8
  @seed = seed
9
9
  end
10
10
 
11
- def n_random_digits(n)
12
- (1..n).map { rand(10) }.join
11
+ def n_random_digits(num)
12
+ (1..num).map { rand(10) }.join
13
13
  end
14
14
 
15
- def find_code_ending_on(n)
16
- digits = n[0...-1]
17
- check = n[-1]
18
- n_random_digits(12 - n.length)
15
+ def find_code_ending_on(num)
16
+ digits = num[0...-1]
17
+ check = num[-1]
18
+ n_random_digits(12 - num.length)
19
19
  candidate = EAN13.complete(n_random_digits(12 - digits.length) + digits)
20
- while(candidate[-1] != check)
21
- candidate = EAN13.complete(n_random_digits(12 - digits.length) + digits)
22
- end
20
+ candidate = EAN13.complete(n_random_digits(12 - digits.length) + digits) while candidate[-1] != check
23
21
  candidate
24
22
  end
25
23
 
24
+ def fill_number_string(number_string, random_position)
25
+ return number_string if number_string.length >= 12
26
+
27
+ case random_position
28
+ when :start
29
+ number_string + n_random_digits(12 - number_string.length)
30
+ else
31
+ n_random_digits(12 - number_string.length) + number_string
32
+ end
33
+ end
34
+
35
+ def generate_for_seed
36
+ number_string = @seed
37
+ random_position = :end
38
+ unless /^\d+$/.match?(number_string)
39
+ random_position = :forced_end if /\d-/.match?(number_string)
40
+ random_position = :start if /\d\./.match?(number_string)
41
+ number_string = number_string.match(/^\d+/)[0]
42
+ end
43
+
44
+ return find_code_ending_on(number_string) if random_position == :forced_end
45
+
46
+ fill_number_string(number_string, random_position)
47
+ end
48
+
49
+ def complete(upc)
50
+ if [12, 13].include? upc.length
51
+ EAN13.complete upc[0...12]
52
+ else
53
+ :invalid
54
+ end
55
+ end
56
+
26
57
  def generate
27
58
  if @seed
28
- number_string = @seed
29
- random_position = :end
30
- unless number_string =~ /^\d*$/
31
- if number_string =~ /\d-/
32
- random_position = :forced_end
33
- end
34
- if number_string =~ /\d\./
35
- random_position = :start
36
- end
37
- number_string = number_string.match(/^\d+/)[0]
38
- end
39
-
40
- if number_string.length < 12
41
- if random_position == :start
42
- number_string += n_random_digits(12 - number_string.length)
43
- elsif random_position == :forced_end
44
- return find_code_ending_on(number_string)
45
- else
46
- number_string = n_random_digits(12 - number_string.length) + number_string
47
- end
48
- end
49
- EAN13.complete number_string
59
+ complete generate_for_seed
50
60
  else
51
- EAN13.complete n_random_digits(12)
61
+ complete n_random_digits(12)
52
62
  end
53
63
  end
54
64
  end
@@ -1,3 +1,3 @@
1
1
  module UpcGen
2
- VERSION = "0.0.2"
2
+ VERSION = "1.0.0".freeze
3
3
  end
data/lib/upc_gen.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Encoding.default_external = 'UTF-8'
3
+ Encoding.default_external = "UTF-8"
4
4
 
5
5
  require "upc_gen/version"
6
6
 
7
7
  module UpcGen
8
8
  def self.root
9
- Pathname.new(File.absolute_path(File.join(File.dirname(__FILE__), '..')))
9
+ Pathname.new(File.absolute_path(File.join(File.dirname(__FILE__), "..")))
10
10
  end
11
11
 
12
- autoload :UpcGenerator , 'upc_gen/upc_generator'
13
- autoload :Shell , 'upc_gen/shell'
12
+ autoload :UpcGenerator, "upc_gen/upc_generator"
13
+ autoload :Shell, "upc_gen/shell"
14
14
  end
data/upc_gen.gemspec CHANGED
@@ -1,22 +1,22 @@
1
- require_relative 'lib/upc_gen/version'
1
+ require_relative "lib/upc_gen/version"
2
2
 
3
3
  Gem::Specification.new do |spec|
4
- spec.name = "upc_gen"
5
- spec.version = UpcGen::VERSION
6
- spec.authors = ["Tom ten Thij"]
7
- spec.email = ["code@tomtenthij.nl"]
4
+ spec.name = "upc_gen"
5
+ spec.version = UpcGen::VERSION
6
+ spec.authors = ["Tom ten Thij"]
7
+ spec.email = ["code@tomtenthij.nl"]
8
8
 
9
- spec.summary = %q{A skeleton to start a gem from}
10
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
9
+ spec.summary = "Tool to generate ean13 upc barcodes, starting or ending with specific values"
10
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
11
11
 
12
12
  # Specify which files should be added to the gem when it is released.
13
13
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
14
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
14
+ spec.files = Dir.chdir(File.expand_path(__dir__)) {
15
15
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
- end
17
- spec.bindir = "exe"
18
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
16
+ }
17
+ spec.bindir = "exe"
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency('ean13', '~> 2.0.2')
21
+ spec.add_dependency("ean13", "~> 2.0.2")
22
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upc_gen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom ten Thij
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-29 00:00:00.000000000 Z
11
+ date: 2022-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ean13
@@ -24,7 +24,7 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.0.2
27
- description:
27
+ description:
28
28
  email:
29
29
  - code@tomtenthij.nl
30
30
  executables:
@@ -36,6 +36,7 @@ files:
36
36
  - ".github/workflows/ruby.yml"
37
37
  - ".gitignore"
38
38
  - ".rspec"
39
+ - ".rubocop.yml"
39
40
  - ".travis.yml"
40
41
  - CODE_OF_CONDUCT.md
41
42
  - Gemfile
@@ -51,10 +52,10 @@ files:
51
52
  - lib/upc_gen/upc_generator.rb
52
53
  - lib/upc_gen/version.rb
53
54
  - upc_gen.gemspec
54
- homepage:
55
+ homepage:
55
56
  licenses: []
56
57
  metadata: {}
57
- post_install_message:
58
+ post_install_message:
58
59
  rdoc_options: []
59
60
  require_paths:
60
61
  - lib
@@ -62,15 +63,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
62
63
  requirements:
63
64
  - - ">="
64
65
  - !ruby/object:Gem::Version
65
- version: 2.3.0
66
+ version: 2.4.0
66
67
  required_rubygems_version: !ruby/object:Gem::Requirement
67
68
  requirements:
68
69
  - - ">="
69
70
  - !ruby/object:Gem::Version
70
71
  version: '0'
71
72
  requirements: []
72
- rubygems_version: 3.0.3
73
- signing_key:
73
+ rubygems_version: 3.1.4
74
+ signing_key:
74
75
  specification_version: 4
75
- summary: A skeleton to start a gem from
76
+ summary: Tool to generate ean13 upc barcodes, starting or ending with specific values
76
77
  test_files: []