slideshow 1.1.0.beta3 → 1.1.0.beta4

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.
data/Rakefile CHANGED
@@ -16,7 +16,7 @@ Hoe.spec 'slideshow' do
16
16
  ['markdown','>= 0.3.0'],
17
17
  ['textutils','>= 0.2.0'],
18
18
  ['fetcher','>= 0.1.0'],
19
- ['props','>= 0.1.0']
19
+ ['props','>= 0.2.0']
20
20
  ]
21
21
 
22
22
  self.remote_rdoc_dir = 'doc'
@@ -1,38 +1,8 @@
1
- ### builtin configuration for arrays
2
- #
3
- # access or overwrite using nested builtin context e.g.
4
- # builtin:
5
- # textile:
6
- # libs: [ whatever ]
1
+ ####################
2
+ ### builtin configuration (not configurable by user now)
7
3
 
8
4
 
9
5
  helper:
10
6
  unparsed: [ slide, style ]
11
7
  renames: [ include, class ]
12
8
  exprs: [ class, clear ]
13
-
14
- # text filters
15
- filters:
16
- - skip-end-directive
17
- - directives_bang_style_to_percent_style
18
- - directives_percent_style
19
- - comments-percent-style
20
- - leading-headers
21
- - erb-django-style
22
- - erb-rename-helper-hack
23
- - dump_content_to_file_debug_text_erb
24
- - erb
25
- - code-block-curly-style
26
- - dump_content_to_file_debug_text
27
-
28
-
29
- # markup (textile, markdown, rest) config
30
-
31
- textile:
32
- extnames: [ .textile, .t ]
33
-
34
- rest:
35
- extnames: [ .rst, .rest ]
36
-
37
- markdown:
38
- extnames: [ .markdown, .m, .mark, .mkdn, .md, .txt, .text ]
data/config/slideshow.yml CHANGED
@@ -1,22 +1,25 @@
1
- # built-in slideshow configuration
1
+ #########################################
2
+ # slideshow configuration defaults
2
3
  #
3
- # override settings in:
4
- # ~/.slideshow/slideshow.yml
5
- # or
6
- # ./slideshow.yml or ./.slideshow.yml
4
+ # override settings in:
5
+ # ~/slideshow.yml in home folder
6
+ # or
7
+ # ./slideshow.yml in working folder
7
8
 
8
- #lets you define default/fallback headers
9
+
10
+ ######################
11
+ # lets you define default/fallback headers
9
12
 
10
13
  headers:
11
- generator: <%= Slideshow.generator %>
14
+ generator: "<%= Slideshow.generator %>"
12
15
  author: Your Name Here
13
16
  email: Your Email Here
14
17
  company: Your Company Here
15
18
  title: Your Title Here
16
19
  subtitle: Your Subtitle Here
17
20
  footer: Your Footer Here
18
- subfooter: Your Subfooter Here
19
- date: <%= Date.today %>
21
+ subfooter: Your Subfooter Here
22
+ date: "<%= Date.today %>"
20
23
 
21
24
  # todo: use nested config?? eg.
22
25
  # gradient:
@@ -36,39 +39,54 @@ headers:
36
39
 
37
40
 
38
41
 
39
- # shortcuts for fetching template packs
40
- # map shortcut to URI
41
-
42
- fetch:
43
- s6syntax: https://github.com/geraldb/slideshow-s6-syntax-highlighter/raw/master/s6syntax.txt
44
- s6blank: https://github.com/geraldb/slideshow-s6-blank/raw/master/s6blank.txt
45
- s5blank: https://github.com/geraldb/slideshow-s5-blank/raw/master/s5blank.txt
46
- s5themes: https://github.com/geraldb/slideshow-s5-themes/raw/master/s5themes.txt
47
- fullerscreen: https://github.com/geraldb/slideshow-fullerscreen/raw/master/fullerscreen.txt
48
- slidy: https://github.com/geraldb/slideshow-slidy/raw/master/slidy.txt
49
- g5: https://github.com/geraldb/slideshow-google-html5-slides/raw/master/g5.txt
50
- slippy: https://github.com/geraldb/slideshow-slippy/raw/master/slippy.txt
51
- csss: https://github.com/geraldb/slideshow-csss/raw/master/csss.txt
52
- deck.js: https://github.com/geraldb/slideshow-deck.js/raw/master/deck.js.txt
53
- impress.js: https://github.com/geraldb/slideshow-impress.js/raw/master/impress.js.txt
54
- shower: https://github.com/geraldb/slideshow-shower/raw/master/shower.txt
55
42
 
