Class: Slippery::Processors::RevealJs::AddRevealJs

Inherits:
Object
  • Object
show all
Includes:
Slippery::ProcessorHelpers
Defined in:
lib/slippery/processors/reveal_js/add_reveal_js.rb

Constant Summary collapse

DEFAULT_OPTIONS =
{theme: 'black'}.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Slippery::ProcessorHelpers

asset_uri, #data_attributes, #hash_to_js, #include_local_css, #include_local_javascript, included, #javascript_include_tag, #stylesheet_link_tag

Constructor Details

#initialize(options = {}) ⇒ AddRevealJs

Returns a new instance of AddRevealJs.



15
16
17
# File 'lib/slippery/processors/reveal_js/add_reveal_js.rb', line 15

def initialize(options = {})
  @options = DEFAULT_OPTIONS.merge(options).freeze
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



11
12
13
# File 'lib/slippery/processors/reveal_js/add_reveal_js.rb', line 11

def attributes
  @attributes
end

Class Method Details

.call(doc) ⇒ Object



7
8
9
# File 'lib/slippery/processors/reveal_js/add_reveal_js.rb', line 7

def self.call(doc)
  self.new.call(doc)
end

Instance Method Details

#call(doc) ⇒ Object



19
20
21
22
23
24
25
26
27
# File 'lib/slippery/processors/reveal_js/add_reveal_js.rb', line 19

def call(doc)
  doc.process(
    reveal_wrap,
    add_reveal_js,
    add_reveal_css,
    add_theme,
    add_settings
  )
end

#plugin_config(plugin) ⇒ Object



75
76
77
# File 'lib/slippery/processors/reveal_js/add_reveal_js.rb', line 75

def plugin_config(plugin)
  "{ src: #{plugins(plugin).inspect}, async: true, condition: function() { return !!document.body.classList; } }"
end

#plugin_settingsObject



63
64
65
66
67
# File 'lib/slippery/processors/reveal_js/add_reveal_js.rb', line 63

def plugin_settings
  Array(@options.fetch(:plugins, [])).map do |name|
    plugin_config(name)
  end
end

#plugins(name) ⇒ Object



69
70
71
72
73
# File 'lib/slippery/processors/reveal_js/add_reveal_js.rb', line 69

def plugins(name)
  {
    notes: 'plugin/notes/notes.js'
  }[name]
end

#settingsObject



55
56
57
58
59
60
61
# File 'lib/slippery/processors/reveal_js/add_reveal_js.rb', line 55

def settings
  {
    dependencies: plugin_settings + @options.fetch(:dependencies, [])
  }.merge(
    @options.reject { |key, _| [:theme, :plugins, :dependencies].include? key }
  )
end