Sha256: 569aece75a36c209b5e59f18267a1446ac23b6539a92367be5b590b0db3e2c71

Contents?: true

Size: 1.36 KB

Versions: 1

Compression:

Stored size: 1.36 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'

        #next if @css_selectors.any?

        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.2 app/controllers/caliber/caliber_controller.rb