56
43
  # your google analytics code
57
44
  analytics:
58
- google: UA-XXX
59
-
45
+ google: UA-XXX
60
46
 
61
- helper:
62
- renames: []
63
- exprs: []
64
47
 
65
- ### markup (textile, markdown) config
48
+ ########################################################3
49
+ ### text/markup (textile, markdown) processing config
66
50
 
67
51
  # filters to run before markup processing
68
- filters: []
69
-
52
+ filters:
53
+ - skip-end-directive
54
+ - directives_bang_style_to_percent_style
55
+ - directives_percent_style
56
+ - comments-percent-style
57
+ - leading-headers
58
+ - erb-django-style
59
+ - erb-rename-helper-hack
60
+ - dump_content_to_file_debug_text_erb
61
+ - erb
62
+ - code-block-curly-style
63
+ - dump_content_to_file_debug_text
64
+
65
+
66
+ # markup (textile, markdown, rest) config
67
+
70
68
  textile:
71
- extnames: []
72
-
73
- markdown:
74
- extnames: []
69
+ extnames: [ .textile, .t ]
70
+
71
+ rest:
72
+ extnames: [ .rst, .rest ]
73
+
74
+ # NB: markdown now configured in markdown.yml (using markdown gem)
75
+
76
+
77
+ #############################
78
+ # shortcuts for fetching template packs
79
+ # map shortcut to URI
80
+ fetch:
81
+ s6syntax: https://github.com/geraldb/slideshow-s6-syntax-highlighter/raw/master/s6syntax.txt
82
+ s6blank: https://github.com/geraldb/slideshow-s6-blank/raw/master/s6blank.txt
83
+ s5blank: https://github.com/geraldb/slideshow-s5-blank/raw/master/s5blank.txt
84
+ s5themes: https://github.com/geraldb/slideshow-s5-themes/raw/master/s5themes.txt
85
+ fullerscreen: https://github.com/geraldb/slideshow-fullerscreen/raw/master/fullerscreen.txt
86
+ slidy: https://github.com/geraldb/slideshow-slidy/raw/master/slidy.txt
87
+ g5: https://github.com/geraldb/slideshow-google-html5-slides/raw/master/g5.txt
88
+ slippy: https://github.com/geraldb/slideshow-slippy/raw/master/slippy.txt
89
+ csss: https://github.com/geraldb/slideshow-csss/raw/master/csss.txt
90
+ deck.js: https://github.com/geraldb/slideshow-deck.js/raw/master/deck.js.txt
91
+ impress.js: https://github.com/geraldb/slideshow-impress.js/raw/master/impress.js.txt
92
+ shower: https://github.com/geraldb/slideshow-shower/raw/master/shower.txt
data/lib/slideshow.rb CHANGED
@@ -70,7 +70,7 @@ require 'slideshow/filters/slide_filter'
70
70
 
71
71
  module Slideshow
72
72
 
73
- VERSION = '1.1.0.beta3'
73
+ VERSION = '1.1.0.beta4'
74
74
 
75
75
  def self.root
76
76
  "#{File.expand_path( File.dirname(File.dirname(__FILE__)) )}"
@@ -3,69 +3,72 @@ module Slideshow
3
3
  class Config
4
4
 
5
5
  def initialize
6
- @hash = {}
6
+ # do nothing for now
7
7
  end
8
8
 
9
- def []( key )
10
- value = @hash[ normalize_key( key ) ]
11
- if value.nil?
12
- puts "** Warning: config key '#{key}' undefined (returning nil)"
13
- end
9
+ def load
14
10
 
15
- value
16
- end
17
-
18
- def load
19
11
  # load builtin config file @ <gem>/config/slideshow.yml
20
- config_file = "#{Slideshow.root}/config/slideshow.yml"
21
- config_builtin_file = "#{Slideshow.root}/config/slideshow.builtin.yml"
12
+ #
13
+ # NB: builtin use a different hierachy (not linked to default/home/user/cli props)
14
+ # for now builtin has no erb processing
15
+ # user cannot override builtin settings (only defaults see below)
16
+ props_builtin_file = File.join( Slideshow.root, 'config', 'slideshow.builtin.yml' )
17
+ @props_builtin = Props.load_file( props_builtin_file )
22
18
 
