zaikio-mission_control 0.2.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.
Files changed (77) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +64 -0
  4. data/Rakefile +37 -0
  5. data/config/locales/de.yml +70 -0
  6. data/config/locales/en.yml +69 -0
  7. data/lib/zaikio/mission_control/base.rb +7 -0
  8. data/lib/zaikio/mission_control/configuration.rb +17 -0
  9. data/lib/zaikio/mission_control/finishings/base.rb +8 -0
  10. data/lib/zaikio/mission_control/finishings/comb_binding.rb +8 -0
  11. data/lib/zaikio/mission_control/finishings/embossing.rb +8 -0
  12. data/lib/zaikio/mission_control/finishings/foil_stamp.rb +8 -0
  13. data/lib/zaikio/mission_control/finishings/glue.rb +8 -0
  14. data/lib/zaikio/mission_control/finishings/head_band.rb +8 -0
  15. data/lib/zaikio/mission_control/finishings/hole.rb +8 -0
  16. data/lib/zaikio/mission_control/finishings/lamination.rb +8 -0
  17. data/lib/zaikio/mission_control/finishings/perfect_binding.rb +8 -0
  18. data/lib/zaikio/mission_control/finishings/perforation.rb +8 -0
  19. data/lib/zaikio/mission_control/finishings/ring_binding.rb +8 -0
  20. data/lib/zaikio/mission_control/finishings/saddle_stitch.rb +8 -0
  21. data/lib/zaikio/mission_control/finishings/spiral_binding.rb +8 -0
  22. data/lib/zaikio/mission_control/finishings/strip_binding.rb +8 -0
  23. data/lib/zaikio/mission_control/finishings/thread_sewing.rb +8 -0
  24. data/lib/zaikio/mission_control/jobs/base.rb +49 -0
  25. data/lib/zaikio/mission_control/jobs/booklet.rb +12 -0
  26. data/lib/zaikio/mission_control/jobs/box.rb +10 -0
  27. data/lib/zaikio/mission_control/jobs/brochure.rb +12 -0
  28. data/lib/zaikio/mission_control/jobs/business_card.rb +9 -0
  29. data/lib/zaikio/mission_control/jobs/carton.rb +9 -0
  30. data/lib/zaikio/mission_control/jobs/carton_two_piece.rb +10 -0
  31. data/lib/zaikio/mission_control/jobs/compliment_slip.rb +9 -0
  32. data/lib/zaikio/mission_control/jobs/continuation_sheet.rb +9 -0
  33. data/lib/zaikio/mission_control/jobs/cover_letter.rb +9 -0
  34. data/lib/zaikio/mission_control/jobs/envelope.rb +9 -0
  35. data/lib/zaikio/mission_control/jobs/flyer.rb +9 -0
  36. data/lib/zaikio/mission_control/jobs/hardcover_book.rb +12 -0
  37. data/lib/zaikio/mission_control/jobs/label.rb +9 -0
  38. data/lib/zaikio/mission_control/jobs/leaflet.rb +9 -0
  39. data/lib/zaikio/mission_control/jobs/letter_head.rb +9 -0
  40. data/lib/zaikio/mission_control/jobs/magazine.rb +12 -0
  41. data/lib/zaikio/mission_control/jobs/map.rb +10 -0
  42. data/lib/zaikio/mission_control/jobs/ncr_pad.rb +11 -0
  43. data/lib/zaikio/mission_control/jobs/newspaper.rb +10 -0
  44. data/lib/zaikio/mission_control/jobs/notebook.rb +11 -0
  45. data/lib/zaikio/mission_control/jobs/postcard.rb +9 -0
  46. data/lib/zaikio/mission_control/jobs/poster.rb +9 -0
  47. data/lib/zaikio/mission_control/jobs/self_mailer.rb +9 -0
  48. data/lib/zaikio/mission_control/jobs/sheet.rb +9 -0
  49. data/lib/zaikio/mission_control/jobs/softcover_book.rb +10 -0
  50. data/lib/zaikio/mission_control/parts/back.rb +8 -0
  51. data/lib/zaikio/mission_control/parts/base.rb +8 -0
  52. data/lib/zaikio/mission_control/parts/business_card.rb +8 -0
  53. data/lib/zaikio/mission_control/parts/carton.rb +8 -0
  54. data/lib/zaikio/mission_control/parts/case.rb +8 -0
  55. data/lib/zaikio/mission_control/parts/compliment_slip.rb +8 -0
  56. data/lib/zaikio/mission_control/parts/content.rb +8 -0
  57. data/lib/zaikio/mission_control/parts/continuation_sheet.rb +8 -0
  58. data/lib/zaikio/mission_control/parts/cover.rb +8 -0
  59. data/lib/zaikio/mission_control/parts/cover_letter.rb +8 -0
  60. data/lib/zaikio/mission_control/parts/endpaper.rb +8 -0
  61. data/lib/zaikio/mission_control/parts/envelope.rb +8 -0
  62. data/lib/zaikio/mission_control/parts/flyer.rb +8 -0
  63. data/lib/zaikio/mission_control/parts/insert.rb +8 -0
  64. data/lib/zaikio/mission_control/parts/jacket.rb +8 -0
  65. data/lib/zaikio/mission_control/parts/label.rb +8 -0
  66. data/lib/zaikio/mission_control/parts/leaflet.rb +8 -0
  67. data/lib/zaikio/mission_control/parts/letter_head.rb +8 -0
  68. data/lib/zaikio/mission_control/parts/lid.rb +8 -0
  69. data/lib/zaikio/mission_control/parts/map_sheet.rb +8 -0
  70. data/lib/zaikio/mission_control/parts/outsert.rb +8 -0
  71. data/lib/zaikio/mission_control/parts/postcard.rb +8 -0
  72. data/lib/zaikio/mission_control/parts/poster.rb +8 -0
  73. data/lib/zaikio/mission_control/parts/self_mailer.rb +8 -0
  74. data/lib/zaikio/mission_control/parts/sheet.rb +8 -0
  75. data/lib/zaikio/mission_control/version.rb +5 -0
  76. data/lib/zaikio/mission_control.rb +136 -0
  77. metadata +204 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: ed50ab060b92139a039d56bb86768cb471612b6d054d4682760e125da106cc98
