/
slideshow.rb
128 lines (100 loc) · 3.11 KB
/
slideshow.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
$KCODE = 'utf'
###
# NB: for local testing run like:
#
# 1.8.x: ruby -Ilib -rrubygems lib/slideshow.rb
# 1.9.x: ruby -Ilib lib/slideshow.rb
# core and stlibs
require 'optparse'
require 'erb'
require 'logger'
require 'fileutils'
require 'pp'
require 'uri'
require 'net/http'
require 'net/https'
require 'ostruct'
require 'date'
require 'yaml'
require 'cgi'
# required gems
require 'redcloth' # default textile library
require 'markdown' # default markdown library
require 'fetcher' # fetch docs and blogs via http, https, etc.
require 'props' # manage settings/env
class Env
def self.slideshowopt
ENV[ 'SLIDESHOWOPT' ]
end
end # class Env
require 'textutils' # text filters and helpers
require 'pakman' # template pack manager
# our own code
require 'slideshow/version'
require 'slideshow/headers'
require 'slideshow/config'
require 'slideshow/manifest_helpers'
require 'slideshow/plugin_helpers'
require 'slideshow/slide'
require 'slideshow/cli/opts'
require 'slideshow/cli/runner'
require 'slideshow/cli/commands/fetch'
require 'slideshow/cli/commands/gen'
require 'slideshow/cli/commands/gen_templates'
require 'slideshow/cli/commands/list'
require 'slideshow/cli/commands/plugins'
require 'slideshow/cli/commands/quick'
require 'slideshow/markup/textile'
require 'slideshow/markup/markdown'
# load built-in (required) helpers/plugins
require 'slideshow/helpers/text_helper'
require 'slideshow/helpers/capture_helper'
require 'slideshow/helpers/analytics_helper'
require 'slideshow/helpers/table_helper'
require 'slideshow/helpers/step_helper'
require 'slideshow/helpers/background_helper'
require 'slideshow/helpers/source_helper'
require 'slideshow/helpers/directive_helper'
require 'slideshow/helpers/markdown_helper'
require 'slideshow/helpers/syntax/sh_helper'
# load built-in filters
require 'slideshow/filters/headers_filter'
require 'slideshow/filters/text_filter'
require 'slideshow/filters/debug_filter'
require 'slideshow/filters/slide_filter'
module Slideshow
def self.root
"#{File.expand_path( File.dirname(File.dirname(__FILE__)) )}"
end
# version string for generator meta tag (includes ruby version)
def self.generator
"Slide Show (S9) #{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
end
def self.main
# allow env variable to set RUBYOPT-style default command line options
# e.g. -o slides -t <your_template_manifest_here>
slideshowopt = Env.slideshowopt
args = []
args += slideshowopt.split if slideshowopt
args += ARGV.dup
Runner.new.run(args)
end
end # module Slideshow
# load built-in (optional) helpers/plugins/engines
# If a helper fails to load, simply ingnore it
# If you want to use it install missing required gems e.g.:
# gem install coderay
# gem install ultraviolet etc.
BUILTIN_OPT_HELPERS = [
'slideshow/helpers/syntax/uv_helper.rb',
'slideshow/helpers/syntax/coderay_helper.rb',
'slideshow/markup/rest.rb',
]
BUILTIN_OPT_HELPERS.each do |helper|
begin
require(helper)
rescue Exception => e
;
end
end
Slideshow.main if __FILE__ == $0