23
- # run through erb
24
- config_txt = File.read( config_file )
25
- config_txt = ERB.new( config_txt ).result( binding() )
26
-
27
- @hash = YAML.load( config_txt )
28
-
29
- # for now builtin has no erb processing; add builtin hash to main hash
30
- @hash[ 'builtin' ] = YAML.load_file( config_builtin_file )
31
-
32
- # todo/fix: merge config files
33
- # check more locations
34
19
 
35
- # check for user settings in working folder (check for slideshow.yml)
20
+ props_default_file = File.join( Slideshow.root, 'config', 'slideshow.yml' )
21
+ @props = @props_default = Props.load_file_with_erb( props_default_file, binding() )
22
+
23
+ # check for user settings (slideshow.yml) in home folder
24
+
25
+ props_home_file = File.join( Env.home, 'slideshow.yml' )
26
+ if File.exists?( props_home_file )
27
+ puts "Loading settings from '#{props_home_file}'..."
28
+ @props = @props_home = Props.load_file_with_erb( props_home_file, binding(), @props )
29
+ end
30
+
31
+ # check for user settings (slideshow.yml) in working folder
36
32
 
37
- config_user_file = "./slideshow.yml"
38
- if File.exists?( config_user_file )
39
- puts "Loading settings from '#{config_user_file}'..."
40
- @hash[ 'user' ] = YAML.load_file( config_user_file )
41
- end
42
-
33
+ props_work_file = File.join( '.', 'slideshow.yml' )
34
+ if File.exists?( props_work_file )
35
+ puts "Loading settings from '#{props_work_file}'..."
36
+ @props = @props_work = Props.load_file_with_erb( props_work_file, binding(), @props )
37
+ end
43
38
  end
44
39
 
40
+
41
+ def header( key )
42
+ @props.fetch_from_section( 'headers', normalize_key( key ), nil )
43
+ end
44
+
45
45
  def markdown_post_processing?( lib )
46
- @hash.fetch( 'user', {} ).fetch( lib, {} ).fetch( 'post-processing', true )
46
+ ## todo: normalize key/lib???
47
+ @props.fetch_from_section( lib, 'post-processing', true )
47
48
  end
48
49
 
49
50
  def known_rest_extnames
50
- @hash[ 'builtin' ][ 'rest' ][ 'extnames' ]
51
+ @props.fetch_from_section( 'rest', 'extnames', [] )
51
52
  end
52
53
 
53
54
  def known_textile_extnames
54
- # returns an array of known file extensions e.g.
55
- # [ '.textile', '.t' ]
56
- #
57
- # using nested key
58
- # textile:
59
- # extnames: [ .textile, .t ]
60
-
61
- @hash[ 'textile' ][ 'extnames' ] + @hash[ 'builtin' ][ 'textile' ][ 'extnames' ]
55
+ @props.fetch_from_section( 'textile', 'extnames', [] )
62
56
  end
63
57
 
64
58
  def known_markdown_extnames
65
- @hash[ 'markdown' ][ 'extnames' ] + @hash[ 'builtin' ][ 'markdown' ][ 'extnames' ]
59
+ ## delegate config to Markdown gem for now
60
+ ## todo/fix: how to pass on setting to Markdown gem??
61
+ Markdown.extnames
66
62
  end
67
63
 
68
64
  def known_extnames
65
+ # returns an array of known file extensions e.g.
66
+ # [ '.textile', '.t' ]
67
+ #
68
+ # using nested key
69
+ # textile:
70
+ # extnames: [ .textile, .t ]
71
+ #
69
72
  # ruby check: is it better self. ?? or more confusing
70
73
  # possible conflict only with write access (e.g. prop=)
71
74
 
@@ -73,32 +76,36 @@ class Config
73
76
  end
74
77
 
75
78
  def text_filters
76
- @hash[ 'builtin' ][ 'filters' ] + @hash[ 'filters' ]
79
+ @props.fetch( 'filters', [] )
80
+ end
81
+
82
+ def google_analytics_code
83
+ @props.fetch_from_section( 'analytics', 'google', nil )
77
84
  end
