Sha256: a0779c3bdc1268584d26e69f738869a8f2e0eadbb71b3484683f9bfcf6b28c97

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 KB

Contents

require 'css_parser'

module Caliber
  class CaliberController < Caliber::ApplicationController
    include ::CssParser

    layout 'caliber/application'

    before_filter :require_local!

    def index
      @css_selectors = []

      Rails.application.assets.each_file do |pathname|

        next unless Rails.application.assets.content_type_of(pathname) == 'text/css'

        parser = CssParser::Parser.new

        begin
          link = Rails.application.assets[pathname].to_s
          parser.add_block! link

          selectors = parser.to_enum(:each_selector).map do |selectors, declarations, specificity, media_types|
            declarations = declarations.gsub ";", ";<br>"
            {
                pathname: pathname.to_s,
                selector: selectors,
                declarations: declarations,
                specificity: specificity,
                media_types: media_types
            }
          end

          @css_selectors.concat selectors
        rescue
        end
      end
    end

    private
    def require_local!
      unless local_request?
        render :text => '<p>For security purposes, this information is only available to local requests.</p>', :status => :forbidden
      end
    end

    def local_request?
      Rails.application.config.consider_all_requests_local || request.local?
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
caliber-0.0.1 app/controllers/caliber/caliber_controller.rb