class Md2key::Renderer
Constants
- COVER_LEVEL
Magic number index for master slide named “cover”
Public Class Methods
new(config)
click to toggle source
@param [Md2key::Configuration] config
# File lib/md2key/renderer.rb, line 10 def initialize(config) @config = config end
Public Instance Methods
render!(ast)
click to toggle source
@param [Md2key::Nodes::Presentation] ast
# File lib/md2key/renderer.rb, line 15 def render!(ast) prepare_document_base generate_contents(ast) ensure Keynote.delete_template_slide end
Private Instance Methods
fetch_master_by_level()
click to toggle source
Find master names like “h1”, “h2”, … and return { 1 => “h1”, 2 => “h2” } only for available ones. @return [Hash{ Integer => String }]
# File lib/md2key/renderer.rb, line 56 def fetch_master_by_level masters = Keynote.fetch_master_slide_names {}.tap do |result| masters.each do |master| if master.match(/\Ah(?<level>[1-5])\z/) level = Integer(Regexp.last_match[:level]) result[level] = master elsif master == 'cover' result[COVER_LEVEL] = 'cover' end end end end
generate_contents(ast)
click to toggle source
@param [Md2key::Nodes::Presentation] ast
# File lib/md2key/renderer.rb, line 30 def generate_contents(ast) first_master = Keynote.fetch_master_slide_name(1) second_master = Keynote.fetch_master_slide_name(2) master_by_level = fetch_master_by_level cover_master = @config.cover_master || master_by_level.fetch(COVER_LEVEL, first_master) Keynote.update_cover(ast.cover, cover_master) ast.slides.each do |slide| slide_master = @config.slide_master(slide.level) || master_by_level.fetch(slide.level, second_master) if slide.table Keynote.create_slide_with_table(slide, slide.table.rows, slide.table.columns, slide_master) Keynote.insert_table(slide.table.data) else Keynote.create_slide(slide, slide_master) Keynote.insert_image(slide.image) if slide.image Keynote.insert_code(slide.code) if slide.code end Keynote.insert_note(slide.note) if slide.note end end
prepare_document_base()
click to toggle source
# File lib/md2key/renderer.rb, line 24 def prepare_document_base Keynote.ensure_template_slide_availability Keynote.delete_extra_slides end