slideshow-models 2.5.0 → 3.0.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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/Manifest.txt +45 -37
  3. data/README.md +3 -2
  4. data/Rakefile +3 -5
  5. data/config/slideshow.yml +7 -14
  6. data/lib/slideshow/commands/fetch.rb +2 -4
  7. data/lib/slideshow/commands/gen.rb +57 -161
  8. data/lib/slideshow/commands/list.rb +2 -4
  9. data/lib/slideshow/commands/plugins.rb +2 -4
  10. data/lib/slideshow/commands/quick.rb +5 -8
  11. data/lib/slideshow/config.rb +11 -50
  12. data/lib/slideshow/drops.rb +35 -0
  13. data/lib/slideshow/filters/debug_filter.rb +3 -3
  14. data/lib/slideshow/filters/slide_filter.rb +1 -67
  15. data/lib/slideshow/filters/text_filter.rb +1 -18
  16. data/lib/slideshow/helpers/background_helper.rb +1 -0
  17. data/lib/slideshow/helpers/step_helper.rb +1 -1
  18. data/lib/slideshow/manifest_helpers.rb +4 -0
  19. data/lib/slideshow/markdown.rb +27 -0
  20. data/lib/slideshow/models.rb +9 -13
  21. data/lib/slideshow/models/deck.rb +188 -0
  22. data/lib/slideshow/{slide.rb → models/slide.rb} +9 -4
  23. data/lib/slideshow/opts.rb +117 -0
  24. data/lib/slideshow/version.rb +2 -2
  25. data/test/helper.rb +9 -0
  26. data/test/samples/test.md +29 -0
  27. data/test/samples/test_content_for.md +25 -0
  28. data/test/templates/test/test.html +52 -0
  29. data/test/templates/test/test.txt +5 -0
  30. data/test/test_gen.rb +54 -0
  31. data/test/test_kramdown.rb +67 -0
  32. data/test/test_slide.rb +44 -0
  33. data/test/test_version.rb +29 -0
  34. metadata +25 -17
  35. data/lib/slideshow/helpers/markdown_helper.rb +0 -20
  36. data/lib/slideshow/markup/markdown.rb +0 -20
  37. data/lib/slideshow/markup/mediawiki.rb +0 -40
  38. data/lib/slideshow/markup/rest.rb +0 -19
  39. data/lib/slideshow/markup/textile.rb +0 -70
@@ -8,14 +8,12 @@ class List
8
8
 
9
9
  include ManifestHelper
10
10
 
11
- ### fix: remove opts, use config (wrapped!!)
12
11
 
13
- def initialize( opts, config )
14
- @opts = opts
12
+ def initialize( config )
15
13
  @config = config
16
14
  end
17
15
 
18
- attr_reader :opts, :config
16
+ attr_reader :config
19
17
 
20
18
  def run
21
19
  home = Env.home
@@ -8,14 +8,12 @@ class Plugins
8
8
 
9
9
  include PluginHelper
10
10
 
11
- ### fix: remove opts, use config (wrapped!!)
12
11
 
13
- def initialize( opts, config )
14
- @opts = opts
12
+ def initialize( config )
15
13
  @config = config
16
14
  end
17
15
 
18
- attr_reader :opts, :config
16
+ attr_reader :config
19
17
 
20
18
  def run
21
19
  home = Env.home
@@ -8,17 +8,14 @@ class Quick
8
8
 
9
9
  include ManifestHelper
10
10
 
11
- ### fix: remove opts, use config (wrapped!!)
12
-
13
- def initialize( opts, config )
14
- @opts = opts
11
+ def initialize( config )
15
12
  @config = config
16
13
  end
17
14
 
18
- attr_reader :opts, :config
15
+ attr_reader :config
19
16
 
20
17
  def run
21
- manifest_name = opts.quick_manifest.gsub('.txt','').gsub('.quick','') # make sure we get name w/o .quick and .txt extension
18
+ manifest_name = config.quick_manifest.gsub('.txt','').gsub('.quick','') # make sure we get name w/o .quick and .txt extension
22
19
 
23
20
  ### todo:fix: always download quickstart templates (except welcome?)
24
21
  # how to make sure the won't go stale in the cache after the download?
@@ -39,7 +36,7 @@ class Quick
39
36
  end
40
37
 
41
38
  manifestsrc = matches[0][1]
42
- pakpath = opts.output_path
39
+ pakpath = config.output_path
43
40
 
44
41
  logger.debug( "manifestsrc=>#{manifestsrc}<, pakpath=>#{pakpath}<" )
45
42
 
@@ -85,4 +82,4 @@ class Quick
85
82
  end # method fetch_pak
86
83
 
87
84
  end # class GenTemplates
88
- end # module Slideshow
85
+ end # module Slideshow
@@ -10,19 +10,17 @@ class Config
10
10
  @opts = opts
