Sha256: 22217ca96c9204833c640743d65b14b57f78921b73fc1e556ac34883a410daff

Contents?: true

Size: 1.39 KB

Versions: 1

Compression:

Stored size: 1.39 KB

Contents

require 'middleman-core'

class Middleman::WebComponents < ::Middleman::Extension
  option :suffix, '.vulcanized.html', 'Suffix appended to vulcanized files'
  option :directory, 'components', 'Directory for web components'
  option :command, 'vulcanize', 'vulcanize command such as vulcanize, /usr/local/bin/valucanize or $(npm bin)/vulcanize'

  def manipulate_resource_list(resources)
    resources.collect do |resource|
      next resource if resource.ignored?
      next resource unless resource.path.start_with? options.directory
      content = `#{options.command} #{resource.source_file}`
      resource = Middleman::Sitemap::StringResource.new(app.sitemap, resource.path, content)
      resource.destination_path = Pathname(resource.path).sub_ext(options.suffix).to_path unless resource.ext == options.suffix
      resource
    end
  end

  helpers do
    def component_import_tag(*sources)
      extension = app.extensions.each.find {|(name, instance)| name == :web_components}[1]
      options = {
        rel: 'import'
      }.update(sources.extract_options!.symbolize_keys)
      sources.flatten.inject(ActiveSupport::SafeBuffer.new) do |all, source|
        url = url_for(File.join(extension.options.directory, "#{source}.html"), relative: true)
        all << tag(:link, {href: url}.update(options))
      end
    end
  end
end

::Middleman::Extensions.register(:web_components, ::Middleman::WebComponents)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
middleman-web_components-0.0.1 lib/middleman-web_components.rb