Sha256: a57415c85af9727a8e2d7d720f29482a7c334cbd32f7d80799d4474749e74050

Contents?: true

Size: 1.11 KB

Versions: 10

Compression:

Stored size: 1.11 KB

Contents

require 'uri'

module Polymer
  module Rails
    class Component

      # Selectors for component resources
      SELECTORS = {
        html:       "link[rel='import']:not([type='css'])",
        stylesheet: "link[rel='stylesheet'], link[rel='import'][type='css']",
        javascript: "script[src]"
      }

      def initialize(data)
        @adapter = XmlAdapters::Base.factory
        @doc = @adapter.parse_document(data)
      end

      def stringify
        @adapter.stringify(@doc)
      end

      def replace_node(node, name, content)
        @adapter.replace_node node, @adapter.create_node(@doc, name, content)
      end

      def stylesheets
        @adapter.css_select(@doc, SELECTORS[:stylesheet]).reject{|tag| is_external? tag.attributes['href'].value}
      end

      def javascripts
        @adapter.css_select(@doc, SELECTORS[:javascript]).reject do |tag|
          is_external? tag.attributes['src'].value
        end
      end

      def html_imports
        @adapter.css_select(@doc, SELECTORS[:html])
      end

    private

      def is_external?(source)
        !URI(source).host.nil?
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
polymer-rails-1.3.0 lib/polymer-rails/component.rb
polymer-rails-1.2.4.1 lib/polymer-rails/component.rb
polymer-rails-1.2.4 lib/polymer-rails/component.rb
polymer-rails-1.2.3 lib/polymer-rails/component.rb
polymer-rails-1.2.2 lib/polymer-rails/component.rb
polymer-rails-1.2.1 lib/polymer-rails/component.rb
polymer-rails-1.2.0 lib/polymer-rails/component.rb
polymer-rails-1.1.5 lib/polymer-rails/component.rb
polymer-rails-1.1.2 lib/polymer-rails/component.rb
polymer-rails-1.1.1 lib/polymer-rails/component.rb