Sha256: 4b11a267e7fed65e227974951eb684f70de79fcba08314c0dbfaa249424de6e1

Contents?: true

Size: 1.39 KB

Versions: 4

Compression:

Stored size: 1.39 KB

Contents

class ExternalRenderer < Erector::Widget
  needs :classes
  needs :included_stylesheets => true, :inline_styles => true, :included_scripts => true, :inline_scripts => true
  
  def content
    included_stylesheets if @included_stylesheets
    inline_styles if @inline_styles
    included_scripts if @included_scripts
    inline_scripts if @inline_scripts
  end
  
  def rendered_externals(type)
    @classes.map do |klass|
      klass.dependencies(type)
    end.flatten.uniq
  end
  
  def included_scripts
    rendered_externals(:js).each do |external|
      script({:type => "text/javascript", :src => external.text}.merge(external.options))
    end
  end
  
  def included_stylesheets
    rendered_externals(:css).each do |external|
      link({:rel => "stylesheet", :href => external.text, :type => "text/css", :media => "all"}.merge(external.options))
    end
  end

  def inline_styles
    rendered_externals(:style).each do |external|
      style({:type => "text/css", 'xml:space' => 'preserve'}.merge(external.options)) do
        rawtext external.text
      end
    end
  end
  
  def inline_scripts
    rendered_externals(:script).each do |external|
      javascript external.options do
        rawtext external.text
      end
    end
    # todo: allow :load or :ready per external script
    rendered_externals(:jquery).each do |external|
      jquery :load, external.text, external.options
    end
  end

end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
erector-0.8.2 lib/erector/widgets/external_renderer.rb
honkster-erector-0.8.1 lib/erector/widgets/external_renderer.rb
erector-0.8.1 lib/erector/widgets/external_renderer.rb
erector-0.8.0 lib/erector/widgets/external_renderer.rb