4
+ data.tar.gz: 423ab70c85881119081be908cb24eda3ce556912afadc67cc4d4a573e1d70d21
5
+ SHA512:
6
+ metadata.gz: c5ee9ad9edddf33e46b3d8eeab0eeea4dc51a8455eafcf978197764e01cc6393efc3ee653269da7c5ea7c9abf724f4f6029c7458f531d5eafeaced0b8e5c88d5
7
+ data.tar.gz: 267d8cd3c600dc754823a08557957d78c748a6880e6e603e8eb205536ef4f5295005c66f76e934b7105f62fd7e7d6a23202638217554eebb6e9e3e4dd795717e
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2022 Zaikio GmbH
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,64 @@
1
+ # Zaikio::MissionControl
2
+
3
+ Ruby API Client for Zaikio Mission Control.
4
+
5
+ ## Installation
6
+
7
+ ### 1. Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'zaikio-mission_control'
11
+ ```
12
+
13
+ And then execute:
14
+ ```bash
15
+ $ bundle
16
+ ```
17
+
18
+ Or install it yourself as:
19
+ ```bash
20
+ $ gem install zaikio-mission_control
21
+ ```
22
+
23
+ ### 2. Configure the gem:
24
+
25
+ ```rb
26
+ # config/initializers/zaikio_mission_control.rb
27
+
28
+ Zaikio::MissionControl.configure do |config|
29
+ config.environment = :production # sandbox or production
30
+ end
31
+ ```
32
+
33
+ ## Usage
34
+
35
+ ### Specifications
36
+
37
+ This gem contains helper methods to list jobs and parts and to understand which parts a job consists of.
38
+
39
+ ```rb
40
+ Zaikio::MissionControl.jobs => #[:booklet, :box, ...]
41
+ Zaikio::MissionControl.parts => #[:back, :base, ...]
42
+ Zaikio::MissionControl.finishings => #[:comb_binding, :embossing, ...]
43
+
44
+ Zaikio::MissionControl.job_klasses => # [Zaikio::MissionControl::Jobs::Booklet, Zaikio::MissionControl::Jobs::Box, ...]
45
+ Zaikio::MissionControl.part_klasses => # [Zaikio::MissionControl::Parts::Back, Zaikio::MissionControl::Parts::Base, ...]
46
+ Zaikio::MissionControl.finishing_klasses => # [Zaikio::MissionControl::Finishings::CombBinding, Zaikio::MissionControl::Finishings::Embossing, ...]
47
+
48
+ # Localize models
49
+ I18n.with_locale(:de) do
50
+ Zaikio::MissionControl::Jobs::Booklet.model_name.human # => Heft
51
+ end
52
+ ```
53
+
54
+ Per job you can fetch the parts and their configuration:
55
+
56
+ ```rb
57
+ Zaikio::MissionControl::Jobs::Booklet.parts # => [:content, :cover, :insert, :outsert]
58
+ Zaikio::MissionControl::Jobs::Booklet.part_klasses # => [Zaikio::MissionControl::Parts::Content, ...]
59
+
60
+ Zaikio::MissionControl::Jobs::Booklet.multiples?(:content) # => true
61
+ Zaikio::MissionControl::Jobs::Booklet.multiples?(Zaikio::MissionControl::Parts::Content) # => true
62
+ Zaikio::MissionControl::Jobs::Booklet.required?(:content) # => true
63
+ Zaikio::MissionControl::Jobs::Booklet.required?(Zaikio::MissionControl::Parts::Content) # => true
64
+ ```
data/Rakefile ADDED
@@ -0,0 +1,37 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+ require 'rubocop/rake_task'
9
+
10
+ RDoc::Task.new(:rdoc) do |rdoc|
11
+ rdoc.rdoc_dir = 'rdoc'
12
+ rdoc.title = 'Zaikio::MissionControl'
13
+ rdoc.options << '--line-numbers'
14
+ rdoc.rdoc_files.include('README.md')
15
+ rdoc.rdoc_files.include('lib/**/*.rb')
16
+ end
17
+
18
+ require 'bundler/gem_tasks'
19
+
20
+ require 'rake/testtask'
21
+
22
+ Rake::TestTask.new(:test) do |t|
23
+ t.libs << 'test'
24
+ t.pattern = 'test/**/*_test.rb'
25
+ t.verbose = false
26
+ end
27
+
28
+ task default: :test
29
+
30
+ namespace :test do
31
+ desc 'Runs RuboCop on specified directories'
32
+ RuboCop::RakeTask.new(:rubocop) do |task|
33
+ task.fail_on_error = false
34
+ end
35
+ end
36
+
37
+ Rake::Task[:test].enhance ['test:rubocop']
@@ -0,0 +1,70 @@
1
+ de:
2
+ activemodel:
3
+ models:
4
+ # Jobs
5
+ "zaikio/mission_control/jobs/booklet": "Heft"
6
+ "zaikio/mission_control/jobs/box": "Schachtel"
7
+ "zaikio/mission_control/jobs/brochure": "Broschüre"
8
+ "zaikio/mission_control/jobs/business_card": "Visitenkarte"
9
+ "zaikio/mission_control/jobs/carton": "Karton"
10
+ "zaikio/mission_control/jobs/carton_two_piece": "Karton zweiteilig"
11
+ "zaikio/mission_control/jobs/compliment_slip": "Begleitschreiben"
12
+ "zaikio/mission_control/jobs/continuation_sheet": "Folgebogen"
13
+ "zaikio/mission_control/jobs/cover_letter": "Anschreiben"
14
+ "zaikio/mission_control/jobs/envelope": "Briefhülle"
15
+ "zaikio/mission_control/jobs/flyer": "Flugblatt-Faltblatt"
16
+ "zaikio/mission_control/jobs/hardcover_book": "Buch mit Festeinband"
17
+ "zaikio/mission_control/jobs/label": "Aufkleber"
18
+ "zaikio/mission_control/jobs/leaflet": "Flugblatt"
19
+ "zaikio/mission_control/jobs/letter_head": "Briefbogen"
20
+ "zaikio/mission_control/jobs/magazine": "Zeitschrift"
21
+ "zaikio/mission_control/jobs/map": "Landkarte"
22
+ "zaikio/mission_control/jobs/ncr_pad": "Durchschreibesätze"
23
+ "zaikio/mission_control/jobs/newspaper": "Zeitung"
24
+ "zaikio/mission_control/jobs/notebook": "Notizbuch"
25
+ "zaikio/mission_control/jobs/postcard": "Postkarte"
26
+ "zaikio/mission_control/jobs/poster": "Poster"
27
+ "zaikio/mission_control/jobs/self_mailer": "Self Mailer"
28
+ "zaikio/mission_control/jobs/sheet": "Blatt"
29
+ "zaikio/mission_control/jobs/softcover_book": "Klebegebundene Broschur"
30
+ # Parts
31
+ "zaikio/mission_control/parts/back": "Schlussblatt"
32
+ "zaikio/mission_control/parts/base": "Boden"
33
+ "zaikio/mission_control/parts/business_card": "Visitenkarte"
34
+ "zaikio/mission_control/parts/carton": "Karton"
35
+ "zaikio/mission_control/parts/case": "Buchdecke"
36
+ "zaikio/mission_control/parts/compliment_slip": "Begleitschreiben"
37
+ "zaikio/mission_control/parts/content": "Inhalt"
38
+ "zaikio/mission_control/parts/continuation_sheet": "Folgebogen"
39
+ "zaikio/mission_control/parts/cover": "Umschlag"
40
+ "zaikio/mission_control/parts/cover_letter": "Anschreiben"
41
+ "zaikio/mission_control/parts/endpaper": "Vor- und Nachsatz"
42
+ "zaikio/mission_control/parts/envelope": "Briefhülle"
43
+ "zaikio/mission_control/parts/flyer": "Flugblatt-Faltblatt"
44
+ "zaikio/mission_control/parts/insert": "Believer"
45
+ "zaikio/mission_control/parts/jacket": "Buchumschlag"
46
+ "zaikio/mission_control/parts/label": "Aufkleber"
47
+ "zaikio/mission_control/parts/leaflet": "Flugblatt"
48
+ "zaikio/mission_control/parts/letter_head": "Briefbogen"
49
+ "zaikio/mission_control/parts/lid": "Deckel"
50
+ "zaikio/mission_control/parts/map_sheet": "Landkartenbogen"
51
+ "zaikio/mission_control/parts/outsert": "Ausgliederung"
52
+ "zaikio/mission_control/parts/postcard": "Postkarte"
53
+ "zaikio/mission_control/parts/poster": "Poster"
54
+ "zaikio/mission_control/parts/self_mailer": "Self Mailer"
55
+ "zaikio/mission_control/parts/sheet": "Bogen"
56
+ # Finishings
57
+ "zaikio/mission_control/finishings/comb_binding": "Kamm-Bindung"
58
+ "zaikio/mission_control/finishings/embossing": "Prägen"
59
+ "zaikio/mission_control/finishings/foil_stamp": "Folienprägung"
60
+ "zaikio/mission_control/finishings/glue": "Leimen"
61
+ "zaikio/mission_control/finishings/head_band": "Kopfband anbringen"
62
+ "zaikio/mission_control/finishings/hole": "Bohren"
63
+ "zaikio/mission_control/finishings/lamination": "Folienkaschierung"
64
+ "zaikio/mission_control/finishings/perforation": "Perforation"
65
+ "zaikio/mission_control/finishings/ring_binding": "Ringbinden"
66
+ "zaikio/mission_control/finishings/perfect_binding": "Klebebinden"
67
+ "zaikio/mission_control/finishings/saddle_stitch": "Rückendrahtheften"
68
+ "zaikio/mission_control/finishings/spiral_binding": "Wire-O Bindung"
69
+ "zaikio/mission_control/finishings/strip_binding": "Streifenbindung"
70
+ "zaikio/mission_control/finishings/thread_sewing": "Fadenheftung"
@@ -0,0 +1,69 @@
1
+ en:
2
+ activemodel:
3
+ models:
4
+ # Jobs
5
+ "zaikio/mission_control/jobs/booklet": "Booklet"
6
+ "zaikio/mission_control/jobs/box": "Box"
7
+ "zaikio/mission_control/jobs/brochure": "Brochure"
8
+ "zaikio/mission_control/jobs/business_card": "Business Card"
9
+ "zaikio/mission_control/jobs/carton": "Carton"
10
+ "zaikio/mission_control/jobs/carton_two_piece": "Carton Two Piece"
11
+ "zaikio/mission_control/jobs/compliment_slip": "Compliment Slip"
12
+ "zaikio/mission_control/jobs/continuation_sheet": "Continuation Sheet"
13
+ "zaikio/mission_control/jobs/cover_letter": "Cover Letter"
14
+ "zaikio/mission_control/jobs/envelope": "Envelope"
15
+ "zaikio/mission_control/jobs/flyer": "Flyer"
16
+ "zaikio/mission_control/jobs/hardcover_book": "Hardcover Book"
17
+ "zaikio/mission_control/jobs/label": "Label"
18
+ "zaikio/mission_control/jobs/leaflet": "Leaflet"
19
+ "zaikio/mission_control/jobs/letter_head": "Letter Head"
20
+ "zaikio/mission_control/jobs/magazine": "Magazine"
21
+ "zaikio/mission_control/jobs/map": "Map"
22
+ "zaikio/mission_control/jobs/ncr_pad": "NCR Pad"
23
+ "zaikio/mission_control/jobs/newspaper": "Newspaper"
24
+ "zaikio/mission_control/jobs/notebook": "Notebook"
25
+ "zaikio/mission_control/jobs/postcard": "Postcard"
26
+ "zaikio/mission_control/jobs/poster": "Poster"
27
+ "zaikio/mission_control/jobs/self_mailer": "Self Mailer"
28
+ "zaikio/mission_control/jobs/sheet": "Sheet"
29
+ # Parts
30
+ "zaikio/mission_control/parts/back": "Back"
31
+ "zaikio/mission_control/parts/base": "Base"
32
+ "zaikio/mission_control/parts/business_card": "Business Card"
33
+ "zaikio/mission_control/parts/carton": "Carton"
34
+ "zaikio/mission_control/parts/case": "Case"
35
+ "zaikio/mission_control/parts/compliment_slip": "Compliment Slip"
36
+ "zaikio/mission_control/parts/content": "Content"
37
+ "zaikio/mission_control/parts/continuation_sheet": "Continuation Sheet"
38
+ "zaikio/mission_control/parts/cover": "Cover"
39
+ "zaikio/mission_control/parts/cover_letter": "Cover Letter"
40
+ "zaikio/mission_control/parts/endpaper": "Endpaper"
41
+ "zaikio/mission_control/parts/envelope": "Envelope"
42
+ "zaikio/mission_control/parts/flyer": "Flyer"
43
+ "zaikio/mission_control/parts/insert": "Insert"
44
+ "zaikio/mission_control/parts/jacket": "Jacket"
45
+ "zaikio/mission_control/parts/label": "Label"
46
+ "zaikio/mission_control/parts/leaflet": "Leaflet"
47
+ "zaikio/mission_control/parts/letter_head": "Letter Head"
48
+ "zaikio/mission_control/parts/lid": "Lid"
49
+ "zaikio/mission_control/parts/map_sheet": "Map Sheet"
50
+ "zaikio/mission_control/parts/outsert": "Outsert"
51
+ "zaikio/mission_control/parts/postcard": "Postcard"
52
+ "zaikio/mission_control/parts/poster": "Poster"
53
+ "zaikio/mission_control/parts/self_mailer": "Self Mailer"
54
+ "zaikio/mission_control/parts/sheet": "Sheet"
55
+ # Finishings
56
+ "zaikio/mission_control/finishings/comb_binding": "Comb Binding"
57
+ "zaikio/mission_control/finishings/embossing": "Embossing"
58
+ "zaikio/mission_control/finishings/foil_stamp": "Foil Stamp"
59
+ "zaikio/mission_control/finishings/glue": "Glue"
60
+ "zaikio/mission_control/finishings/head_band": "Head Band"
61
+ "zaikio/mission_control/finishings/hole": "Hole"
62
+ "zaikio/mission_control/finishings/lamination": "Lamination"
63
+ "zaikio/mission_control/finishings/perforation": "Perforation"
64
+ "zaikio/mission_control/finishings/ring_binding": "Ring Binding"
65
+ "zaikio/mission_control/finishings/perfect_binding": "Perfect Binding"
66
+ "zaikio/mission_control/finishings/saddle_stitch": "Saddle Stitch"
67
+ "zaikio/mission_control/finishings/spiral_binding": "Spiral Binding"
68
+ "zaikio/mission_control/finishings/strip_binding": "Strip Binding"
69
+ "zaikio/mission_control/finishings/thread_sewing": "Thread Sewing"
@@ -0,0 +1,7 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ class Base < Zaikio::Client::Model
4
+ self.callback_methods = { create: :post, update: :patch }.freeze
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,17 @@
1
+ require "logger"
2
+
3
+ module Zaikio
4
+ module MissionControl
5
+ class Configuration < Zaikio::Client::Helpers::Configuration
6
+ def self.hosts
7
+ {
8
+ development: "https://mc.zaikio.test/api/v1/",
9
+ test: "https://mc.zaikio.test/api/v1/",
10
+ staging: "https://mc.staging.zaikio.com/api/v1/",
11
+ sandbox: "https://mc.sandbox.zaikio.com/api/v1/",
12
+ production: "https://mc.zaikio.com/api/v1/"
13
+ }.freeze
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class Base < Zaikio::MissionControl::Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class CombBinding < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class Embossing < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class FoilStamp < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class Glue < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class HeadBand < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class Hole < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class Lamination < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class PerfectBinding < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class Perforation < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class RingBinding < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class SaddleStitch < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class SpiralBinding < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class StripBinding < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Finishings
4
+ class ThreadSewing < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,49 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class Base < Zaikio::MissionControl::Base
5
+ class << self
6
+ def has_one_part(name, required: false) # rubocop:disable Naming/PredicateName
7
+ @parts ||= {}
8
+ @parts[name] = { required: required, multiples: false }
9
+ end
10
+
11
+ def has_many_parts(name, required: false) # rubocop:disable Naming/PredicateName
12
+ @parts ||= {}
13
+ @parts[name.to_s.singularize.to_sym] = { required: required, multiples: true }
14
+ end
15
+
16
+ def parts
17
+ @parts ||= {}
18
+ @parts.keys
19
+ end
20
+
21
+ def part_config(part_name_or_klass)
22
+ @parts ||= {}
23
+ part_name_or_klass = if part_name_or_klass.is_a?(Symbol)
24
+ part_name_or_klass.to_s.singularize.to_sym
25
+ else
26
+ part_name_or_klass.name.split("::").last.underscore.to_sym
27
+ end
28
+ @parts[part_name_or_klass] or raise ArgumentError,
29
+ "Part #{part_name_or_klass} could not be found in #{self.class.name}"
30
+ end
31
+
32
+ def part_klasses
33
+ parts.map do |name|
34
+ Zaikio::MissionControl::Parts.const_get(name.to_s.classify)
35
+ end
36
+ end
37
+
38
+ def multiples?(part_name_or_klass)
39
+ part_config(part_name_or_klass)[:multiples]
40
+ end
41
+
42
+ def required?(part_name_or_klass)
43
+ part_config(part_name_or_klass)[:required]
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,12 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class Booklet < Base
5
+ has_many_parts :contents, required: true
6
+ has_one_part :cover
7
+ has_many_parts :inserts
8
+ has_many_parts :outserts
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class Box < Base
5
+ has_one_part :base, required: true
6
+ has_one_part :lid, required: true
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class Brochure < Base
5
+ has_many_parts :contents, required: true
6
+ has_one_part :cover, required: true
7
+ has_many_parts :inserts
8
+ has_many_parts :outserts
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class BusinessCard < Base
5
+ has_many_parts :business_cards, required: true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class Carton < Base
5
+ has_one_part :carton, required: true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class CartonTwoPiece < Base
5
+ has_one_part :base, required: true
6
+ has_one_part :lid, required: true
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class ComplimentSlip < Base
5
+ has_one_part :compliment_slip, required: true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class ContinuationSheet < Base
5
+ has_one_part :continuation_sheet, required: true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class CoverLetter < Base
5
+ has_one_part :cover_letter, required: true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class Envelope < Base
5
+ has_one_part :envelope, required: true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class Flyer < Base
5
+ has_one_part :flyer, required: true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class HardcoverBook < Base
5
+ has_many_parts :contents, required: true
6
+ has_one_part :case, required: true
7
+ has_many_parts :endpapers, required: true
8
+ has_one_part :jacket
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ module Zaikio
2
+ module MissionControl
3
+ module Jobs
4
+ class Label < Base
5
+ has_one_part :label, required: true
6
+ end
7
+ end
8
+ end
9
+ end