proxy-mate 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 96c213b51f76c34faa61934bf6480cc075d33a063c0756dc8d7c435404c117e6
4
+ data.tar.gz: 41e83005ab697e99f74898449fe42acc4b16d9eb73fa554b424349e12155847c
5
+ SHA512:
6
+ metadata.gz: c07c9e324f370753a696fb0f44986744ca110b02d22fd42cdf89db62e70ef6c7ca5417aa60328bf30d0e943d2b211776a425de03fcb1d2247621a770f69da73b
7
+ data.tar.gz: c4434c8aff88b78f32cd799d53c72d261c845aca2aa449fe7518815c1506cab86e64596ff50420048a5aff5a39297d1837367afb60ebac1207d78cc0bcd42d24
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'proxy_mate'
6
+
7
+ ProxyMate.new(
8
+ File.open(ARGV[0]).each_line.map(&:strip).reject(&:empty?),
9
+ ARGV[1]
10
+ ).generate
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'proxy_mate/version'
4
+ require 'prawn'
5
+ require 'prawn/measurement_extensions'
6
+
7
+ class ProxyMate # rubocop:disable Style/Documentation
8
+ PAGE_SIZE = 'A4'
9
+ PAGE_WIDTH = 210.mm
10
+ PAGE_HEIGHT = 297.mm
11
+ CARD_WIDTH = 63.5.mm
12
+ CARD_HEIGHT = 88.9.mm
13
+ X_GAP = (PAGE_WIDTH - 3 * CARD_WIDTH) / 4
14
+ Y_GAP = (PAGE_HEIGHT - 3 * CARD_HEIGHT) / 4
15
+ CARDS_PER_PAGE = 9
16
+
17
+ def initialize(card_image_paths, file_name)
18
+ @card_image_paths = card_image_paths
19
+ @file_name = file_name
20
+ end
21
+
22
+ def generate
23
+ Prawn::Document.generate(file_name, document_options) do |pdf|
24
+ card_image_paths.each.with_index do |card_image_path, i|
25
+ pdf.start_new_page if (i % CARDS_PER_PAGE).zero? && i.positive?
26
+ add_card(pdf, card_image_path)
27
+ end
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ attr_reader :card_image_paths, :file_name
34
+
35
+ def document_options
36
+ {
37
+ margin: 0,
38
+ print_scaling: :none,
39
+ page_size: PAGE_SIZE
40
+ }
41
+ end
42
+
43
+ def add_card(pdf, card_image_path)
44
+ pdf.image(
45
+ card_image_path,
46
+ at: positions.next,
47
+ width: CARD_WIDTH,
48
+ height: CARD_HEIGHT
49
+ )
50
+ end
51
+
52
+ def positions
53
+ @positions ||= Enumerator.new do |out|
54
+ n = 0
55
+ loop do
56
+ x = X_GAP + (n % 3) * (CARD_WIDTH + X_GAP)
57
+ y = PAGE_HEIGHT - Y_GAP - (n / 3) * (CARD_HEIGHT + Y_GAP)
58
+ out << [x, y]
59
+ n += 1
60
+ n = 0 if n == CARDS_PER_PAGE
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ProxyMate
4
+ VERSION = '0.0.1'
5
+ end
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: proxy-mate
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Helge Rausch
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-11-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: prawn
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.2.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.2.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Generates a PDF with standard size playing cards of your choice
56
+ email:
57
+ - helge@rausch.io
58
+ executables:
59
+ - proxy-mate
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - bin/proxy-mate
64
+ - lib/proxy_mate.rb
65
+ - lib/proxy_mate/version.rb
66
+ homepage: https://github.com/tsujigiri/proxy-mate/
67
+ licenses: []
68
+ metadata:
69
+ homepage_uri: https://github.com/tsujigiri/proxy-mate/
70
+ source_code_uri: https://github.com/tsujigiri/proxy-mate/
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubygems_version: 3.0.3
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: Generates a PDF with standard size playing cards of your choice
90
+ test_files: []