11
11
  end
12
12
 
13
- attr_reader :opts
13
+ ## -- todo: allow (direct) access to opts - why? why not?
14
+ ## attr_reader :opts
14
15
 
15
- def header_level
16
- @opts.header_level
17
- end
18
-
19
- def slide?
20
- @opts.slide?
21
- end
22
-
23
- def takahashi?
24
- @opts.takahashi?
25
- end
16
+ def manifest() @opts.manifest; end
17
+ def quick_manifest() @opts.quick_manifest; end
18
+ def header_level() @opts.header_level; end
19
+ def slide?() @opts.slide?; end
20
+ def takahashi?() @opts.takahashi?; end
21
+ def test?() @opts.test?; end ## in test mode (yes/no) - will (auto-)include test templates
22
+ def verbose?() @opts.verbose?; end
23
+ def output_path() @opts.output_path; end
26
24
 
27
25
 
28
26
  # todo/fix: fix references after this move to here, that is, Config class
@@ -34,7 +32,7 @@ class Config
34
32
 
35
33
  def config_dir
36
34
  unless @config_dir # first time? calculate config_dir value to "cache"
37
- @config_dir = opts.config_path
35
+ @config_dir = @opts.config_path
38
36
 
39
37
  # make sure path exists
40
38
  FileUtils.makedirs( @config_dir ) unless File.directory? @config_dir
@@ -163,43 +161,6 @@ class Config
163
161
  @props.fetch_from_section( 'headers', normalize_key( key ), nil )
164
162
  end
165
163
 
166
-
167
- def markdown_post_processing?( lib )
168
- ## todo: normalize key/lib???
169
- @props.fetch_from_section( lib, 'post-processing', true )
170
- end
171
-
172
- def known_rest_extnames
173
- @props.fetch_from_section( 'rest', 'extnames', [] )
174
- end
175
-
176
- def known_textile_extnames
177
- @props.fetch_from_section( 'textile', 'extnames', [] )
178
- end
179
-
180
- def known_mediawiki_extnames
181
- @props.fetch_from_section( 'mediawiki', 'extnames', [] )
182
- end
183
-
184
- def known_markdown_extnames
185
- ## delegate config to Markdown gem for now
186
- ## todo/fix: how to pass on setting to Markdown gem??
187
- Markdown.extnames
188
- end
189
-
190
- def known_extnames
191
- # returns an array of known file extensions e.g.
192
- # [ '.textile', '.t' ]
193
- #
194
- # using nested key
195
- # textile:
196
- # extnames: [ .textile, .t ]
197
- #
198
- # ruby check: is it better self. ?? or more confusing
199
- # possible conflict only with write access (e.g. prop=)
200
-
201
- known_textile_extnames + known_markdown_extnames + known_mediawiki_extnames + known_rest_extnames
202
- end
203
164
 
204
165
  def text_filters
205
166
  @props.fetch( 'filters', [] )
@@ -0,0 +1,35 @@
1
+ # encoding: utf-8
2
+
3
+ module Slideshow
4
+
5
+ class HeadersDrop < Liquid::Drop
6
+
7
+ def initialize( headers )
8
+ @headers = headers
9
+ end
10
+
11
+ def before_method( method )
12
+ ## note: assume returned value is always a string or nil (if key not found)
13
+ puts " call HeadersDrop#before_method >#{method}< : #{method.class}"
14
+ value = @headers[ method ]
15
+ value
16
+ end
17
+
18
+ end # class HeadersDrop
19
+
20
+
21
+ class SlideDrop < Liquid::Drop
22
+
23
+ def initialize( slide )
24
+ @slide = slide
25
+ end
26
+
27
+ def content() puts " call SlideDrop#content"; @slide.content; end
28
+ def content_without_header() puts " call SlideDrop#content_w/o_header"; @slide.content_without_header; end
29
+ def header() puts " call SlideDrop#header"; @slide.header; end
30
+ def classes() puts " call SlideDrop#classes"; @slide.classes; end
31
+ def data_attributes() puts " call SlideDrop#data_attributes"; @slide.data_attributes; end
32
+ end ## class SlideDrop
33
+
34
+
35
+ end # module Slideshow
@@ -11,7 +11,7 @@ def dump_content_to_file_debug_text_erb( content )
11
11
  # - opts
12
12
  # - outdir
13
13
 
14
- return content unless opts.verbose?
14
+ return content unless config.verbose?
15
15
 
16
16
  outname = "#{outdir}/#{@name}.debug.text.erb"
17
17
 
@@ -32,7 +32,7 @@ def dump_content_to_file_debug_html( content )
32
32
  # - opts
33
33
  # - outdir
34
34
 
