Class: Svelte::Renderer

Inherits:
Object
  • Object
show all
Includes:
ActionView::Helpers::TagHelper, ActionView::Helpers::TextHelper
Defined in:
lib/svelte/renderer.rb

Constant Summary collapse

CLIENT_REQUIRE =

This pattern matches the code that initializes the dev-server client.

%r{__webpack_require__\(.*webpack-dev-server\/client\/index\.js.*\n}

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#output_bufferObject

Returns the value of attribute output_buffer.



9
10
11
# File 'lib/svelte/renderer.rb', line 9

def output_buffer
  @output_buffer
end

Instance Method Details

#render(name, props = {}, options = {}, &block) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/svelte/renderer.rb', line 14

def render(name, props = {}, options = {}, &block)
  prerender_options = options[:prerender]

  if prerender_options.nil?
    prerender_options = ::Rails.application.config.svelte.prerender_default
  end

  if prerender_options
    block = Proc.new { concat(prerender_component(name, props, prerender_options)) }
  end

  html_options = options.reverse_merge(:data => {})
  unless prerender_options == :static
    html_options[:data].tap do |data|
      data[:svelte_class] = name
      data[:svelte_props] = props.is_a?(String) ? props : props.to_json
      data[:hydrate] = 't' if prerender_options
    end
  end

  html_options.except!(:tag, :prerender, :camelize_props)

  (options[:tag] || :div, '', html_options, &block)
end