module Slideshow ## fix:/todo: move generation code out of command into its own class ## not residing/depending on cli class Gen include ManifestHelper ### fix: remove opts, use config (wrapped!!) def initialize( logger, opts, config, headers ) @logger = logger @opts = opts @config = config @headers = headers end attr_reader :logger, :opts, :config, :headers attr_reader :session # give helpers/plugins a session-like hash attr_reader :markup_type # :textile, :markdown, :rest # uses configured markup processor (textile,markdown,rest) to generate html def text_to_html( content ) content = case @markup_type when :markdown markdown_to_html( content ) when :textile textile_to_html( content ) when :rest rest_to_html( content ) end content end def guard_text( text ) # todo/fix 2: note for Textile we need to differentiate between blocks and inline # thus, to avoid runs - use guard_block (add a leading newline to avoid getting include in block that goes before) # todo/fix: remove wrap_markup; replace w/ guard_text # why: text might be css, js, not just html wrap_markup( text ) end def guard_block( text ) if markup_type == :textile # saveguard with notextile wrapper etc./no further processing needed # note: add leading newlines to avoid block-runons "\n\n\n#{text}\n\n" else text end end def guard_inline( text ) wrap_markup( text ) end def wrap_markup( text ) if markup_type == :textile # saveguard with notextile wrapper etc./no further processing needed "\n#{text}\n" else text end end def load_template( path ) puts " Loading template #{path}..." return File.read( path ) end def render_template( content, the_binding ) ERB.new( content ).result( the_binding ) end def with_output_path( dest, output_path ) dest_full = File.expand_path( dest, output_path ) logger.debug "dest_full=#{dest_full}" # make sure dest path exists dest_path = File.dirname( dest_full ) logger.debug "dest_path=#{dest_path}" FileUtils.makedirs( dest_path ) unless File.directory? dest_path dest_full end # move into a filter?? def post_processing_slides( content ) # 1) add slide break if (@markup_type == :markdown && Markdown.lib == 'pandoc-ruby') || @markup_type == :rest content = add_slide_directive_before_div_h1( content ) else if config.header_level == 2 content = add_slide_directive_before_h2( content ) else # assume level 1 content = add_slide_directive_before_h1( content ) end end dump_content_to_file_debug_html( content ) # 2) use generic slide break processing instruction to # split content into slides slide_counter = 0 slides = [] slide_source = "" content.each_line do |line| if line.include?( '