35
- return content unless opts.verbose?
35
+ return content unless config.verbose?
36
36
 
37
37
  outname = "#{outdir}/#{@name}.debug.html"
38
38
 
@@ -53,7 +53,7 @@ def dump_content_to_file_debug_text( content )
53
53
  # - opts
54
54
  # - outdir
55
55
 
56
- return content unless opts.verbose?
56
+ return content unless config.verbose?
57
57
 
58
58
  outname = "#{outdir}/#{@name}.debug.text"
59
59
 
@@ -38,73 +38,6 @@ module Slideshow
38
38
  content
39
39
  end
40
40
 
41
-
42
- # add slide directive before h1 (tells slideshow gem where to break slides)
43
- #
44
- # e.g. changes:
45
- # <h1 id='optional' class='optional'>
46
- # to
47
- # html comment -> _S9SLIDE_ (note: rdoc can't handle html comments?)
48
- # <h1 id='optional' class='optional'>
49
-
50
- def add_slide_directive_before_h1( content )
51
-
52
- # mark h1 for getting wrapped into slide divs
53
- # note: use just <h1 since some processors add ids e.g. <h1 id='x'>
54
-
55
- slide_count = 0
56
-
57
- content.gsub!( /<h1/ ) do |match|
58
- slide_count += 1
59
- "\n<!-- _S9SLIDE_ -->\n#{Regexp.last_match(0)}"
60
- end
61
-
62
- puts " Adding #{slide_count} slide breaks (using h1 rule)..."
63
-
64
- content
65
- end
66
-
67
- def add_slide_directive_before_h2( content )
68
-
69
- slide_count = 0
70
-
71
- content.gsub!( /<h2/ ) do |match|
72
- slide_count += 1
73
- "\n<!-- _S9SLIDE_ -->\n#{Regexp.last_match(0)}"
74
- end
75
-
76
- puts " Adding #{slide_count} slide breaks (using h2 rule)..."
77
-
78
- content
79
- end
80
-
81
-
82
-
83
- # add slide directive before div h1 (for pandoc-generated html)
84
- #
85
- # e.g. changes:
86
- # <div id='header'>
87
- # <h1 id='optional' class='optional'>
88
- # to
89
- # html comment -> _S9SLIDE_
90
- # <div id='header'>
91
- # <h1 id='optional' class='optional'>
92
-
93
-
94
- def add_slide_directive_before_div_h1( content )
95
-
96
- slide_count = 0
97
-
98
- content.gsub!( /<div[^>]*>\s*<h1/ ) do |match|
99
- slide_count += 1
100
- "\n<!-- _S9SLIDE_ -->\n#{Regexp.last_match(0)}"
101
- end
102
-
103
- puts " Adding #{slide_count} slide breaks (using div_h1 rule)..."
104
-
105
- content
106
- end
107
-
108
41
 
109
42
  end # module SlideFilter
110
43
  end # module Slideshow
@@ -112,3 +45,4 @@ end # module Slideshow
112
45
  class Slideshow::Gen
113
46
  include Slideshow::SlideFilter
114
47
  end
48
+
@@ -10,16 +10,6 @@ module Slideshow
10
10
 
11
11
  include TextUtils::Filter # include comments_percent_style, skip_end_directive, etc. filters
12
12
 
13
- alias_method :old_comments_percent_style, :comments_percent_style
14
-
15
- def comments_percent_style( content )
16
-
17
- # skip filter for pandoc
18
- # - pandoc uses % for its own markdown extension
19
- return content if @markup_type == :markdown && Markdown.lib == 'pandoc-ruby'
20
-
21
- old_comments_percent_style( content )
22
- end
23
13
 
24
14
  def directives_bang_style_to_percent_style( content )
25
15
 
@@ -41,14 +31,7 @@ def directives_bang_style_to_percent_style( content )
41
31
  end
42
32
 
43
33
  def directives_percent_style( content )
44
-
45
- # skip filter for pandoc
46
- # - pandoc uses % for its own markdown extension
47
- # - don't process % pass it along/through to pandoc
48
-
49
- return content if @markup_type == :markdown && Markdown.lib == 'pandoc-ruby'
50
-
51
-
34
+
52
35
  directive_unparsed = 0
53
36
  directive_expr = 0
54
37
  directive_block_beg = 0
@@ -113,6 +113,7 @@ def background( *args )
113
113
  "<!-- _S9STYLE_ #{clazz} -->\n"
114
114
  end
115
115
 
116
+
116
117
  def color( *args )
117
118
 
118
119
  # make everyting optional; use it like:
@@ -11,7 +11,7 @@ def step( opts={}, &blk )
11
11
  text = capture_erb(&blk)
12
12
 
13
13
  before = "<!-- begin step #{opts.inspect} -->\n"
