playgroundbook 0.3.0 → 0.4.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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +110 -0
  3. data/Changelog.md +4 -0
  4. data/Gemfile +10 -9
  5. data/Gemfile.lock +4 -2
  6. data/Guardfile +2 -2
  7. data/Rakefile +3 -3
  8. data/bin/playgroundbook +9 -7
  9. data/lib/{playgroundbook_lint → linter}/abstract_linter.rb +2 -2
  10. data/lib/{playgroundbook_lint → linter}/chapter_linter.rb +4 -4
  11. data/lib/{playgroundbook_lint → linter}/chapter_manifest_linter.rb +5 -5
  12. data/lib/{playgroundbook_lint → linter}/contents_linter.rb +3 -3
  13. data/lib/{playgroundbook_lint → linter}/cutscene_page_linter.rb +2 -2
  14. data/lib/{playgroundbook_lint → linter}/cutscene_page_manifest_linter.rb +2 -2
  15. data/lib/{playgroundbook_lint → linter}/manifest_linter.rb +5 -5
  16. data/lib/{playgroundbook_lint → linter}/page_linter.rb +2 -2
  17. data/lib/{playgroundbook_lint → linter}/page_manifest_linter.rb +3 -3
  18. data/lib/{playgroundbook_lint → linter}/playgroundbook_lint.rb +6 -6
  19. data/lib/{playgroundbook_lint → linter}/root_manifest_linter.rb +9 -9
  20. data/lib/playgroundbook.rb +8 -7
  21. data/lib/{playgroundbook_renderer → renderer}/chapter_collator.rb +18 -18
  22. data/lib/renderer/contents_manifest_generator.rb +35 -0
  23. data/lib/{playgroundbook_renderer → renderer}/glossary_generator.rb +13 -16
  24. data/lib/{playgroundbook_renderer → renderer}/page_parser.rb +4 -3
  25. data/lib/{playgroundbook_renderer → renderer}/page_processor.rb +0 -0
  26. data/lib/{playgroundbook_renderer → renderer}/page_writer.rb +11 -11
  27. data/lib/{playgroundbook_renderer → renderer}/playgroundbook_renderer.rb +29 -29
  28. data/lib/version.rb +1 -1
  29. data/lib/wrapper/markdown_wrapper.rb +58 -0
  30. data/playground_book_lint.gemspec +14 -14
  31. data/spec/fixtures/wrapper/destination/swift_at_artsy_1.swift +199 -0
  32. data/spec/fixtures/wrapper/source/Swift-at-Artsy.playground/Contents.swift +199 -0
  33. data/spec/fixtures/wrapper/source/Swift-at-Artsy.playground/contents.xcplayground +4 -0
  34. data/spec/fixtures/wrapper/source/swift_at_artsy_1.md +183 -0
  35. data/spec/{playground_book_lint → linter}/chapter_linter_spec.rb +5 -5
  36. data/spec/{playground_book_lint → linter}/chapter_manifest_linter_spec.rb +12 -12
  37. data/spec/{playground_book_lint → linter}/contents_linter_spec.rb +3 -3
  38. data/spec/{playground_book_lint → linter}/cutscene_page_linter_spec.rb +2 -2
  39. data/spec/linter/cutscene_page_manifest_linter_spec.rb +63 -0
  40. data/spec/linter/manfiest_linter_spec.rb +71 -0
  41. data/spec/{playground_book_lint → linter}/page_linter_spec.rb +4 -4
  42. data/spec/{playground_book_lint → linter}/page_manifest_linter_spec.rb +13 -13
  43. data/spec/{playground_book_lint → linter}/playgroundbook_lint_spec.rb +6 -6
  44. data/spec/linter/root_manifest_linter_spec.rb +35 -0
  45. data/spec/renderer/chapter_collator_spec.rb +70 -0
  46. data/spec/renderer/contents_manfiest_generator_spec.rb +41 -0
  47. data/spec/renderer/glossary_generator_spec.rb +54 -0
  48. data/spec/{playgroundbook_renderer_spec → renderer}/page_processor_spec.rb +12 -12
  49. data/spec/{playgroundbook_renderer_spec → renderer}/page_writer_spec.rb +19 -19
  50. data/spec/renderer/playgroundbook_renderer_spec.rb +122 -0
  51. data/spec/spec_helper.rb +38 -38
  52. data/spec/wrapper/markdown_wrapper_spec.rb +33 -0
  53. metadata +43 -37
  54. data/lib/playgroundbook_renderer/contents_manifest_generator.rb +0 -35
  55. data/spec/playground_book_lint/cutscene_page_manifest_linter_spec.rb +0 -63
  56. data/spec/playground_book_lint/manfiest_linter_spec.rb +0 -71
  57. data/spec/playground_book_lint/root_manifest_linter_spec.rb +0 -35
  58. data/spec/playgroundbook_renderer_spec/chapter_collator_spec.rb +0 -70
  59. data/spec/playgroundbook_renderer_spec/contents_manfiest_generator_spec.rb +0 -41
  60. data/spec/playgroundbook_renderer_spec/glossary_generator_spec.rb +0 -52
  61. data/spec/playgroundbook_renderer_spec/playgroundbook_renderer_spec.rb +0 -122
