Class: Slideshow::Config

Inherits:
Object
  • Object
show all
Includes:
LogUtils::Logging
Defined in:
lib/slideshow/config.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts) ⇒ Config

Returns a new instance of Config.



7
8
9
# File 'lib/slideshow/config.rb', line 7

def initialize( opts )
  @opts   = opts
end

Instance Attribute Details

#optsObject (readonly)

Returns the value of attribute opts.



11
12
13
# File 'lib/slideshow/config.rb', line 11

def opts
  @opts
end

Instance Method Details

#cache_dirObject

todo/fix: fix references after this move to here, that is, Config class

  • used in syntax/uv_helper (use config.cache_dir to access?)



28
29
30
# File 'lib/slideshow/config.rb', line 28

def cache_dir
  File.join( Env.home, '.slideshow' )
end

#config_dirObject



32
33
34
35
36
37
38
39
40
41
# File 'lib/slideshow/config.rb', line 32

def config_dir
  unless @config_dir  # first time? calculate config_dir value to "cache"
    @config_dir = opts.config_path
  
    # make sure path exists
    FileUtils.makedirs( @config_dir ) unless File.directory? @config_dir
  end
  
  @config_dir
end

#default_fetch_shortcutsObject



90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/slideshow/config.rb', line 90

def default_fetch_shortcuts
  fetch_shortcuts = @props_default.fetch( 'fetch', {} )
  
  fetch_shortcuts = fetch_shortcuts.clone
  fetch_shortcuts.delete( 'fullerscreen' )  # obsolete (do not promote any longer)
  fetch_shortcuts.delete( 'slippy' )  # needs update/maintainer anyone?
  fetch_shortcuts.delete( 'shower' )  # needs update/maintainer anyone?

  fetch_shortcuts.delete( 's6syntax' )  # better wait for next update
  fetch_shortcuts.delete( 's6blank' )  # better wait for next update

  fetch_shortcuts
end

#dumpObject

dump settings for debugging



75
76
77
78
79
80
81
82
83
# File 'lib/slideshow/config.rb', line 75

def dump  # dump settings for debugging
  puts "Slideshow settings:"
  @props_builtin.dump  if @props_builtin
  @props_default.dump  if @props_default
  @props_home.dump     if @props_home
  @props_work.dump     if @props_work
  
  ## todo: add more config settings?
end

#google_analytics_codeObject



141
142
143
# File 'lib/slideshow/config.rb', line 141

def google_analytics_code
  @props.fetch_from_section( 'analytics', 'google', nil )
end

#header(key) ⇒ Object



86
87
88
# File 'lib/slideshow/config.rb', line 86

def header( key )
  @props.fetch_from_section( 'headers', normalize_key( key ), nil )
end

#header_levelObject



13
14
15
# File 'lib/slideshow/config.rb', line 13

def header_level
  @opts.header_level
end

#helper_exprsObject



166
167
168
169
170
171
# File 'lib/slideshow/config.rb', line 166

def helper_exprs
  ## NB: for now user cannot override/extent helper exprs
  # allow expression as directives (no need for %end block)
  # by default directives are assumed statements (e.g. %mydir  %end)
  @props_builtin['helper']['exprs']
end

#helper_renamesObject



155
156
157
158
# File 'lib/slideshow/config.rb', line 155

def helper_renames
  ## NB: for now user cannot override/extent renames
  @props_builtin['helper']['renames']
end

#helper_unparsedObject



160
161
162
163
164
# File 'lib/slideshow/config.rb', line 160

def helper_unparsed
  ## NB: for now user cannot override/extent unparsed helpers
  # use unparsed params (passed along a single string)
  @props_builtin['helper']['unparsed']
end

#known_extnamesObject



123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/slideshow/config.rb', line 123

def known_extnames
  # returns an array of known file extensions e.g.
  # [ '.textile', '.t' ]
  #
  # using nested key
  # textile:
  #   extnames:  [ .textile, .t ]
  #
  # ruby check: is it better self. ?? or more confusing
  #  possible conflict only with write access (e.g. prop=) 
  
  known_textile_extnames + known_markdown_extnames + known_rest_extnames
end

#known_markdown_extnamesObject



117
118
119
120
121
# File 'lib/slideshow/config.rb', line 117

def known_markdown_extnames
  ## delegate config to Markdown gem for now
  ## todo/fix: how to pass on setting to Markdown gem??
  Markdown.extnames
end

#known_rest_extnamesObject



109
110
111
# File 'lib/slideshow/config.rb', line 109

def known_rest_extnames
  @props.fetch_from_section( 'rest', 'extnames', [] )
end

#known_textile_extnamesObject



113
114
115
# File 'lib/slideshow/config.rb', line 113

def known_textile_extnames
  @props.fetch_from_section( 'textile', 'extnames', [] )
end

#loadObject



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/slideshow/config.rb', line 44

def load
  
  # load builtin config file @  <gem>/config/slideshow.yml
  #
  # NB: builtin use a different hierachy (not linked to default/home/user/cli props)
  #     for now builtin has no erb processing
  #     user cannot override builtin settings (only defaults see below)
  props_builtin_file  = File.join( Slideshow.root, 'config', 'slideshow.builtin.yml' )
  @props_builtin = Props.load_file( props_builtin_file )


  props_default_file  = File.join( Slideshow.root, 'config', 'slideshow.yml' )
  @props = @props_default = Props.load_file_with_erb( props_default_file, binding() )

  # check for user settings (slideshow.yml) in home folder
  
  props_home_file = File.join( Env.home, 'slideshow.yml' )
  if File.exists?( props_home_file )
    puts "Loading settings from '#{props_home_file}'..."
    @props = @props_home = Props.load_file_with_erb( props_home_file, binding(), @props )
  end
    
  # check for user settings (slideshow.yml) in working folder
  
  props_work_file = File.join( '.', 'slideshow.yml' )
  if File.exists?( props_work_file )
    puts "Loading settings from '#{props_work_file}'..."
    @props = @props_work = Props.load_file_with_erb( props_work_file, binding(), @props )
  end
end

#map_fetch_shortcut(key) ⇒ Object



145
146
147
148
# File 'lib/slideshow/config.rb', line 145

def map_fetch_shortcut( key )
  ## todo: normalize key???
  @props.fetch_from_section( 'fetch', key, nil )
end

#map_quick_shortcut(key) ⇒ Object



150
151
152
153
# File 'lib/slideshow/config.rb', line 150

def map_quick_shortcut( key )
  ## todo: normalize key???
  @props.fetch_from_section( 'quick', key, nil )
end

#markdown_post_processing?(lib) ⇒ Boolean

Returns:

  • (Boolean)


104
105
106
107
# File 'lib/slideshow/config.rb', line 104

def markdown_post_processing?( lib )
  ## todo: normalize key/lib???
  @props.fetch_from_section( lib, 'post-processing', true )
end

#slide?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/slideshow/config.rb', line 17

def slide?
  @opts.slide?
end

#takahashi?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/slideshow/config.rb', line 21

def takahashi?
  @opts.takahashi?
end

#text_filtersObject



137
138
139
# File 'lib/slideshow/config.rb', line 137

def text_filters
  @props.fetch( 'filters', [] )
end