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: 'default'}.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Slippery::ProcessorHelpers

#asset_uri, #data_attributes, #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



72
73
74
# File 'lib/slippery/processors/reveal_js/add_reveal_js.rb', line 72

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

#plugin_settingsObject



59
60
61
62
63
64
# File 'lib/slippery/processors/reveal_js/add_reveal_js.rb', line 59

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

#plugins(name) ⇒ Object



66
67
68
69
70
# File 'lib/slippery/processors/reveal_js/add_reveal_js.rb', line 66

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

#settingsObject



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

def settings
  @options.reject { |key, _| [:theme, :plugins].include? key }
end