reveal-ck 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +8 -8
  2. data/bin/reveal-ck +18 -12
  3. data/lib/reveal-ck.rb +3 -10
  4. data/lib/reveal-ck/builders.rb +4 -0
  5. data/lib/reveal-ck/builders/build_task.rb +21 -0
  6. data/lib/reveal-ck/builders/builder.rb +27 -0
  7. data/lib/reveal-ck/builders/index_html.rb +85 -0
  8. data/lib/reveal-ck/builders/packaged_slides.rb +84 -0
  9. data/lib/reveal-ck/changers.rb +3 -0
  10. data/lib/reveal-ck/changers/slicer.rb +25 -0
  11. data/lib/reveal-ck/changers/splicer.rb +37 -0
  12. data/lib/reveal-ck/changers/string_replacer.rb +18 -0
  13. data/lib/reveal-ck/config.rb +51 -23
  14. data/lib/reveal-ck/presentation.rb +24 -15
  15. data/lib/reveal-ck/presentation_dsl.rb +20 -12
  16. data/lib/reveal-ck/slide.rb +3 -3
  17. data/lib/reveal-ck/templates.rb +3 -0
  18. data/lib/reveal-ck/templates/finder.rb +35 -0
  19. data/lib/reveal-ck/templates/processor.rb +32 -0
  20. data/lib/reveal-ck/templates/render_scope.rb +14 -0
  21. data/lib/reveal-ck/version.rb +1 -1
  22. data/rakelib/examples.rake +7 -0
  23. data/spec/data/{slicer → changers/slicer}/after_remove +0 -0
  24. data/spec/data/{slicer → changers/slicer}/before_remove +0 -0
  25. data/spec/data/{splicer → changers/splicer}/abcd +0 -0
  26. data/spec/data/{splicer → changers/splicer}/after_insert +0 -0
  27. data/spec/data/{splicer → changers/splicer}/before_insert +0 -0
  28. data/spec/data/{string_replacer → changers/string_replacer}/after_replace +0 -0
  29. data/spec/data/{string_replacer → changers/string_replacer}/before_replace +0 -0
  30. data/spec/data/config/full_config.toml +7 -0
  31. data/spec/data/config/partial_config.toml +1 -0
  32. data/spec/data/presentation/slides.haml +2 -0
  33. data/spec/data/presentation/slides.rb +5 -0
  34. data/spec/data/{dsl/slides.rb → presentation_dsl/dsl.rb} +4 -0
  35. data/spec/data/templates/finder/code/function.rb +3 -0
  36. data/spec/data/{template_finder/automated/automated.slim → templates/finder/quotes/create} +0 -0
  37. data/spec/data/{template_finder/automated/common.haml → templates/finder/templates/template_one.slim} +0 -0
  38. data/spec/data/{template_finder/custom/common.haml → templates/finder/templates/template_two.slim} +0 -0
  39. data/spec/data/{template_finder/custom/custom.slim → templates/finder/templates/text.slim} +0 -0
  40. data/spec/data/{haml → templates/processor}/basic.haml +0 -0
  41. data/spec/data/{slim → templates/processor}/basic.slim +0 -0
  42. data/spec/data/templates/render_scope/quote +2 -0
  43. data/spec/examples/programmatic_slides_spec.rb +12 -0
  44. data/spec/examples/slide_output_spec.rb +12 -0
  45. data/spec/lib/reveal-ck/builders/builder_spec.rb +39 -0
  46. data/spec/lib/reveal-ck/builders/packaged_slides_spec.rb +39 -0
  47. data/spec/lib/reveal-ck/changers/slicer_spec.rb +46 -0
  48. data/spec/lib/reveal-ck/changers/splicer_spec.rb +45 -0
  49. data/spec/lib/reveal-ck/changers/string_replacer_spec.rb +35 -0
  50. data/spec/lib/reveal-ck/config_spec.rb +68 -20
  51. data/spec/lib/reveal-ck/presentation_dsl_spec.rb +21 -11
  52. data/spec/lib/reveal-ck/presentation_spec.rb +40 -38
  53. data/spec/lib/reveal-ck/slide_spec.rb +3 -3
  54. data/spec/lib/reveal-ck/templates/finder_spec.rb +88 -0
  55. data/spec/lib/reveal-ck/templates/processor_spec.rb +31 -0
  56. data/spec/lib/reveal-ck/templates/render_scope_spec.rb +24 -0
  57. data/templates/{title.slim → intro.slim} +0 -0
  58. metadata +77 -71
  59. data/lib/reveal-ck/build_task.rb +0 -19
  60. data/lib/reveal-ck/builder.rb +0 -25
  61. data/lib/reveal-ck/file_slicer.rb +0 -23
  62. data/lib/reveal-ck/file_splicer.rb +0 -36
  63. data/lib/reveal-ck/file_string_replacer.rb +0 -16
  64. data/lib/reveal-ck/presentation_builder.rb +0 -94
  65. data/lib/reveal-ck/slide_builder.rb +0 -81
  66. data/lib/reveal-ck/slides_html_builder.rb +0 -39
  67. data/lib/reveal-ck/template_finder.rb +0 -33
  68. data/lib/reveal-ck/template_processor.rb +0 -28
  69. data/spec/data/config/config.toml +0 -6
  70. data/spec/data/html/converted_basic_haml.html +0 -10
  71. data/spec/data/html/converted_basic_slim.html +0 -10
  72. data/spec/data/html/reveal-js-index.html +0 -375
  73. data/spec/data/slides_html_builder/slides.haml +0 -3
  74. data/spec/data/slides_html_builder/slides.rb +0 -14
  75. data/spec/data/slides_html_builder/slides.slim +0 -2
  76. data/spec/lib/reveal-ck/builder_spec.rb +0 -37
  77. data/spec/lib/reveal-ck/file_slicer_spec.rb +0 -44
  78. data/spec/lib/reveal-ck/file_splicer_spec.rb +0 -43
  79. data/spec/lib/reveal-ck/file_string_replacer_spec.rb +0 -34
  80. data/spec/lib/reveal-ck/presentation_builder_spec.rb +0 -37
  81. data/spec/lib/reveal-ck/slides_html_builder_spec.rb +0 -102
  82. data/spec/lib/reveal-ck/template_finder_spec.rb +0 -87
  83. data/spec/lib/reveal-ck/template_processor_spec.rb +0 -29
