slideshow 1.1.0.beta7 → 1.1.0.beta8
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +5 -2
- data/lib/slideshow.rb +7 -3
- data/lib/slideshow/{fetch.rb → commands/fetch.rb} +23 -12
- data/lib/slideshow/{gen.rb → commands/gen.rb} +334 -507
- data/lib/slideshow/commands/gen_templates.rb +66 -0
- data/lib/slideshow/commands/list.rb +32 -0
- data/lib/slideshow/config.rb +31 -2
- data/lib/slideshow/helpers/syntax/uv_helper.rb +4 -4
- data/lib/slideshow/manifest.rb +3 -7
- data/lib/slideshow/runner.rb +130 -0
- data/lib/slideshow/version.rb +1 -1
- metadata +9 -6
@@ -0,0 +1,66 @@
|
|
1
|
+
module Slideshow
|
2
|
+
|
3
|
+
class GenTemplates
|
4
|
+
|
5
|
+
include Manifest # gets us methods like installed_template_manifests, etc.
|
6
|
+
|
7
|
+
### fix: remove opts, use config (wrapped!!)
|
8
|
+
|
9
|
+
def initialize( logger, opts, config )
|
10
|
+
@logger = logger
|
11
|
+
@opts = opts
|
12
|
+
@config = config
|
13
|
+
end
|
14
|
+
|
15
|
+
attr_reader :logger, :opts, :config
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
def with_output_path( dest, output_path )
|
20
|
+
dest_full = File.expand_path( dest, output_path )
|
21
|
+
logger.debug "dest_full=#{dest_full}"
|
22
|
+
|
23
|
+
# make sure dest path exists
|
24
|
+
dest_path = File.dirname( dest_full )
|
25
|
+
logger.debug "dest_path=#{dest_path}"
|
26
|
+
FileUtils.makedirs( dest_path ) unless File.directory? dest_path
|
27
|
+
dest_full
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def run
|
32
|
+
manifest_name = opts.manifest
|
33
|
+
logger.debug "manifest=#{manifest_name}"
|
34
|
+
|
35
|
+
manifests = installed_generator_manifests
|
36
|
+
|
37
|
+
# check for builtin generator manifests
|
38
|
+
matches = manifests.select { |m| m[0] == manifest_name+".gen" }
|
39
|
+
|
40
|
+
if matches.empty?
|
41
|
+
puts "*** error: unknown template manifest '#{manifest_name}'"
|
42
|
+
# todo: list installed manifests
|
43
|
+
exit 2
|
44
|
+
end
|
45
|
+
|
46
|
+
manifest = load_manifest( matches[0][1] )
|
47
|
+
|
48
|
+
# expand output path in current dir and make sure output path exists
|
49
|
+
outpath = File.expand_path( opts.output_path )
|
50
|
+
logger.debug "outpath=#{outpath}"
|
51
|
+
FileUtils.makedirs( outpath ) unless File.directory? outpath
|
52
|
+
|
53
|
+
manifest.each do |entry|
|
54
|
+
dest = entry[0]
|
55
|
+
source = entry[1]
|
56
|
+
|
57
|
+
puts "Copying to #{dest} from #{source}..."
|
58
|
+
FileUtils.copy( source, with_output_path( dest, outpath ) )
|
59
|
+
end
|
60
|
+
|
61
|
+
puts "Done."
|
62
|
+
end
|
63
|
+
|
64
|
+
end # class GenTemplates
|
65
|
+
|
66
|
+
end # class Slideshow
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Slideshow
|
2
|
+
|
3
|
+
class List
|
4
|
+
|
5
|
+
include Manifest # gets us methods like installed_template_manifests, etc.
|
6
|
+
|
7
|
+
### fix: remove opts, use config (wrapped!!)
|
8
|
+
|
9
|
+
def initialize( logger, opts, config )
|
10
|
+
@logger = logger
|
11
|
+
@opts = opts
|
12
|
+
@config = config
|
13
|
+
end
|
14
|
+
|
15
|
+
attr_reader :logger, :opts, :config
|
16
|
+
|
17
|
+
|
18
|
+
def run
|
19
|
+
manifests = installed_template_manifests
|
20
|
+
|
21
|
+
puts ''
|
22
|
+
puts 'Installed templates include:'
|
23
|
+
|
24
|
+
manifests.each do |manifest|
|
25
|
+
puts " #{manifest[0]} (#{manifest[1]})"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
end # class List
|
31
|
+
|
32
|
+
end # class Slideshow
|
data/lib/slideshow/config.rb
CHANGED
@@ -2,10 +2,39 @@ module Slideshow
|
|
2
2
|
|
3
3
|
class Config
|
4
4
|
|
5
|
-
def initialize
|
6
|
-
|
5
|
+
def initialize( logger, opts )
|
6
|
+
@logger = logger
|
7
|
+
@opts = opts
|
7
8
|
end
|
8
9
|
|
10
|
+
attr_reader :logger, :opts
|
11
|
+
|
12
|
+
|
13
|
+
# todo/fix: fix references after this move to here, that is, Config class
|
14
|
+
# - used in syntax/uv_helper (use config.cache_dir to access?)
|
15
|
+
|
16
|
+
def cache_dir
|
17
|
+
File.join( Env.home, '.slideshow' )
|
18
|
+
end
|
19
|
+
|
20
|
+
def config_dir
|
21
|
+
unless @config_dir # first time? calculate config_dir value to "cache"
|
22
|
+
|
23
|
+
if opts.config_path
|
24
|
+
@config_dir = opts.config_path
|
25
|
+
else
|
26
|
+
@config_dir = cache_dir
|
27
|
+
end
|
28
|
+
|
29
|
+
# make sure path exists
|
30
|
+
FileUtils.makedirs( @config_dir ) unless File.directory? @config_dir
|
31
|
+
end
|
32
|
+
|
33
|
+
@config_dir
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
|
9
38
|
def load
|
10
39
|
|
11
40
|
# load builtin config file @ <gem>/config/slideshow.yml
|
@@ -24,10 +24,10 @@ def uv_worker( code, opts )
|
|
24
24
|
uv_first_time = session.fetch( :uv_first_time, true )
|
25
25
|
if uv_first_time
|
26
26
|
session[ :uv_first_time ] = false
|
27
|
-
logger.debug "cache_dir=#{cache_dir}"
|
27
|
+
logger.debug "cache_dir=#{config.cache_dir}"
|
28
28
|
|
29
|
-
FileUtils.mkdir(cache_dir) unless File.exists?(cache_dir) if cache_dir
|
30
|
-
Uv.copy_files "xhtml", cache_dir
|
29
|
+
FileUtils.mkdir(config.cache_dir) unless File.exists?(config.cache_dir) if config.cache_dir
|
30
|
+
Uv.copy_files "xhtml", config.cache_dir
|
31
31
|
end
|
32
32
|
|
33
33
|
# first time this theme gets used add it to content_for hash for templates to include
|
@@ -35,7 +35,7 @@ def uv_worker( code, opts )
|
|
35
35
|
if uv_themes[ theme ].nil?
|
36
36
|
uv_themes[ theme ] = true
|
37
37
|
|
38
|
-
theme_content = File.read( "#{cache_dir}/css/#{theme}.css" )
|
38
|
+
theme_content = File.read( "#{config.cache_dir}/css/#{theme}.css" )
|
39
39
|
|
40
40
|
theme_out = %{/* styles for ultraviolet code syntax highlighting theme '#{theme}' */\n\n}
|
41
41
|
theme_out << theme_content
|
data/lib/slideshow/manifest.rb
CHANGED
@@ -81,8 +81,8 @@ module Slideshow
|
|
81
81
|
"#{Slideshow.root}/templates/*.txt"
|
82
82
|
]
|
83
83
|
config_patterns = [
|
84
|
-
"#{config_dir}/templates/*.txt",
|
85
|
-
"#{config_dir}/templates/*/*.txt"
|
84
|
+
"#{config.config_dir}/templates/*.txt",
|
85
|
+
"#{config.config_dir}/templates/*/*.txt"
|
86
86
|
]
|
87
87
|
current_patterns = [
|
88
88
|
"templates/*.txt",
|
@@ -98,8 +98,4 @@ module Slideshow
|
|
98
98
|
end
|
99
99
|
|
100
100
|
end # module Manifest
|
101
|
-
end # module Slideshow
|
102
|
-
|
103
|
-
class Slideshow::Gen
|
104
|
-
include Slideshow::Manifest
|
105
|
-
end
|
101
|
+
end # module Slideshow
|
@@ -0,0 +1,130 @@
|
|
1
|
+
module Slideshow
|
2
|
+
|
3
|
+
class Runner
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@logger = Logger.new(STDOUT)
|
7
|
+
@logger.level = Logger::INFO
|
8
|
+
|
9
|
+
@opts = Opts.new
|
10
|
+
@config = Config.new( @logger, @opts )
|
11
|
+
@headers = Headers.new( @config )
|
12
|
+
end
|
13
|
+
|
14
|
+
attr_reader :logger, :opts, :config, :headers
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
def load_plugins
|
19
|
+
|
20
|
+
patterns = []
|
21
|
+
patterns << "#{config.config_dir}/lib/**/*.rb"
|
22
|
+
patterns << 'lib/**/*.rb' unless Slideshow.root == File.expand_path( '.' ) # don't include lib if we are in repo (don't include slideshow/lib)
|
23
|
+
|
24
|
+
patterns.each do |pattern|
|
25
|
+
pattern.gsub!( '\\', '/') # normalize path; make sure all path use / only
|
26
|
+
Dir.glob( pattern ) do |plugin|
|
27
|
+
begin
|
28
|
+
puts "Loading plugins in '#{plugin}'..."
|
29
|
+
require( plugin )
|
30
|
+
rescue Exception => e
|
31
|
+
puts "** error: failed loading plugins in '#{plugin}': #{e}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
def run( args )
|
39
|
+
|
40
|
+
opt=OptionParser.new do |cmd|
|
41
|
+
|
42
|
+
cmd.banner = "Usage: slideshow [options] name"
|
43
|
+
|
44
|
+
cmd.on( '-o', '--output PATH', 'Output Path' ) { |path| opts.output_path = path }
|
45
|
+
|
46
|
+
cmd.on( '-g', '--generate', 'Generate Slide Show Templates (Using Built-In S6 Pack)' ) { opts.generate = true }
|
47
|
+
|
48
|
+
cmd.on( "-t", "--template MANIFEST", "Template Manifest" ) do |t|
|
49
|
+
# todo: do some checks on passed in template argument
|
50
|
+
opts.manifest = t
|
51
|
+
end
|
52
|
+
|
53
|
+
# ?? opts.on( "-s", "--style STYLE", "Select Stylesheet" ) { |s| $options[:style]=s }
|
54
|
+
# ?? opts.on( "--version", "Show version" ) {}
|
55
|
+
|
56
|
+
# ?? cmd.on( '-i', '--include PATH', 'Load Path' ) { |s| opts.put( 'include', s ) }
|
57
|
+
|
58
|
+
cmd.on( '-f', '--fetch URI', 'Fetch Templates' ) do |uri|
|
59
|
+
opts.fetch_uri = uri
|
60
|
+
end
|
61
|
+
|
62
|
+
cmd.on( '-c', '--config PATH', 'Configuration Path (default is ~/.slideshow)' ) do |path|
|
63
|
+
opts.config_path = path
|
64
|
+
end
|
65
|
+
|
66
|
+
cmd.on( '-l', '--list', 'List Installed Templates' ) { opts.list = true }
|
67
|
+
|
68
|
+
# todo: find different letter for debug trace switch (use v for version?)
|
69
|
+
cmd.on( "-v", "--verbose", "Show debug trace" ) do
|
70
|
+
logger.datetime_format = "%H:%H:%S"
|
71
|
+
logger.level = Logger::DEBUG
|
72
|
+
end
|
73
|
+
|
74
|
+
usage =<<EOS
|
75
|
+
|
76
|
+
Slide Show (S9) is a free web alternative to PowerPoint or KeyNote in Ruby
|
77
|
+
|
78
|
+
#{cmd.help}
|
79
|
+
|
80
|
+
Examples:
|
81
|
+
slideshow microformats
|
82
|
+
slideshow microformats.textile # Process slides using Textile
|
83
|
+
slideshow microformats.text # Process slides using Markdown
|
84
|
+
slideshow microformats.rst # Process slides using reStructuredText
|
85
|
+
slideshow -o slides microformats # Output slideshow to slides folder
|
86
|
+
|
87
|
+
More examles:
|
88
|
+
slideshow -g # Generate slide show templates using built-in S6 pack
|
89
|
+
|
90
|
+
slideshow -l # List installed slide show templates
|
91
|
+
slideshow -f s5blank # Fetch (install) S5 blank starter template from internet
|
92
|
+
slideshow -t s5blank microformats # Use your own slide show templates (e.g. s5blank)
|
93
|
+
|
94
|
+
Further information:
|
95
|
+
http://slideshow.rubyforge.org
|
96
|
+
|
97
|
+
EOS
|
98
|
+
|
99
|
+
|
100
|
+
cmd.on_tail( "-h", "--help", "Show this message" ) do
|
101
|
+
puts usage
|
102
|
+
exit
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
opt.parse!( args )
|
107
|
+
|
108
|
+
config.load
|
109
|
+
|
110
|
+
puts Slideshow.generator
|
111
|
+
|
112
|
+
if opts.list?
|
113
|
+
List.new( logger, opts, config ).run ### todo: remove opts (merge access into config)
|
114
|
+
elsif opts.generate?
|
115
|
+
GenTemplates.new( logger, opts, config ).run ### todo: remove opts
|
116
|
+
elsif opts.fetch?
|
117
|
+
Fetch.new( logger, opts, config ).run ### todo: remove opts
|
118
|
+
else
|
119
|
+
load_plugins # check for optional plugins/extension in ./lib folder
|
120
|
+
|
121
|
+
args.each do |fn|
|
122
|
+
Gen.new( logger, opts, config, headers ).create_slideshow( fn )
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
|
128
|
+
end # class Runner
|
129
|
+
|
130
|
+
end # module Slideshow
|
data/lib/slideshow/version.rb
CHANGED
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:
|
4
|
+
hash: 62724110
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 1
|
9
9
|
- 0
|
10
10
|
- beta
|
11
|
-
-
|
12
|
-
version: 1.1.0.
|
11
|
+
- 8
|
12
|
+
version: 1.1.0.beta8
|
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-
|
20
|
+
date: 2012-06-16 00:00:00 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: RedCloth
|
@@ -153,13 +153,15 @@ files:
|
|
153
153
|
- config/slideshow.builtin.yml
|
154
154
|
- config/slideshow.yml
|
155
155
|
- lib/slideshow.rb
|
156
|
+
- lib/slideshow/commands/fetch.rb
|
157
|
+
- lib/slideshow/commands/gen.rb
|
158
|
+
- lib/slideshow/commands/gen_templates.rb
|
159
|
+
- lib/slideshow/commands/list.rb
|
156
160
|
- lib/slideshow/config.rb
|
157
|
-
- lib/slideshow/fetch.rb
|
158
161
|
- lib/slideshow/filters/debug_filter.rb
|
159
162
|
- lib/slideshow/filters/headers_filter.rb
|
160
163
|
- lib/slideshow/filters/slide_filter.rb
|
161
164
|
- lib/slideshow/filters/text_filter.rb
|
162
|
-
- lib/slideshow/gen.rb
|
163
165
|
- lib/slideshow/headers.rb
|
164
166
|
- lib/slideshow/helpers/analytics_helper.rb
|
165
167
|
- lib/slideshow/helpers/background_helper.rb
|
@@ -178,6 +180,7 @@ files:
|
|
178
180
|
- lib/slideshow/markup/rest.rb
|
179
181
|
- lib/slideshow/markup/textile.rb
|
180
182
|
- lib/slideshow/opts.rb
|
183
|
+
- lib/slideshow/runner.rb
|
181
184
|
- lib/slideshow/slide.rb
|
182
185
|
- lib/slideshow/version.rb
|
183
186
|
- templates/s6.txt
|