Sha256: d5f631bbbe215bca7bee6e08f2df0bd876c45c6379561b542d23fb2224b77de9

Contents?: true

Size: 1.52 KB

Versions: 5

Compression:

Stored size: 1.52 KB

Contents

require 'pathname'
require 'json'

module MagicReveal
  class ProjectConfig
    DEFAULT_TEMPLATE = File.expand_path('../template-config.json', __FILE__)
    attr_reader :json

    def initialize io_or_path
      io = io_or_path.respond_to?(:read) ? io_or_path : Pathname.new(io_or_path)
      @json = JSON::load(io.read)
    end

    def dependencies
      out = []
      # you always want this
      out << '{ src: "lib/js/classList.js", condition: function() { return !document.body.classList; } }'

      if json['plugins'].include? 'highlight'
        out << '{ src: "plugin/highlight/highlight.js", async: true, callback: function() { hljs.initHighlightingOnLoad(); } }'
      end
      if json['plugins'].include? 'zoom'
        out << '{ src: "plugin/zoom-js/zoom.js", async: true, condition: function() { return !!document.body.classList; } }'
      end
      if json['plugins'].include? 'notes'
        out << '{ src: "plugin/notes/notes.js", async: true, condition: function() { return !!document.body.classList; } }'
      end

      "\"dependencies\": [\n#{out.join(",\n")}\n]"
    end

    def to_js
      var = []
      keys = json.keys.reject { |k| ['dependencies', 'github'].include?(k) }
      keys.each do |key|
        value = json[key]
        var << "  #{key}: #{value.to_json}"
      end

      out = []
      out << "/* Generated at #{Time.now} */"
      out << "var config = {"
      out << "#{var.join(",\n")},\n#{dependencies}"
      out << "\n};"
      out << "Reveal.initialize(config);"
      out.join("\n")
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
magic_reveal-2.6.1.2 lib/magic_reveal/project_config.rb
magic_reveal-2.6.1.1 lib/magic_reveal/project_config.rb
magic_reveal-2.4.0.5 lib/magic_reveal/project_config.rb
magic_reveal-2.4.0.4 lib/magic_reveal/project_config.rb
magic_reveal-2.4.0.3 lib/magic_reveal/project_config.rb