Sha256: 7e7b68fd40208b5ad848e08489b34c2f07894174ac0dc4af91b7cc2deca9cd98

Contents?: true

Size: 1.08 KB

Versions: 3

Compression:

Stored size: 1.08 KB

Contents

require "nokogiri"

module StyleGuide
  class Partial
    attr_reader :path, :section

    def initialize(path, section)
      @path = path
      @section = section
    end

    def id
      @id ||= title.downcase.gsub(/[^a-zA-Z0-9]+/, "_")
    end

    def title
      @title ||= File.basename(path, ".erb").titleize.strip
    end

    def content
      @content ||= File.read(path)
    end

    def description
      @description ||= begin
        I18n.translate!(id, :scope => [:style_guide, section.id.to_sym])
      rescue I18n::MissingTranslationData
        nil
      end
    end

    def classes
      @classes ||= begin
        parsed.css("[class]").reduce({}) do |output, tag|
          output.tap do |tags|
            tag["class"].split.each do |class_name|
              tags[".#{class_name}"] = true
            end
          end
        end.keys
      end
    end

    def ids
      @ids ||= parsed.css("[id]").map { |tag| %(##{tag["id"]}) }
    end

    def identifiers
      ids + classes
    end

    private

    def parsed
      @parsed ||= Nokogiri::HTML.parse(content)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
style-guide-0.6.0 lib/style_guide/partial.rb
style-guide-0.5.0 lib/style_guide/partial.rb
style-guide-0.4.0 lib/style_guide/partial.rb