playgroundbook 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 (57) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +50 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +2 -0
  5. data/.ruby-version +1 -0
  6. data/Changelog.md +17 -0
  7. data/Gemfile +12 -0
  8. data/Gemfile.lock +103 -0
  9. data/Guardfile +14 -0
  10. data/LICENSE +21 -0
  11. data/README.md +92 -0
  12. data/Rakefile +8 -0
  13. data/bin/playgroundbook +22 -0
  14. data/lib/playgroundbook.rb +9 -0
  15. data/lib/playgroundbook_lint/abstract_linter.rb +23 -0
  16. data/lib/playgroundbook_lint/chapter_linter.rb +34 -0
  17. data/lib/playgroundbook_lint/chapter_manifest_linter.rb +43 -0
  18. data/lib/playgroundbook_lint/contents_linter.rb +20 -0
  19. data/lib/playgroundbook_lint/cutscene_page_linter.rb +17 -0
  20. data/lib/playgroundbook_lint/cutscene_page_manifest_linter.rb +18 -0
  21. data/lib/playgroundbook_lint/manifest_linter.rb +39 -0
  22. data/lib/playgroundbook_lint/page_linter.rb +23 -0
  23. data/lib/playgroundbook_lint/page_manifest_linter.rb +18 -0
  24. data/lib/playgroundbook_lint/playgroundbook_lint.rb +31 -0
  25. data/lib/playgroundbook_lint/root_manifest_linter.rb +36 -0
  26. data/lib/playgroundbook_renderer/chapter_collator.rb +77 -0
  27. data/lib/playgroundbook_renderer/contents_manifest_generator.rb +33 -0
  28. data/lib/playgroundbook_renderer/page_writer.rb +34 -0
  29. data/lib/playgroundbook_renderer/playgroundbook_renderer.rb +75 -0
  30. data/lib/version.rb +3 -0
  31. data/playground_book_lint.gemspec +21 -0
  32. data/spec/fixtures/Starter.playgroundbook/Contents/Chapters/Chapter1.playgroundchapter/Manifest.plist +15 -0
  33. data/spec/fixtures/Starter.playgroundbook/Contents/Chapters/Chapter1.playgroundchapter/Pages/Page1.playgroundpage/Contents.swift +8 -0
  34. data/spec/fixtures/Starter.playgroundbook/Contents/Chapters/Chapter1.playgroundchapter/Pages/Page1.playgroundpage/Manifest.plist +12 -0
  35. data/spec/fixtures/Starter.playgroundbook/Contents/Chapters/Chapter1.playgroundchapter/Pages/Page2.playgroundpage/Contents.swift +8 -0
  36. data/spec/fixtures/Starter.playgroundbook/Contents/Chapters/Chapter1.playgroundchapter/Pages/Page2.playgroundpage/Manifest.plist +12 -0
  37. data/spec/fixtures/Starter.playgroundbook/Contents/Manifest.plist +20 -0
  38. data/spec/fixtures/assets/file.jpeg +0 -0
  39. data/spec/fixtures/book.yml +5 -0
  40. data/spec/fixtures/test_chapter.playground/Contents.swift +17 -0
  41. data/spec/fixtures/test_chapter.playground/contents.xcplayground +4 -0
  42. data/spec/playground_book_lint/chapter_linter_spec.rb +30 -0
  43. data/spec/playground_book_lint/chapter_manifest_linter_spec.rb +40 -0
  44. data/spec/playground_book_lint/contents_linter_spec.rb +18 -0
  45. data/spec/playground_book_lint/cutscene_page_linter_spec.rb +14 -0
  46. data/spec/playground_book_lint/cutscene_page_manifest_linter_spec.rb +63 -0
  47. data/spec/playground_book_lint/manfiest_linter_spec.rb +71 -0
  48. data/spec/playground_book_lint/page_linter_spec.rb +19 -0
  49. data/spec/playground_book_lint/page_manifest_linter_spec.rb +43 -0
  50. data/spec/playground_book_lint/playgroundbook_lint_spec.rb +38 -0
  51. data/spec/playground_book_lint/root_manifest_linter_spec.rb +35 -0
  52. data/spec/playgroundbook_renderer_spec/chapter_collator_spec.rb +70 -0
  53. data/spec/playgroundbook_renderer_spec/contents_manfiest_generator_spec.rb +37 -0
  54. data/spec/playgroundbook_renderer_spec/page_writer_spec.rb +57 -0
  55. data/spec/playgroundbook_renderer_spec/playgroundbook_renderer_spec.rb +112 -0
  56. data/spec/spec_helper.rb +75 -0
  57. metadata +141 -0
