zaikio-mission_control 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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