prawn-label_sheet 0.1.0 → 0.2.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
  SHA256:
3
- metadata.gz: f85fe1ff0bc71aa9563acbaa3b21ecac56dd90eb43f6f18f87b448c3587215d7
4
- data.tar.gz: 8ee3acde8e20e96186492bc3cabf187c494ce3cba2b78012525fc9a4c981242d
3
+ metadata.gz: 1d593ea89fd930b39f95de418c4164fbbf9fbf11308d9e6fe24d8d2febebeecf
4
+ data.tar.gz: 3fd4bf13ada22220777b107b3abb5bd4b8a60291c75f9d9617c1921727419f09
5
5
  SHA512:
6
- metadata.gz: 06c27d6a1a091b2da11596c3f84f2091576f7c97fb38604354855ab0d886af983915e26d56b3e23d9867af802999dcf50abb0513e8946d3536d5fa887364a646
7
- data.tar.gz: 3cb58232101e7dd8e1ecfb75a615228df167910dc9a5006f7e88aa21e1605fce3772fc697e78885fbb18de1f346badd1015cee27faf4903dea6e73e9fa056f93
6
+ metadata.gz: 9755747c24dd0e22f744dea0e6483d4580712cf2741cf50d5a852b0bee75b52a47394d8644ffba65a9387cfed105b4951bb96c026d2967f4a66c8dea8377b243
7
+ data.tar.gz: 2189f582469ee7cb745ded23d3eecf865ffc1a2ab16c8ca6efb8b96f2d1db15a06a6d28a449d8abae41a6b1d054024378c0dd1e8ea9ee87adb4929f92daf09e1
@@ -0,0 +1,7 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ open-pull-requests-limit: 10
@@ -0,0 +1,43 @@
1
+ name: Ruby Gem
2
+
3
+ on:
4
+ push:
5
+ tags: [ 'v*.*.*' ]
6
+
7
+ jobs:
8
+ build:
9
+ name: Build + Publish
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ contents: read
13
+ packages: write
14
+
15
+ steps:
16
+ - uses: actions/checkout@v3
17
+ - name: Set up Ruby 2.7
18
+ uses: actions/setup-ruby@v1
19
+ with:
20
+ ruby-version: 2.7.x
21
+
22
+ - name: Publish to GPR
23
+ run: |
24
+ mkdir -p $HOME/.gem
25
+ touch $HOME/.gem/credentials
26
+ chmod 0600 $HOME/.gem/credentials
27
+ printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
28
+ gem build *.gemspec
29
+ gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
30
+ env:
31
+ GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
32
+ OWNER: ${{ github.repository_owner }}
33
+
34
+ - name: Publish to RubyGems
35
+ run: |
36
+ mkdir -p $HOME/.gem
37
+ touch $HOME/.gem/credentials
38
+ chmod 0600 $HOME/.gem/credentials
39
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
40
+ gem build *.gemspec
41
+ gem push *.gem
42
+ env:
43
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
data/.rubocop.yml CHANGED
@@ -2,11 +2,11 @@ inherit_gem:
2
2
  relaxed-rubocop: .rubocop.yml
3
3
 
4
4
  AllCops:
5
- TargetRubyVersion: 2.4
5
+ TargetRubyVersion: 2.7
6
6
 
7
- Layout/AlignArguments:
7
+ Layout/ArgumentAlignment:
8
8
  EnforcedStyle: with_fixed_indentation
9
- Layout/AlignParameters:
9
+ Layout/ParameterAlignment:
10
10
  EnforcedStyle: with_fixed_indentation
11
11
  Layout/MultilineMethodCallIndentation:
12
12
  EnforcedStyle: indented
@@ -16,10 +16,3 @@ Layout/MultilineOperationIndentation:
16
16
  Metrics/BlockLength:
17
17
  Exclude:
18
18
  - example/**/*.rb
19
-
20
- Style/TrivialAccessors:
21
- Exclude:
22
- - lib/prawn/label_sheet/configuration.rb
23
- Style/Documentation:
24
- Exclude:
25
- - lib/prawn/label_sheet/configuration.rb
data/.travis.yml CHANGED
@@ -1,15 +1,16 @@
1
1
  ---
2
- sudo: false
2
+ os: linux
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
- - 2.4
7
- - 2.5.3
8
- - 2.6
9
6
  - 2.7
7
+ - 3.0
8
+ - 3.1
10
9
  - ruby-head
11
- matrix:
10
+ jobs:
12
11
  allow_failures:
13
12
  - rvm: ruby-head
14
13
  fast_finish: true
15
- before_install: gem install bundler -v 2.0.1
14
+ before_install:
15
+ - gem update --system
16
+ - gem install bundler
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ -m markdown - LICENSE.txt
data/README.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # Prawn::LabelSheet
2
2
 
