playgroundbook 0.3.0 → 0.4.0

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