@@ -0,0 +1,38 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ module Playgroundbook
4
+ describe Linter do
5
+ let(:linter) { Linter.new(test_playground_book, contents_linter) }
6
+ let(:contents_linter) { double(ContentsLinter) }
7
+
8
+ it 'initializes correctly' do
9
+ expect(linter.playground_file_name) == test_playground_book
10
+ end
11
+
12
+ it 'exits on lint failure' do
13
+ allow(linter).to receive(:contents_dir_exists?)
14
+ .and_return(false)
15
+
16
+ expect { linter.lint }.to raise_error(SystemExit)
17
+ end
18
+
19
+ it 'fails when file does not exist' do
20
+ allow(linter).to receive(:contents_dir_exists?)
21
+ .and_return(false)
22
+ allow(linter).to receive(:fail_lint)
23
+ .with('No Contents directory')
24
+ .and_raise(SystemExit)
25
+
26
+ expect { linter.lint }.to raise_error(SystemExit)
27
+ end
28
+
29
+ it 'lints' do
30
+ allow(linter).to receive(:contents_dir_exists?)
31
+ .and_return(true)
32
+ allow(contents_linter).to receive(:lint)
33
+ expect(Dir).to receive(:chdir).with(test_playground_book)
34
+
35
+ linter.lint
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,35 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ module Playgroundbook
4
+ describe RootManifestLinter do
5
+ include FakeFS::SpecHelpers
6
+ let(:root_manifest_linter) { RootManifestLinter.new(chapter_linter) }
7
+ let(:chapter_linter) { double(ChapterLinter) }
8
+
9
+ it 'fails if Chapters directory does not exist' do
10
+ expect { root_manifest_linter.lint }.to raise_error(SystemExit)
11
+ end
12
+
13
+ it 'fails if manfiest does not include Chapters' do
14
+ FakeFS do
15
+ Dir.mkdir('Chapters')
16
+ plist = { 'Name' => 'Test' }.to_plist
17
+ File.open('Manifest.plist', 'w') { |f| f.write(plist) }
18
+
19
+ expect { root_manifest_linter.lint }.to raise_error(SystemExit)
20
+ end
21
+ end
22
+
23
+ it 'calls through to lint each chapter' do
24
+ FakeFS do
25
+ plist = { 'Chapters' => ['test_chapter_name'], 'Name' => 'Test' }.to_plist
26
+ File.open('Manifest.plist', 'w') { |f| f.write(plist) }
27
+ Dir.mkdir('Chapters')
28
+
29
+ expect(chapter_linter).to receive(:lint).with('test_chapter_name')
30
+
31
+ expect { root_manifest_linter.lint }.to_not raise_error
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,70 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ module Playgroundbook
4
+ describe ChapterCollator do
5
+ include FakeFS::SpecHelpers
6
+ let(:collator) { ChapterCollator.new(page_writer, test_ui) }
7
+ let(:page_writer) { double(PageWriter) }
8
+ let(:test_ui) { Cork::Board.new(silent: true) }
9
+ let(:chapter_contents) { test_chapter_contents }
10
+ let(:chapter_name) { 'test_chapter' }
11
+
12
+ before do
13
+ allow(page_writer).to receive(:write_page!)
14
+ end
15
+
16
+ it 'creates a chapter manifest' do
17
+ collator.collate!(chapter_name, chapter_contents, [])
18
+
19
+ expect(File.exist?("#{chapter_name}.playgroundchapter/#{ManifestFileName}")).to be_truthy
20
+ end
21
+
22
+ context 'the chapter manifest' do
23
+ before do
24
+ collator.collate!(chapter_name, chapter_contents, ['UIKit'])
25
+ end
26
+
27
+ it 'has the correct name' do
28
+ expect(get_manifest("#{chapter_name}.playgroundchapter/#{ManifestFileName}")['Name']).to eq(chapter_name)
29
+ end
30
+
31
+ it 'has the correct pages' do
32
+ expect(get_manifest("#{chapter_name}.playgroundchapter/#{ManifestFileName}")['Pages']).to eq([
33
+ 'Page 1.playgroundpage',
34
+ 'Page 2.playgroundpage',
35
+ ])
36
+ end
37
+ end
38
+
39
+ it 'calls the page_writer for each page' do
40
+ expect(page_writer).to receive(:write_page!).with("Page 1", "Page 1.playgroundpage", [], "str = \"Yo, it's page 1.\"\nsharedFunc()")
41
+ expect(page_writer).to receive(:write_page!).with("Page 2", "Page 2.playgroundpage", [], "str = \"Page 2 awww yeah.\"\nsharedFunc()")
42
+
43
+ collator.collate!(chapter_name, chapter_contents, [])
44
+ end
45
+
46
+ it 'does not explode if a Source directory already exists' do
47
+ expect{ collator.collate!(chapter_name, chapter_contents, []) }.to_not raise_error
48
+ end
49
+
50
+ context 'having colated' do
51
+ before do
52
+ collator.collate!(chapter_name, chapter_contents, [])
53
+ end
54
+
55
+ it 'creates a Source directory if one does not exist' do
56
+ expect(Dir.exist?("#{chapter_name}.playgroundchapter/#{SharedSourcesDirectoryName}")).to be_truthy
57
+ end
58
+
59
+ context 'Sources folder' do
60
+ it 'has a Preamble.swift file' do
61
+ expect(File.exist?("#{chapter_name}.playgroundchapter/#{SharedSourcesDirectoryName}/#{PreambleFileName}")).to be_truthy
62
+ end
63
+
64
+ it 'has the correct preamble contents' do
65
+ expect(File.read("#{chapter_name}.playgroundchapter/#{SharedSourcesDirectoryName}/#{PreambleFileName}")).to eq("import UIKit\n\nvar str = \"Hello, playground\"\n\nfunc sharedFunc() {\n print(\"This should be accessible to all pages.\")\n}")
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,37 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ module Playgroundbook
4
+ describe ContentsManifestGenerator do
5
+ include FakeFS::SpecHelpers
6
+ let(:generator) { ContentsManifestGenerator.new(test_ui) }
7
+ let(:test_ui) { Cork::Board.new(silent: true) }
8
+
9
+ it 'creates the manifest file' do
10
+ generator.generate!(test_book_metadata)
11
+
12
+ expect(File.exist?('Manifest.plist')).to be_truthy
13
+ end
14
+
15
+ describe 'the manifest file' do
16
+ before do
17
+ generator.generate!(test_book_metadata)
18
+ end
19
+
20
+ it 'has a book name' do
21
+ expect(get_manifest['Name']).to eq('Testing Book')
22
+ end
23
+
24
+ it 'has an identifier' do
25
+ expect(get_manifest['ContentIdentifier']).to eq('com.ashfurrow.testing')
26
+ end
27
+
28
+ it 'has a deployment target' do
29
+ expect(get_manifest['DeploymentTarget']).to eq('ios10.0')
30
+ end
31
+
32
+ it 'has chapters specified' do
33
+ expect(get_manifest['Chapters']).to eq(['test_chapter.playgroundchapter'])
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,57 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ module Playgroundbook
4
+ describe PageWriter do
5
+ include FakeFS::SpecHelpers
6
+ let(:page_writer) { PageWriter.new(test_ui) }
7
+ let(:test_ui) { Cork::Board.new(silent: true) }
8
+ let(:page_name) { 'test page name' }
9
+ let(:page_dir_name) { 'test page name.playgroundpage' }
10
+ let(:page_contents) { "// Some swift goes here." }
11
+ let(:generated_page_contesnts) { "//#-hidden-code\nimport UIKit\n//#-end-hidden-code\n// Some swift goes here." }
12
+
13
+ context 'with a pre-existing page directory' do
14
+ before do
15
+ Dir.mkdir(page_dir_name)
16
+ end
17
+
18
+ it 'does not explode' do
19
+ expect{ page_writer.write_page!(page_name, page_dir_name, ['UIKit'], page_contents) }.to_not raise_error
20
+ end
21
+ end
22
+
23
+ context 'as a consequence of writing rendering' do
24
+ before do
25
+ page_writer.write_page!(page_name, page_dir_name, ['UIKit'], page_contents)
26
+ end
27
+
28
+ it 'creates a directory' do
29
+ expect(Dir.exist?(page_dir_name)).to be_truthy
30
+ end
31
+
32
+ it 'writes a manifest' do
33
+ expect(Dir.exist?(page_dir_name)).to be_truthy
34
+ end
35
+
36
+ it 'writes a Contents.swift file' do
37
+ expect(File.exist?("#{page_dir_name}/Contents.swift")).to be_truthy
38
+ end
39
+
40
+ it 'has correct Contents.swift contents' do
41
+ expect(File.read("#{page_dir_name}/Contents.swift")).to eq(generated_page_contesnts)
42
+ end
43
+
44
+ context 'the manifest' do
45
+ let(:manifest) { get_manifest("#{page_dir_name}/#{MANIFEST_FILE_NAME}") }
46
+
47
+ it 'has a name' do
48
+ expect(manifest['Name']).to eq(page_name)
49
+ end
50
+
51
+ it 'has a LiveViewMode' do
52
+ expect(manifest['LiveViewMode']).to eq('HiddenByDefault')
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,112 @@
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, chapter_collator, test_ui) }
7
+ let(:yaml_file_name) { 'book.yml' }
8
+ let(:contents_manifest_generator) { double(ContentsManifestGenerator) }
9
+ let(:chapter_collator) { double(ChapterCollator) }
10
+ let(:test_ui) { Cork::Board.new(silent: true) }
11
+
12
+ before do
13
+ File.open(yaml_file_name, 'w') do |file|
14
+ file.write(test_book_metadata.to_yaml)
15
+ end
16
+
17
+ allow(contents_manifest_generator).to receive(:generate!)
18
+ allow(chapter_collator).to receive(:collate!)
19
+ end
20
+
21
+ it 'initializes correctly' do
22
+ expect(renderer.yaml_file_name) == yaml_file_name
23
+ end
24
+
25
+ it 'explodes when there is no playground' do
26
+ expect{renderer.render!}.to raise_error
27
+ end
28
+
29
+ context 'with a playground' do
30
+ before do
31
+ Dir.mkdir('assets')
32
+ FileUtils.touch('assets/file.png')
33
+ Dir.mkdir('test_chapter.playground/')
34
+ File.open('test_chapter.playground/Contents.swift', 'w') do |file|
35
+ file.write('')
36
+ end
37
+ end
38
+
39
+ it 'creates a directory with book name' do
40
+ renderer.render!
41
+
42
+ expect(Dir.exist?('Testing Book.playgroundbook')).to be_truthy
43
+ end
44
+
45
+ it 'creates a resources folder' do
46
+ renderer.render!
47
+
48
+ expect(Dir.exist?('Testing Book.playgroundbook/Contents/Resources')).to be_truthy
49
+ end
50
+
51
+ it 'copies a resources folder contents' do
52
+ renderer.render!
53
+
54
+ expect(File.exist?('Testing Book.playgroundbook/Contents/Resources/file.png')).to be_truthy
55
+ end
56
+
57
+ context 'within an existing playgroundbook directory' do
58
+ before do
59
+ Dir.mkdir('Testing Book.playgroundbook')
60
+ end
61
+
62
+ it 'does not explode when the directory already exists' do
63
+ expect { renderer.render! }.to_not raise_error
64
+ end
65
+
66
+ it 'creates a Contents directory within the main bundle dir' do
67
+ renderer.render!
68
+
69
+ expect(Dir.exist?('Testing Book.playgroundbook/Contents')).to be_truthy
70
+ end
71
+
72
+ context 'within the Contents directory' do
73
+ before do
74
+ Dir.mkdir('Testing Book.playgroundbook/Contents')
75
+ end
76
+
77
+ it 'does not explode when the Contents directory already exists' do
78
+ expect { renderer.render! }.to_not raise_error
79
+ end
80
+
81
+ it 'renders main manifest' do
82
+ expect(contents_manifest_generator).to receive(:generate!)
83
+
84
+ renderer.render!
85
+ end
86
+
87
+ it 'creates a Chapters directory within the Contents dir' do
88
+ renderer.render!
89
+
90
+ expect(Dir.exist?('Testing Book.playgroundbook/Contents/Chapters')).to be_truthy
91
+ end
92
+
93
+ context 'within the Chapters directory' do
94
+ before do
95
+ Dir.mkdir('Testing Book.playgroundbook/Contents/Chapters')
96
+ end
97
+
98
+ it 'does not explode when the Chapters directory already exists' do
99
+ expect { renderer.render! }.to_not raise_error
100
+ end
101
+
102
+ it 'generates each chapter' do
103
+ expect(chapter_collator).to receive(:collate!)
104
+
105
+ renderer.render!
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,75 @@
1
+ require 'pathname'
2
+ require 'cork'
3
+ require 'rspec'
4
+ require 'plist'
5
+ require 'fileutils'
6
+ require 'fakefs/spec_helpers'
7
+
8
+ ROOT = Pathname.new(File.expand_path('../../', __FILE__))
9
+ $LOAD_PATH.unshift((ROOT + 'lib').to_s)
10
+ $LOAD_PATH.unshift((ROOT + 'spec').to_s)
11
+
12
+ require 'playgroundbook'
13
+ require 'playgroundbook_lint/abstract_linter'
14
+ require 'playgroundbook_lint/chapter_linter'
15
+ require 'playgroundbook_lint/chapter_manifest_linter'
16
+ require 'playgroundbook_lint/contents_linter'
17
+ require 'playgroundbook_lint/manifest_linter'
18
+ require 'playgroundbook_lint/page_linter'
19
+ require 'playgroundbook_lint/page_manifest_linter'
20
+ require 'playgroundbook_lint/cutscene_page_linter'
21
+ require 'playgroundbook_lint/cutscene_page_manifest_linter'
22
+ require 'playgroundbook_lint/root_manifest_linter'
23
+
24
+ require 'playgroundbook_renderer/contents_manifest_generator'
25
+ require 'playgroundbook_renderer/chapter_collator'
26
+ require 'playgroundbook_renderer/page_writer'
27
+
28
+ RSpec.configure do |config|
29
+ config.color = true
30
+
31
+ config.order = :random
32
+ Kernel.srand config.seed
33
+ end
34
+ RSpec::Expectations.configuration.on_potential_false_positives = :nothing
35
+
36
+ Playgroundbook::AbstractLinter.ui = Cork::Board.new(silent: true)
37
+
38
+ def test_playground_book
39
+ 'spec/fixtures/Starter.playgroundbook'
40
+ end
41
+
42
+ def test_book_metadata
43
+ {
44
+ 'name' => 'Testing Book',
45
+ 'chapters' => ['test_chapter'],
46
+ 'identifier' => 'com.ashfurrow.testing',
47
+ 'resources' => 'assets',
48
+ }
49
+ end
50
+
51
+ def get_manifest(file_name = Playgroundbook::ManifestFileName)
52
+ Plist.parse_xml(file_name)
53
+ end
54
+
55
+ def test_chapter_contents
56
+ <<-EOSwift
57
+ import UIKit
58
+
59
+ var str = "Hello, playground"
60
+
61
+ func sharedFunc() {
62
+ print("This should be accessible to all pages.")
63
+ }
64
+
65
+ //// Page 1
66
+
67
+ str = "Yo, it's page 1."
68
+ sharedFunc()
69
+
70
+ //// Page 2
71
+
72
+ str = "Page 2 awww yeah."
73
+ sharedFunc()
74
+ EOSwift
75
+ end
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: playgroundbook
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Ash Furrow
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-08-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: plist
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: colored
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: cork
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.1'
55
+ description: Tooks for Swift Playground books on iOS, a renderer and a linter.
56
+ email: ash@ashfurrow.com
57
+ executables:
58
+ - playgroundbook
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - ".rspec"
64
+ - ".rubocop.yml"
65
+ - ".ruby-version"
66
+ - Changelog.md
67
+ - Gemfile
68
+ - Gemfile.lock
69
+ - Guardfile
70
+ - LICENSE
71
+ - README.md
72
+ - Rakefile
73
+ - bin/playgroundbook
74
+ - lib/playgroundbook.rb
75
+ - lib/playgroundbook_lint/abstract_linter.rb
76
+ - lib/playgroundbook_lint/chapter_linter.rb
77
+ - lib/playgroundbook_lint/chapter_manifest_linter.rb
78
+ - lib/playgroundbook_lint/contents_linter.rb
79
+ - lib/playgroundbook_lint/cutscene_page_linter.rb
80
+ - lib/playgroundbook_lint/cutscene_page_manifest_linter.rb
81
+ - lib/playgroundbook_lint/manifest_linter.rb
82
+ - lib/playgroundbook_lint/page_linter.rb
83
+ - lib/playgroundbook_lint/page_manifest_linter.rb
84
+ - lib/playgroundbook_lint/playgroundbook_lint.rb
85
+ - lib/playgroundbook_lint/root_manifest_linter.rb
86
+ - lib/playgroundbook_renderer/chapter_collator.rb
87
+ - lib/playgroundbook_renderer/contents_manifest_generator.rb
88
+ - lib/playgroundbook_renderer/page_writer.rb
89
+ - lib/playgroundbook_renderer/playgroundbook_renderer.rb
90
+ - lib/version.rb
91
+ - playground_book_lint.gemspec
92
+ - spec/fixtures/Starter.playgroundbook/Contents/Chapters/Chapter1.playgroundchapter/Manifest.plist
93
+ - spec/fixtures/Starter.playgroundbook/Contents/Chapters/Chapter1.playgroundchapter/Pages/Page1.playgroundpage/Contents.swift
94
+ - spec/fixtures/Starter.playgroundbook/Contents/Chapters/Chapter1.playgroundchapter/Pages/Page1.playgroundpage/Manifest.plist
95
+ - spec/fixtures/Starter.playgroundbook/Contents/Chapters/Chapter1.playgroundchapter/Pages/Page2.playgroundpage/Contents.swift
96
+ - spec/fixtures/Starter.playgroundbook/Contents/Chapters/Chapter1.playgroundchapter/Pages/Page2.playgroundpage/Manifest.plist
97
+ - spec/fixtures/Starter.playgroundbook/Contents/Manifest.plist
98
+ - spec/fixtures/assets/file.jpeg
99
+ - spec/fixtures/book.yml
100
+ - spec/fixtures/test_chapter.playground/Contents.swift
101
+ - spec/fixtures/test_chapter.playground/contents.xcplayground
102
+ - spec/playground_book_lint/chapter_linter_spec.rb
103
+ - spec/playground_book_lint/chapter_manifest_linter_spec.rb
104
+ - spec/playground_book_lint/contents_linter_spec.rb
105
+ - spec/playground_book_lint/cutscene_page_linter_spec.rb
106
+ - spec/playground_book_lint/cutscene_page_manifest_linter_spec.rb
107
+ - spec/playground_book_lint/manfiest_linter_spec.rb
108
+ - spec/playground_book_lint/page_linter_spec.rb
109
+ - spec/playground_book_lint/page_manifest_linter_spec.rb
110
+ - spec/playground_book_lint/playgroundbook_lint_spec.rb
111
+ - spec/playground_book_lint/root_manifest_linter_spec.rb
112
+ - spec/playgroundbook_renderer_spec/chapter_collator_spec.rb
113
+ - spec/playgroundbook_renderer_spec/contents_manfiest_generator_spec.rb
114
+ - spec/playgroundbook_renderer_spec/page_writer_spec.rb
115
+ - spec/playgroundbook_renderer_spec/playgroundbook_renderer_spec.rb
116
+ - spec/spec_helper.rb
117
+ homepage: https://github.com/ashfurrow/playground-book-lint
118
+ licenses:
119
+ - MIT
120
+ metadata: {}
121
+ post_install_message:
122
+ rdoc_options: []
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ requirements: []
136
+ rubyforge_project:
137
+ rubygems_version: 2.2.2
138
+ signing_key:
139
+ specification_version: 4
140
+ summary: Lints/renders Swift Playground books.
141
+ test_files: []