Class: ShowOff
- Inherits:
-
Sinatra::Application
- Object
- Sinatra::Application
- ShowOff
- Defined in:
- lib/showoff.rb
Constant Summary collapse
- Version =
VERSION = '0.5.1.1'
Instance Attribute Summary collapse
-
#cached_image_size ⇒ Object
readonly
Returns the value of attribute cached_image_size.
Class Method Summary collapse
Instance Method Summary collapse
- #eval_ruby(code) ⇒ Object
-
#initialize(app = nil) ⇒ ShowOff
constructor
A new instance of ShowOff.
- #require_ruby_files ⇒ Object
Constructor Details
#initialize(app = nil) ⇒ ShowOff
Returns a new instance of ShowOff.
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 |
# File 'lib/showoff.rb', line 45 def initialize(app=nil) super(app) @logger = Logger.new(STDOUT) @logger.formatter = proc { |severity,datetime,progname,msg| "#{progname} #{msg}\n" } @logger.level = .verbose ? Logger::DEBUG : Logger::WARN dir = File.(File.join(File.dirname(__FILE__), '..')) @logger.debug(dir) # showoff_dir: The directory that the showoff gem has been installed in showoff_dir = File.(File.join(File.dirname(__FILE__), '..')) # If working directory is the showoff gem install dir, set presentation directory to the example folder and set the root path to "." if Dir.pwd == showoff_dir .pres_dir = "#{showoff_dir}/example" @root_path = "." # Otherwise set presentation directory to either the one specified or the current working directory, and set the root path to ".." else .pres_dir ||= Dir.pwd @root_path = ".." end # Now expand path of the presentation directory .pres_dir = File.(.pres_dir) if (.pres_file) puts "Using #{.pres_file}" ShowOffUtils.presentation_config_file = .pres_file end puts "Serving presentation from #{.pres_dir}" @cached_image_size = {} @logger.debug .pres_dir @pres_name = .pres_dir.split('/').pop require_ruby_files end |
Instance Attribute Details
#cached_image_size ⇒ Object (readonly)
Returns the value of attribute cached_image_size.
37 38 39 |
# File 'lib/showoff.rb', line 37 def cached_image_size @cached_image_size end |
Class Method Details
.do_static(what) ⇒ Object
363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 |
# File 'lib/showoff.rb', line 363 def self.do_static(what) what = "index" if !what # Nasty hack to get the actual ShowOff module showoff = ShowOff.new while !showoff.is_a?(ShowOff) showoff = showoff.instance_variable_get(:@app) end name = showoff.instance_variable_get(:@pres_name) path = showoff.instance_variable_get(:@root_path) data = showoff.send(what, true) if data.is_a?(File) FileUtils.cp(data.path, "#{name}.pdf") else out = "#{path}/#{name}/static" # First make a directory FileUtils.makedirs(out) # Then write the html file = File.new("#{out}/index.html", "w") file.puts(data) file.close # Now copy all the js and css my_path = File.join( File.dirname(__FILE__), '..', 'public') ["js", "css"].each { |dir| FileUtils.copy_entry("#{my_path}/#{dir}", "#{out}/#{dir}") } # And copy the directory Dir.glob("#{my_path}/#{name}/*").each { |subpath| base = File.basename(subpath) next if "static" == base next unless File.directory?(subpath) || base.match(/\.(css|js)$/) FileUtils.copy_entry(subpath, "#{out}/#{base}") } # Set up file dir file_dir = File.join(out, 'file') FileUtils.makedirs(file_dir) pres_dir = showoff..pres_dir # ..., copy all user-defined styles and javascript files Dir.glob("#{pres_dir}/*.{css,js}").each { |path| FileUtils.copy(path, File.join(file_dir, File.basename(path))) } # ... and copy all needed image files data.scan(/img src=\".\/file\/(.*?)\"/).flatten.each do |path| dir = File.dirname(path) FileUtils.makedirs(File.join(file_dir, dir)) FileUtils.copy(File.join(pres_dir, path), File.join(file_dir, path)) end # copy images from css too Dir.glob("#{pres_dir}/*.css").each do |css_path| File.open(css_path) do |file| data = file.read data.scan(/url\((.*)\)/).flatten.each do |path| @logger.debug path dir = File.dirname(path) FileUtils.makedirs(File.join(file_dir, dir)) FileUtils.copy(File.join(pres_dir, path), File.join(file_dir, path)) end end end end end |
Instance Method Details
#eval_ruby(code) ⇒ Object
428 429 430 431 432 |
# File 'lib/showoff.rb', line 428 def eval_ruby code eval(code).to_s rescue => e e. end |
#require_ruby_files ⇒ Object
78 79 80 |
# File 'lib/showoff.rb', line 78 def require_ruby_files Dir.glob("#{.pres_dir}/*.rb").map { |path| require path } end |