3
+ [![Gem Version](https://img.shields.io/gem/v/prawn-label_sheet.svg)](https://rubygems.org/gems/prawn-label_sheet)
3
4
  [![Codacy Badge](https://api.codacy.com/project/badge/Grade/28933c41f8ed4d39a1c96a5895de2343)](https://app.codacy.com/manual/t.crouch/prawn-label_sheet?utm_source=github.com&utm_medium=referral&utm_content=tcrouch/prawn-label_sheet&utm_campaign=Badge_Grade_Dashboard)
4
5
  [![Inline docs](http://inch-ci.org/github/tcrouch/prawn-label_sheet.svg?branch=master)](http://inch-ci.org/github/tcrouch/prawn-label_sheet)
5
-
6
+ [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/github/tcrouch/prawn-label_sheet)
6
7
 
7
8
  Generate sets of labels or stickers using Prawn PDF.
8
9
 
@@ -6,6 +6,8 @@ module Prawn
6
6
  class LabelSheet
7
7
  # config options
8
8
  class Configuration
9
+ # Default layout key
10
+ # @return [String] the default key
9
11
  attr_accessor :default_layout
10
12
  attr_writer :layouts
11
13
 
@@ -13,31 +15,30 @@ module Prawn
13
15
  @default_layout = 'Avery7160'
14
16
  end
15
17
 
16
- # @return [Hash]
18
+ # Layout definitions
19
+ #
20
+ # @return [{String => Hash}]
17
21
  def layouts
18
22
  @layouts ||= YAML.load_file(File.expand_path('layouts.yml', __dir__))
19
23
  end
20
24
  end
21
25
 
22
- # Current configuration
23
- #
24
- # @return [Prawn::LabelSheet::Configuration]
25
- def self.config
26
- @config ||= Configuration.new
27
- end
26
+ class << self
27
+ attr_writer :config
28
28
 
29
- # Define configuration
30
- #
31
- # @param configuration [Prawn::LabelSheet::Configuration]
32
- def self.config=(configuration)
33
- @config = configuration
34
- end
29
+ # Current configuration
30
+ #
31
+ # @return [Prawn::LabelSheet::Configuration]
32
+ def config
33
+ @config ||= Configuration.new
34
+ end
35
35
 
36
- # Modify configuration
37
- #
38
- # @yieldparam config [Prawn::LabelSheet::Configuration]
39
- def self.configure
40
- yield config
36
+ # Modify configuration
37
+ #
38
+ # @yieldparam config [Prawn::LabelSheet::Configuration]
39
+ def configure
40
+ yield config
41
+ end
41
42
  end
42
43
  end
43
44
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Prawn
4
4
  class LabelSheet
5
- VERSION = '0.1.0'
5
+ # Gem version
6
+ VERSION = '0.2.0'
6
7
  end
7
8
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'prawn'
4
- require 'polyfill'
5
4
  require 'prawn/label_sheet/version'
6
5
  require 'prawn/label_sheet/configuration'
7
6
 
@@ -15,37 +14,34 @@ module Prawn
15
14
  class Error < StandardError; end
16
15
 
17
16
  # Override Prawn::View#document
18
-
19
- attr_reader :document, :layout
20
-
21
- using Polyfill(Hash: %w[#transform_keys])
17
+ attr_reader :document
18
+ attr_reader :layout
22
19
 
23
20
  # Render and persist a set of label sheets
24
21
  #
25
- # @param labels [Enumerable, CSV]
22
+ # @param filename [String] Name of output file
23
+ # @param labels (see #initialize)
26
24
  # @param options (see #initialize)
25
+ # @yieldparam (see #initialize)
27
26
  def self.generate(filename, labels, **options, &block)
28
- pdf = new(labels, options, &block)
27
+ pdf = new(labels, **options, &block)
29
28
  pdf.document.render_file(filename)
30
29
  end
31
30
 
32
31
  # @param labels [Enumerable] collection of labels
33
32
  # @option options [String] :layout
34
- # @option options [Proc, Integer] :break_on
33
+ # @option options [Proc, Integer, String] :break_on
35
34
  # @option options [Prawn::Document] :document
36
- def initialize(labels, **options)
37
- @layout = setup_layout(options[:layout])
38
-
39
- @document = resolve_document(options[:document])
40
- @document.define_grid @layout
41
- # @document.on_page_create { self.instance_variable_set :@count, 0 }
35
+ # @yieldparam doc (see #make_label)
36
+ # @yieldparam item (see #make_label)
37
+ def initialize(labels, **options, &block)
38
+ @layout = setup_layout(options[:layout]).merge(info: options[:info])
39
+ @document = setup_document(options[:document], @layout)
42
40
 
43
41
  @count = 0
44
42
  @break_on = options[:break_on]
45
43
 
46
- labels.each do |label|
47
- make_label(label, options) { |pdf, item| yield pdf, item }
48
- end
44
+ labels.each { |label| make_label(label, options, &block) }
49
45
  end
50
46
 
51
47
  # Generate individual label
@@ -57,9 +53,7 @@ module Prawn
57
53
  def make_label(item, _options)
58
54
  break_page if break_page?(item)
59
55
 
60
- @document.grid(*gridref).bounding_box do
61
- yield @document, item
62
- end
56
+ @document.grid(*gridref).bounding_box { yield @document, item }
63
57
  @count += 1
64
58
  end
65
59
 
@@ -70,7 +64,7 @@ module Prawn
70
64
  # @param item [Proc, #[]]
71
65
  # @return [Boolean]
72
66
  def break_page?(item)
73
- return unless @break_on
67
+ return false unless @break_on
74
68
 
75
69
  val = @break_on.is_a?(Proc) ? @break_on.call(item) : item[@break_on]
76
70
  return false if @last_val == val
@@ -99,21 +93,20 @@ module Prawn
99
93
  r.divmod(@document.grid.columns)
100
94
  end
101
95
 
96
+ # Extract definition & provide defaults for required keys
97
+ #
102
98
  # @param layout_def [String, #to_h] layout definition or identifier
103
99
  # @return [Hash]
104
- # rubocop:disable Style/RescueModifier
105
100
  def setup_layout(layout_def)
106
101
  defs = resolve_layout(layout_def).slice(
107
102
  'page_size', 'columns', 'rows',
108
103
  'top_margin', 'bottom_margin',
109
104
  'left_margin', 'right_margin',
110
105
  'column_gutter', 'row_gutter'
111
- )
112
- {
113
- page_size: 'A4', top_margin: 40, left_margin: 20
114
- }.merge!(defs.transform_keys { |key| key.to_sym rescue key })
106
+ ).transform_keys(&:to_sym)
107
+
108
+ { page_size: 'A4', top_margin: 40, left_margin: 20 }.merge!(defs)
115
109
  end
116
- # rubocop:enable Style/RescueModifier
117
110
 
118
111
  # Lookup layout definition
119
112
  #
@@ -127,11 +120,13 @@ module Prawn
127
120
  end
128
121
 
129
122
  # @param doc [Prawn::Document, nil]
123
+ # @param layout [Hash]
130
124
  # @return [Prawn::Document]
131
- def resolve_document(doc)
132
- return doc.start_new_page(@layout) if doc
133
-
134
- Document.new @layout
125
+ def setup_document(doc, layout)
126
+ doc&.start_new_page(layout)
127
+ doc ||= Document.new layout
128
+ doc.define_grid layout
129
+ doc
135
130
  end
136
131
 
137
132
  # @return [Prawn::LabelSheet::Configuration]
@@ -27,14 +27,14 @@ Gem::Specification.new do |spec|
27
27
  spec.bindir = 'exe'
28
28
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
29
  spec.require_paths = ['lib']
30
- spec.required_ruby_version = ">= 2.4.0"
30
+ spec.required_ruby_version = ">= 2.7.0"
31
31
 
32
- spec.add_dependency 'polyfill', '~> 1.1.0'
32
+ spec.add_dependency 'matrix'
33
33
  spec.add_dependency 'prawn'
34
34
 
35
35
  spec.add_development_dependency 'bundler', '~> 2.0'
36
- spec.add_development_dependency 'rake', '~> 10.0'
37
- spec.add_development_dependency 'relaxed-rubocop', '~> 2.4'
36
+ spec.add_development_dependency 'rake', '~> 13.0'
37
+ spec.add_development_dependency 'relaxed-rubocop', '~> 2.5'
38
38
  spec.add_development_dependency 'rspec', '~> 3.0'
39
- spec.add_development_dependency 'rubocop', '~> 0.74'
39
+ spec.add_development_dependency 'rubocop', '~> 1.8'
40
40
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prawn-label_sheet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Crouch
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-21 00:00:00.000000000 Z
11
+ date: 2022-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: polyfill
14
+ name: matrix
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.1.0
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.1.0
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: prawn
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,28 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '13.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '13.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: relaxed-rubocop
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '2.4'
75
+ version: '2.5'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '2.4'
82
+ version: '2.5'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0.74'
103
+ version: '1.8'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0.74'
110
+ version: '1.8'
111
111
  description: 'Generate sets of labels or stickers programmatically using Prawn PDF.
112
112
 
113
113
  '
@@ -117,10 +117,13 @@ executables: []
117
117
  extensions: []
118
118
  extra_rdoc_files: []
119
119
  files:
120
+ - ".github/dependabot.yml"
121
+ - ".github/workflows/gem-push.yml"
120
122
  - ".gitignore"
121
123
  - ".rspec"
122
124
  - ".rubocop.yml"
123
125
  - ".travis.yml"
126
+ - ".yardopts"
124
127
  - Gemfile
125
128
  - LICENSE.txt
126
129
  - README.md
@@ -144,15 +147,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
147
  requirements:
145
148
  - - ">="
146
149
  - !ruby/object:Gem::Version
147
- version: 2.4.0
150
+ version: 2.7.0
148
151
  required_rubygems_version: !ruby/object:Gem::Requirement
149
152
  requirements:
150
153
  - - ">="
151
154
  - !ruby/object:Gem::Version
152
155
  version: '0'
153
156
  requirements: []
154
- rubyforge_project:
155
- rubygems_version: 2.7.6
157
+ rubygems_version: 3.1.6
156
158
  signing_key:
157
159
  specification_version: 4
158
160
  summary: Generate PDF sets of labels & stickers.