14
- before << "<div class='step' markdown='block'>\n"
14
+ before << "<div class='step' markdown='1'>\n"
15
15
 
16
16
  after = "</div>\n"
17
17
  after << "<!-- end step -->\n"
@@ -39,6 +39,9 @@ module ManifestHelper
39
39
  builtin_patterns = []
40
40
  builtin_patterns << "#{SlideshowTemplates.root}/templates/*.txt" if defined?( SlideshowTemplates )
41
41
 
42
+ test_patterns = []
43
+ test_patterns << "#{Slideshow.root}/test/templates/*/*.txt"
44
+
42
45
  config_patterns = [
43
46
  "#{config.config_dir}/templates/*.txt",
44
47
  "#{config.config_dir}/templates/*/*.txt"
@@ -51,6 +54,7 @@ module ManifestHelper
51
54
 
52
55
  patterns = []
53
56
  patterns += current_patterns
57
+ patterns += test_patterns if config.test? ## (auto-)add test templates in test mode
54
58
  patterns += config_patterns
55
59
  patterns += builtin_patterns
56
60
  end
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+
3
+ module Slideshow
4
+ module MarkdownEngines
5
+
6
+ ## note: for now keep it simple use just kramdown
7
+
8
+ def markdown_to_html( content )
9
+ ## note: set to gfm (github-flavored markdown) by default
10
+ ## see http://kramdown.gettalong.org/parser/gfm.html
11
+ kramdown_config = {
12
+ 'input' => 'GFM',
13
+ 'hard_wrap' => false
14
+ }
15
+
16
+ puts " Converting markdown-text (#{content.length} bytes) to HTML using kramdown library with #{kramdown_config.inspect}..."
17
+
18
+ Kramdown::Document.new( content, kramdown_config ).to_html
19
+ end
20
+
21
+ end # module MarkdownEngines
22
+ end # module Slideshow
23
+
24
+ class Slideshow::Gen
25
+ include Slideshow::MarkdownEngines
26
+ end
27
+
@@ -19,12 +19,9 @@ require 'fileutils'
19
19
  require 'active_support/all'
20
20
 
21
21
  require 'props' # manage settings/env
22
- require 'logutils' # logger utils library
23
-
24
- require 'markdown' # default markdown library
22
+ require 'logutils' # logger utils library
25
23
  require 'fetcher' # fetch docs and blogs via http, https, etc.
26
24
 
27
-
28
25
  class Env
29
26
  def self.slideshowopt
30
27
  ENV[ 'SLIDESHOWOPT' ]
@@ -34,14 +31,20 @@ end # class Env
34
31
  require 'textutils' # text filters and helpers
35
32
  require 'pakman' # template pack manager
36
33
 
34
+ require 'kramdown' # default markdown library
35
+
37
36
 
38
37
  # our own code
39
38
  require 'slideshow/version' # note: let version always go first
40
- require 'slideshow/headers'
39
+ require 'slideshow/opts'
41
40
  require 'slideshow/config'
41
+ require 'slideshow/headers'
42
42
  require 'slideshow/manifest_helpers'
43
43
  require 'slideshow/plugin_helpers'
44
- require 'slideshow/slide'
44
+ require 'slideshow/models/slide'
45
+ require 'slideshow/models/deck'
46
+ require 'slideshow/markdown'
47
+ require 'slideshow/drops'
45
48
 
46
49
  require 'slideshow/commands/fetch'
47
50
  require 'slideshow/commands/gen'
@@ -50,11 +53,6 @@ require 'slideshow/commands/plugins'
50
53
  require 'slideshow/commands/quick'
51
54
 
52
55
 
53
- require 'slideshow/markup/markdown'
54
- require 'slideshow/markup/mediawiki'
55
- require 'slideshow/markup/textile'
56
-
57
-
58
56
  # load built-in (required) helpers/plugins
59
57
  require 'slideshow/helpers/text_helper'
60
58
  require 'slideshow/helpers/capture_helper'
@@ -62,7 +60,6 @@ require 'slideshow/helpers/step_helper'
62
60
  require 'slideshow/helpers/background_helper'
63
61
  require 'slideshow/helpers/source_helper'
64
62
  require 'slideshow/helpers/directive_helper'
65
- require 'slideshow/helpers/markdown_helper'
66
63
 
67
64
  require 'slideshow/helpers/syntax/sh_helper'
68
65
 
@@ -82,7 +79,6 @@ require 'slideshow/filters/slide_filter'
82
79
  BUILTIN_OPT_HELPERS = [
83
80
  'slideshow/helpers/syntax/uv_helper.rb',
84
81
  'slideshow/helpers/syntax/coderay_helper.rb',
85
- 'slideshow/markup/rest.rb',
86
82
  ]
87
83
 
88
84
  BUILTIN_OPT_HELPERS.each do |helper|