@@ -1,3 +0,0 @@
1
- %section
2
- %h1
3
- Hello Haml!
@@ -1,14 +0,0 @@
1
- presentation do
2
-
3
- matz_says = %{
4
- No. It's kinda complex. Ruby is simple in appearance, but is very
5
- complex inside, just like our human body.
6
- }
7
-
8
- citation = 'http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/2773'
9
-
10
- slide 'quote',
11
- headline: 'Hello Ruby!',
12
- quote: matz_says,
13
- citation: citation
14
- end
@@ -1,2 +0,0 @@
1
- section
2
- h1 Hello Slim!
@@ -1,37 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module RevealCK
4
-
5
- describe Builder, 'when subclassed' do
6
-
7
- it 'requires that subclasses implement #register_tasks' do
8
- class BadBuilder < Builder; end
9
- bad_builder = BadBuilder.new
10
- expect { bad_builder.register_tasks }.to raise_error
11
- end
12
-
13
- it 'invokes each registered task when it receives #build' do
14
-
15
- class TestBuilder < Builder
16
-
17
- attr_reader :value
18
-
19
- def initialize
20
- @value = 0
21
- end
22
-
23
- def register_tasks
24
- @tasks = []
25
- @value = 0
26
- add_task 'Set Value to 1' do
27
- @value = 1
28
- end
29
- end
30
- end
31
-
32
- test_builder = TestBuilder.new
33
- test_builder.build!
34
- expect(test_builder.value).to eq 1
35
- end
36
- end
37
- end
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
- require 'fileutils'
3
- require 'tmpdir'
4
-
5
- module RevealCK
6
- describe FileSlicer do
7
-
8
- describe '.remove!' do
9
-
10
- let :before_remove do
11
- File.join spec_dir, 'data', 'slicer', 'before_remove'
12
- end
13
-
14
- let :after_remove do
15
- File.join spec_dir, 'data', 'slicer', 'after_remove'
16
- end
17
-
18
- it 'removes a range of lines from a file' do
19
- Dir.mktmpdir do |tmp_dir|
20
- FileUtils.cp before_remove, tmp_dir
21
- test_file = File.join tmp_dir, 'before_remove'
22
- FileSlicer.remove! test_file, 3..6
23
- test_file_contents = File.open(test_file).read
24
- after_remove_contents = File.open(after_remove).read
25
- test_file_contents.should == after_remove_contents
26
- end
27
- end
28
- end
29
-
30
- describe '#remove' do
31
-
32
- it 'returns lines with the range removed' do
33
- lines = [
34
- 'a',
35
- 'b',
36
- 'c',
37
- 'd'
38
- ]
39
- slicer = FileSlicer.new lines
40
- slicer.remove(1..2).should == ['a', 'd']
41
- end
42
- end
43
- end
44
- end
@@ -1,43 +0,0 @@
1
- require 'spec_helper'
2
- require 'fileutils'
3
- require 'tmpdir'
4
-
5
- module RevealCK
6
- describe FileSplicer do
7
-
8
- describe '.insert!' do
9
-
10
- let :before_insert do
11
- File.join spec_dir, 'data', 'splicer', 'before_insert'
12
- end
13
-
14
- let :abcd do
15
- File.join spec_dir, 'data', 'splicer', 'abcd'
16
- end
17
-
18
- let :after_insert do
19
- File.join spec_dir, 'data', 'splicer', 'after_insert'
20
- end
21
-
22
- it 'inserts one file into another' do
23
- Dir.mktmpdir do |tmp_dir|
24
- FileUtils.cp before_insert, tmp_dir
25
- test_file = File.join tmp_dir, 'before_insert'
26
- FileSplicer.insert! abcd, into: test_file, after: '3'
27
- test_file_contents = File.open(test_file).read
28
- after_insert_contents = File.open(after_insert).read
29
- test_file_contents.should == after_insert_contents
30
- end
31
- end
32
- end
33
-
34
- describe '#insert' do
35
- it 'inserts lines after a match' do
36
- original = ['0', '1', '2', '3']
37
- splicer = FileSplicer.new original
38
- result = splicer.insert ['a', 'b', 'c'], after: '2'
39
- result.should == ['0', '1', '2', 'a', 'b', 'c', '3']
40
- end
41
- end
42
- end
43
- end
@@ -1,34 +0,0 @@
1
- require 'spec_helper'
2
- require 'fileutils'
3
- require 'tmpdir'
4
-
5
- module RevealCK
6
-
7
- describe FileStringReplacer do
8
-
9
- describe '.replace!' do
10
-
11
- let :before_replace do
12
- File.join spec_dir, 'data', 'string_replacer', 'before_replace'
13
- end
14
-
15
- let :after_replace do
16
- File.join spec_dir, 'data', 'string_replacer', 'after_replace'
17
- end
18
-
19
- it 'replaces content within a file' do
20
- Dir.mktmpdir do |tmp_dir|
21
- FileUtils.cp before_replace, tmp_dir
22
- test_file = File.join tmp_dir, 'before_replace'
23
- FileStringReplacer.replace!(test_file,
24
- old: ' hideaway at sea',
25
- new: 'hh coconuts!')
26
- test_file_contents = File.open(test_file).read
27
- after_replace_contents = File.open(after_replace).read
28
- test_file_contents.should == after_replace_contents
29
- end
30
- end
31
-
32
- end
33
- end
34
- end
@@ -1,37 +0,0 @@
1
- require 'spec_helper'
2
- require 'tmpdir'
3
-
4
- module RevealCK
5
- describe PresentationBuilder do
6
-
7
- let :presentation do
8
- presentation = Presentation.new
9
- presentation.title = "Presentation Title"
10
- presentation.author = "Presentation Author"
11
-
12
- presentation.add_slide(Slide.new({
13
- template: 'title',
14
- title: presentation.title,
15
- author: presentation.author,
16
- site: 'http://site.com',
17
- twitter: 'twitter'
18
- }))
19
- presentation
20
- end
21
-
22
- it 'can build reveal.js slides from a Presentation' do
23
-
24
- tmp_dir = Dir.mktmpdir
25
-
26
- presentation_builder =
27
- PresentationBuilder.new({
28
- presentation: presentation,
29
- output_dir: tmp_dir,
30
- })
31
- presentation_builder.build!
32
-
33
- expect(File.exists? File.join(tmp_dir, "index.html")).to be_true
34
- end
35
-
36
- end
37
- end
@@ -1,102 +0,0 @@
1
- require 'spec_helper'
2
- require 'tempfile'
3
-
4
- module RevealCK
5
- describe SlidesHtmlBuilder do
6
-
7
- let :data do
8
- File.join 'spec', 'data', 'slides_html_builder'
9
- end
10
-
11
- context 'when working with slim' do
12
-
13
- let :input_file do
14
- File.join data, 'slides.slim'
15
- end
16
-
17
- describe '#render' do
18
- it 'knows how to create slide content from slim' do
19
- builder = SlidesHtmlBuilder.new input_file: input_file
20
- expect(builder.render).to include "<section>"
21
- expect(builder.render).to include "<h1>"
22
- expect(builder.render).to include "Hello Slim!"
23
- end
24
- end
25
-
26
- end
27
-
28
- context 'when working with haml' do
29
-
30
- let :input_file do
31
- File.join data, 'slides.haml'
32
- end
33
-
34
- describe '#render' do
35
- it 'knows how to create slide content from haml' do
36
- builder = SlidesHtmlBuilder.new input_file: input_file
37
- expect(builder.render).to include "<section>"
38
- expect(builder.render).to include "<h1>"
39
- expect(builder.render).to include "Hello Haml!"
40
- end
41
- end
42
-
43
- end
44
-
45
- context 'when working with ruby' do
46
-
47
- let :input_file do
48
- File.join data, 'slides.rb'
49
- end
50
-
51
- describe '#render' do
52
- it 'knows how to create slide content from ruby' do
53
- builder = SlidesHtmlBuilder.new input_file: input_file
54
- expect(builder.render).to include "<section>"
55
- expect(builder.render).to include "<h2>"
56
- expect(builder.render).to include "Hello Ruby!"
57
- end
58
- end
59
-
60
- end
61
-
62
- context 'when working with a Presentation' do
63
-
64
- let :presentation do
65
- quote = Slide.new({
66
- template: 'quote',
67
- content: 'Hello Ruby!',
68
- citation: 'https://www.ruby-lang.org/en/about/'
69
- })
70
- presentation = Presentation.new
71
- presentation.add_slide quote
72
- presentation
73
- end
74
-
75
- describe '#render' do
76
- it 'knows how to create slide content from a Presentation' do
77
- builder = SlidesHtmlBuilder.new presentation: presentation
78
- expect(builder.render).to include "<section>"
79
- expect(builder.render).to include "<blockquote"
80
- expect(builder.render).to include "Hello Ruby!"
81
- end
82
- end
83
-
84
- end
85
-
86
- describe '#write_to' do
87
-
88
- it 'can write #rendered output to a file' do
89
- input_file = File.join data, 'slides.haml'
90
- builder = SlidesHtmlBuilder.new input_file: input_file
91
- tmp_file = Tempfile.new 'slides.html'
92
- builder.write_to file: tmp_file.path
93
-
94
- written_content = File.open(tmp_file).read
95
- expect(written_content).to include "<section>"
96
- expect(written_content).to include "<h1>"
97
- expect(written_content).to include "Hello Haml!"
98
- end
99
-
100
- end
101
- end
102
- end
@@ -1,87 +0,0 @@
1
- require 'spec_helper'
2
- require 'tmpdir'
3
- require 'fileutils'
4
-
5
- module RevealCK
6
-
7
- describe TemplateFinder do
8
-
9
- let :reveal_ck_dir do
10
- Dir.pwd
11
- end
12
-
13
- describe '#paths' do
14
-
15
- it 'defaults to Dir.pwd, Dir.pwd/templates, and reveal-ck/templates' do
16
- finder = TemplateFinder.new
17
- expect(finder.paths).to include Dir.pwd
18
- expect(finder.paths).to include File.join(Dir.pwd, 'templates')
19
- expect(finder.paths).to include File.join(reveal_ck_dir, 'templates')
20
- expect(finder.paths.size).to eq 3
21
- end
22
-
23
- it 'can be assigned via initializer' do
24
- Dir.mktmpdir do |dir|
25
- paths = [ dir, File.join(dir, 'templates') ]
26
- finder = TemplateFinder.new paths: paths
27
- expect(finder.paths).to include dir
28
- expect(finder.paths).to include File.join(dir, 'templates')
29
- expect(finder.paths.size).to eq 2
30
- end
31
- end
32
-
33
- end
34
-
35
- describe '#find' do
36
-
37
- let :template_finder_dir do
38
- File.join reveal_ck_dir, 'spec', 'data', 'template_finder'
39
- end
40
-
41
- let :automated_dir do
42
- File.join template_finder_dir, 'automated'
43
- end
44
-
45
- let :custom_dir do
46
- File.join template_finder_dir, 'custom'
47
- end
48
-
49
- let :reveal_ck_templates_dir do
50
- File.join reveal_ck_dir, 'templates'
51
- end
52
-
53
- let :finder do
54
- paths = [custom_dir, automated_dir, reveal_ck_templates_dir]
55
- TemplateFinder.new paths: paths
56
- end
57
-
58
- it 'searches all paths to find templates' do
59
- result = finder.find 'automated'
60
- automated_slim = File.join('automated', 'automated.slim')
61
- expect(result).to include automated_slim
62
-
63
- result = finder.find 'custom'
64
- custom_slim = File.join('custom', 'custom.slim')
65
- expect(result).to include custom_slim
66
-
67
- result = finder.find 'title'
68
- title_slim = File.join('reveal-ck', 'templates', 'title.slim')
69
- expect(result).to include title_slim
70
- end
71
-
72
- it 'searchs paths in order and returns the first match' do
73
- result = finder.find 'common.haml'
74
- expect(result).to include File.join('custom', 'common.haml')
75
- end
76
-
77
- it 'can search by partial file name' do
78
- result = finder.find 'common'
79
- expect(result).to include File.join('custom', 'common.haml')
80
- end
81
-
82
- it 'raises if it cannot find what you asked for' do
83
- expect { finder.find 'unknown' }.to raise_error
84
- end
85
- end
86
- end
87
- end
@@ -1,29 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module RevealCK
4
- describe TemplateProcessor do
5
-
6
- let :slim_file do
7
- File.join Dir.pwd, 'spec', 'data', 'slim', 'basic.slim'
8
- end
9
-
10
- let :haml_file do
11
- File.join Dir.pwd, 'spec', 'data', 'haml', 'basic.haml'
12
- end
13
-
14
- let :pretty_printed_basic do
15
- /<p>\s+This is basic (Slim|Haml)\s+<\/p>/
16
- end
17
-
18
- it 'can process a slim template' do
19
- processor = TemplateProcessor.open slim_file
20
- processor.output.should match pretty_printed_basic
21
- end
22
-
23
- it 'can process a haml template' do
24
- processor = TemplateProcessor.open haml_file
25
- processor.output.should match pretty_printed_basic
26
- end
27
-
28
- end
29
- end