Created
August 15, 2012 04:23
-
-
Save eanakashima/3355868 to your computer and use it in GitHub Desktop.
selecta finda
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env ruby | |
| require 'rubygems' | |
| require 'bundler/setup' | |
| # require 'broom' | |
| require 'tempfile' | |
| require 'fileutils' | |
| @result_name = 'result_' + Time.now.strftime("%Y%m%d-%H%M") + '.txt' | |
| @selectors_path = File.expand_path('~/Desktop/sweep/selectors.txt', __FILE__) | |
| @proj_path = File.expand_path('~/workspace/e-comm/app/views', __FILE__) | |
| @selectors = [] | |
| def find_selectors(css_path) | |
| source = File.expand_path(css_path, __FILE__) | |
| temp_file = Tempfile.new('selectors.tmp') | |
| File.foreach(source) { |line| find_selectors_by_line(line, temp_file) } | |
| FileUtils.mv(temp_file.path, @selectors_path) | |
| end | |
| def find_selectors_by_line(line, selectors_file) | |
| # check for multiple matches per line | |
| while m = line.match(/(\.|\#)[_a-zA-Z]+[_a-zA-Z0-9-]*/) | |
| @selectors << m.to_s | |
| # selectors_file.puts m # UNCOMMENT if you want to write selectors to a file | |
| line.gsub!(m.to_s, '') | |
| end | |
| end | |
| def check_selectors(selectors) | |
| # UNCOMMENT if you want to write selectors to a file | |
| # File.foreach(@selectors_path) do |line| | |
| # append_result(line) unless selector_found_in_any_file?(line) | |
| # end | |
| selectors.each do |selector| | |
| append_result(selector) unless selector_found_in_any_file?(selector) || selector == '.scss' | |
| end | |
| end | |
| def selector_found_in_any_file?(selector) | |
| selector = strip_selector_chars(selector) | |
| # @project_files = # array of all files in project | |
| Dir.glob(@proj_path + "/**/*") .each do |file| | |
| unless File.directory?(file) | |
| return true if selector_found_in_file?(selector, file) | |
| end | |
| end | |
| false | |
| end | |
| def selector_found_in_file?(selector,file) | |
| File.foreach(file) do |line| | |
| return true if line.match(/(class|id|\.|\#)(\S| )*\b(#{selector})\b/) | |
| end | |
| end | |
| def strip_selector_chars(selector) | |
| selector.gsub('.','').gsub('#','') | |
| end | |
| def append_result(selector) | |
| print '.' | |
| unless File.exist?(@result_name) | |
| File.open(@result_name, 'w') { |f| f.puts "Selectors with no matches in #{@proj_path}: \n======================================================================== \n\n" } | |
| end | |
| File.open(@result_name, 'a+') { |f| f.puts(selector) } | |
| end | |
| # --------------------------------------------------------------------------- | |
| # script starts here | |
| # --------------------------------------------------------------------------- | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/pdp.css') | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/views/customers/referrals/base.css') | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/views/customers/gifts/index.css') | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/patches/storefront_pdp_widget_width_override.css') | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/patches/storefront_main_content_width_override.css') | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/mobile.css') | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/storefront.css') | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/transitional.css') | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/legacy.css') | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/catalog.css') | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/storefront/promotional_pairing.css') | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/storefront/all_storefront.css') | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/cms.css') | |
| # find_selectors('~/workspace/e-comm/public/stylesheets/compiled/base.css') | |
| find_selectors('~/workspace/e-comm/public/stylesheets/compiled/error.css') | |
| check_selectors(@selectors) | |
| #result should be: | |
| # .happy .sad #saddest .dude-wheres-my-car #bo3op .also-a-class .thang | |
| # --------------------------------------------------------------------------- | |
| # some post-processing stuff to do in shell | |
| # --------------------------------------------------------------------------- | |
| # sort [FILE] | uniq > uniq_[FILE].txt | |
| # cat uniq* | sort | uniq > FINAL_RESULT.txt |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment