defmodule Source do defmacro code(src) do [code: Macro.to_string(src)] end end defmodule Presentex do def div([html: html]) do EEx.eval_string """
<%= html %>
""", [html: html] end def div([code: code]) do EEx.eval_string """

<%= code %>
      
""", [code: code] end def div(args = [title: title, subtitle: subtitle]) do EEx.eval_string """

<%= title %>

<%= subtitle %>

""", args end def div(args = [title: title]) do EEx.eval_string """

<%= title %>

""", args end def div(args = [blockquote: blockquote, author: author]) do EEx.eval_string """
<%= blockquote %>
<%= author %>
""", args end def div(s) when is_binary(s) do EEx.eval_string """

<%= s %>

""", [s: s] end def div(items) when is_list(items) do EEx.eval_string """
""", [items: items] end def index(slides, style \\ "idea") do EEx.eval_string """ <%= for slide <- slides do %> <%= Presentex.div(slide) %> <% end %> """, [slides: slides, style: style] end def gen(path, slides) do require Source content = Presentex.index(slides) File.write!(Path.join(path, "index.html"), content) File.cp_r("deps/presentex/files", path) end end