Sha256: ca42e16987d9f9f28a96d88892884221c2ba579fc6d4809960da015735210b09

Contents?: true

Size: 1.76 KB

Versions: 8

Compression:

Stored size: 1.76 KB

Contents

module Parade
  module Parsers

    #
    # Load the JSON format of a presentation, convert it to the DSL format,
    # and then send it to the DSL parser. This parser is to provide backwards
    # compatabiliy to the previously defined JSON format of a Parade presentation.
    #
    # @example parade.json format
    #
    #     {
    #       "name": "Something",
    #       "description": "Example Presentation",
    #       "templates" : { "default" : "custom.tpl" },
    #       "sections": [
    #         {"section":"one"},
    #         {"section":"two"},
    #         {"section":"three"}
    #       ]
    #     }
    #
    class JsonFileParser

      def self.parse(filepath,options = {})
        parade_json = JSON.parse File.read(filepath)

        dsl_content = convert_to_parade_dsl parade_json
        Dsl.parse dsl_content, options
      end

      private

      def self.convert_to_parade_dsl(content)

        dsl_content = ""

        dsl_content << "title '#{content['name']}'\n" if content['name']
        dsl_content << "description %{#{content['description']}}\n" if content['description']
        dsl_content << "pause_message %{#{content['pause_msg']}}" if content['pause_msg']

        templates = content['templates'] || {}

        templates.each do |template_name,template_file|
          dsl_content << "template '#{template_name}', '#{template_file}'\n"
        end

        Array(content['sections']).each do |section|

          if section.is_a?(Hash)
            filename_or_folder = section['section']
          else
            filename_or_folder = section
          end

          Array(filename_or_folder).each do |file_or_folder|
            dsl_content << "slides '#{file_or_folder}'\n"
          end
        end

        dsl_content

      end

    end

  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
parade-0.10.1 lib/parade/parsers/json_file_parser.rb
parade-0.10.0 lib/parade/parsers/json_file_parser.rb
parade-0.9.2 lib/parade/parsers/json_file_parser.rb
parade-0.9.1 lib/parade/parsers/json_file_parser.rb
parade-0.9.0 lib/parade/parsers/json_file_parser.rb
parade-0.8.2 lib/parade/parsers/json_file_parser.rb
parade-0.8.1 lib/parade/parsers/json_file_parser.rb
parade-0.8.0 lib/parade/parsers/json_file_parser.rb