@@ -1,52 +0,0 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- module Playgroundbook
4
- describe GlossaryGenerator do
5
- include FakeFS::SpecHelpers
6
- let(:glossary_generator) { GlossaryGenerator.new }
7
- let(:glossary) {{
8
- 'example term' => 'example definition'
9
- }}
10
- let(:glossary_file_name) { 'Contents/Resources/Glossary.plist' }
11
-
12
- before do
13
- FileUtils.mkdir_p('Contents/Resources')
14
- end
15
-
16
- it 'generates a glossary plist' do
17
- glossary_generator.generate!({}, [], glossary)
18
-
19
- expect(File.exist?(glossary_file_name)).to be_truthy
20
- end
21
-
22
- context 'glossary plist' do
23
- let(:glossary_plist) { Plist.parse_xml(glossary_file_name) }
24
-
25
- it 'has a glossary with correct terms' do
26
- glossary_generator.generate!({}, [], glossary)
27
-
28
- expect(glossary_plist['Terms']['example term']['Definition']).to eq('example definition')
29
- end
30
-
31
- it 'generates correct first use page references' do
32
- glossary_generator.generate!([
33
- {
34
- page_names: ['Page 1'],
35
- page_contents: ["/*: Here's how to use [a thing](glossary://example%20term) */"],
36
- },
37
- {
38
- page_names: ['Should not see this'],
39
- page_contents: ["/*: Here's how to use [a thing](glossary://example%20term) even though this shouldn't match' */"],
40
- }
41
- ],
42
- ['Chapter 1', 'Chapter 2'],
43
- glossary)
44
-
45
- expect(glossary_plist['Terms']['example term']['FirstUse']).to eq({
46
- 'PageReference' => 'Chapter%201/Page%201',
47
- 'Title' => 'Page 1'
48
- })
49
- end
50
- end
51
- end
52
- end
@@ -1,122 +0,0 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- module Playgroundbook
4
- describe Renderer do
5
- include FakeFS::SpecHelpers
6
- let(:renderer) { Renderer.new(yaml_file_name, contents_manifest_generator, page_parser, chapter_collator, glossary_generator, test_ui) }
7
- let(:yaml_file_name) { 'book.yml' }
8
- let(:contents_manifest_generator) { double(ContentsManifestGenerator) }
9
- let(:page_parser) { double(PageParser) }
10
- let(:chapter_collator) { double(ChapterCollator) }
11
- let(:glossary_generator) { double(GlossaryGenerator) }
12
- let(:test_ui) { Cork::Board.new(silent: true) }
13
-
14
- before do
15
- File.open(yaml_file_name, 'w') do |file|
16
- file.write(test_book_metadata.to_yaml)
17
- end
18
-
19
- allow(contents_manifest_generator).to receive(:generate!)
20
- allow(chapter_collator).to receive(:collate!)
21
- allow(glossary_generator).to receive(:generate!)
22
- end
23
-
24
- it 'initializes correctly' do
25
- expect(renderer.yaml_file_name) == yaml_file_name
26
- end
27
-
28
- it 'explodes when there is no playground' do
29
- expect{renderer.render!}.to raise_error
30
- end
31
-
32
- context 'with a playground' do
33
- before do
34
- allow(page_parser).to receive(:parse_chapter_pages)
35
- Dir.mkdir('assets')
36
- FileUtils.touch('assets/file.png')
37
- Dir.mkdir('test_chapter.playground/')
38
- File.open('test_chapter.playground/Contents.swift', 'w') do |file|
39
- file.write('')
40
- end
41
- end
42
-
43
- it 'creates a directory with book name' do
44
- renderer.render!
45
-
46
- expect(Dir.exist?('Testing Book.playgroundbook')).to be_truthy
47
- end
48
-
49
- it 'creates a resources folder' do
50
- renderer.render!
51
-
52
- expect(Dir.exist?('Testing Book.playgroundbook/Contents/Resources')).to be_truthy
53
- end
54
-
55
- it 'copies a resources folder contents' do
56
- renderer.render!
57
-
58
- expect(File.exist?('Testing Book.playgroundbook/Contents/Resources/file.png')).to be_truthy
59
- end
60
-
61
- context 'within an existing playgroundbook directory' do
62
- before do
63
- Dir.mkdir('Testing Book.playgroundbook')
64
- end
65
-
66
- it 'does not explode when the directory already exists' do
67
- expect { renderer.render! }.to_not raise_error
68
- end
69
-
70
- it 'creates a Contents directory within the main bundle dir' do
71
- renderer.render!
72
-
73
- expect(Dir.exist?('Testing Book.playgroundbook/Contents')).to be_truthy
74
- end
75
-
76
- context 'within the Contents directory' do
77
- before do
78
- Dir.mkdir('Testing Book.playgroundbook/Contents')
79
- end
80
-
81
- it 'does not explode when the Contents directory already exists' do
82
- expect { renderer.render! }.to_not raise_error
83
- end
84
-
85
- it 'renders main manifest' do
86
- expect(contents_manifest_generator).to receive(:generate!)
87
-
88
- renderer.render!
89
- end
90
-
91
- it 'creates a Chapters directory within the Contents dir' do
92
- renderer.render!
93
-
94
- expect(Dir.exist?('Testing Book.playgroundbook/Contents/Chapters')).to be_truthy
95
- end
96
-
97
- context 'within the Chapters directory' do
98
- before do
99
- Dir.mkdir('Testing Book.playgroundbook/Contents/Chapters')
100
- end
101
-
102
- it 'does not explode when the Chapters directory already exists' do
103
- expect { renderer.render! }.to_not raise_error
104
- end
105
-
106
- it 'generates each chapter' do
107
- expect(chapter_collator).to receive(:collate!)
108
-
109
- renderer.render!
110
- end
111
- end
112
- end
113
- end
114
-
115
- it 'generates a glossary' do
116
- expect(glossary_generator).to receive(:generate!)
117
-
118
- renderer.render!
119
- end
120
- end
121
- end
122
- end