78
85
 
86
+ def map_fetch_shortcut( key )
87
+ ## todo: normalize key???
88
+ @props.fetch_from_section( 'fetch', key, nil )
89
+ end
90
+
79
91
  def helper_renames
80
- @hash[ 'builtin' ][ 'helper' ][ 'renames' ] + @hash[ 'helper' ][ 'renames' ]
92
+ ## NB: for now user cannot override/extent renames
93
+ @props_builtin['helper']['renames']
81
94
  end
82
95
 
83
96
  def helper_unparsed
97
+ ## NB: for now user cannot override/extent unparsed helpers
84
98
  # use unparsed params (passed along a single string)
85
- @hash[ 'builtin' ][ 'helper' ][ 'unparsed' ]
99
+ @props_builtin['helper']['unparsed']
86
100
  end
87
101
 
88
102
  def helper_exprs
103
+ ## NB: for now user cannot override/extent helper exprs
89
104
  # allow expression as directives (no need for %end block)
90
105
  # by default directives are assumed statements (e.g. %mydir %end)
91
- @hash[ 'builtin' ][ 'helper' ][ 'exprs' ] + @hash[ 'helper' ][ 'exprs' ]
106
+ @props_builtin['helper']['exprs']
92
107
  end
93
108
 
94
- def google_analytics_code
95
- @hash[ 'analytics' ][ 'google' ]
96
- end
97
-
98
- def map_fetch_shortcut( key )
99
- @hash[ 'fetch' ][ key ]
100
- end
101
-
102
109
  private
103
110
 
104
111
  def normalize_key( key )
data/lib/slideshow/gen.rb CHANGED
@@ -5,8 +5,9 @@ class Gen
5
5
  def initialize
6
6
  @logger = Logger.new(STDOUT)
7
7
  @logger.level = Logger::INFO
8
- @opts = Opts.new
8
+
9
9
  @config = Config.new
10
+ @opts = Opts.new( @config )
10
11
  end
11
12
 
12
13
  attr_reader :logger, :opts, :config
@@ -14,6 +15,7 @@ class Gen
14
15
 
15
16
  def headers
16
17
  # give access to helpers to opts with a different name
18
+ ### fix/todo: use a headers wrapper?? delegation to opts.header(key) lookup??
17
19
  @opts
18
20
  end
19
21
 
@@ -5,8 +5,9 @@ module Slideshow
5
5
 
6
6
  class Opts
7
7
 
8
- def initialize
9
- @hash = {}
8
+ def initialize( config )
9
+ @hash = {}
10
+ @config = config
10
11
  end
11
12
 
12
13
  def put( key, value )
@@ -35,18 +36,17 @@ class Opts
35
36
  def has_gradient?
36
37
  # has user defined gradient (using headers)? (default values do NOT count)
37
38
  @hash.has_key?( :gradient_theme ) || @hash.has_key?( :gradient_colors )
38
- end
39
-
40
-
39
+ end
41
40
 
42
41
  def []( key )
43
42
  value = get( key )
43
+ value = @config.header( key ) if value.nil? # try lookup in config properties next
44
+
44
45
  if value.nil?
45
46
  puts "** Warning: header '#{key}' undefined"
46
- "- #{key} not found -"
47
- else
48
- value
47
+ value = "- #{key} not found -"
49
48
  end
49
+ value
50
50
  end
51
51
 
52
52
  def generate?
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slideshow
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1059591029
4
+ hash: -829632114
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
9
  - 0
10
10
  - beta
11
- - 3
12
- version: 1.1.0.beta3
11
+ - 4
12
+ version: 1.1.0.beta4
13
13
  platform: ruby
14
14
  authors:
15
15
  - Gerald Bauer
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2012-06-09 00:00:00 Z
20
+ date: 2012-06-10 00:00:00 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: RedCloth
@@ -91,12 +91,12 @@ dependencies:
91
91
  requirements:
92
92
  - - ">="
93
93
  - !ruby/object:Gem::Version
94
- hash: 27
94
+ hash: 23
95
95
  segments:
96
96
  - 0
97
- - 1
97
+ - 2
98
98
  - 0
99
- version: 0.1.0
99
+ version: 0.2.0
100
100
  type: :runtime
101
101
  version_requirements: *id005
102
102
  - !ruby/object:Gem::Dependency