Class: Rails::CssUnused::ViewScanner
- Inherits:
-
Object
- Object
- Rails::CssUnused::ViewScanner
- Defined in:
- lib/rails/css_unused/view_scanner.rb
Overview
Extracts CSS class names referenced in Rails views and components via regex. Dynamic classes (ERB interpolation) are only partially detected — see README.
Constant Summary collapse
- CLASS_ATTRIBUTE_PATTERN =
class=“foo bar”, class=‘foo’, class: “foo”, class: ‘foo’, class: %w[foo bar]
/ class\s*=\s*["']([^"']+)["'] | class:\s*["']([^"']+)["'] | class:\s*%w\[\s*([^\]]+)\] | class:\s*\[\s*([^\]]+)\] /ix- HAML_CLASS_PATTERN =
HAML: .foo.bar or %div.foo
/\.([a-zA-Z_][\w-]*)/- TAG_HELPER_CLASS_PATTERN =
Tailwind-style @apply or data-class rarely; common helper: tag.div class: “x”
/(?:^|\s)class:\s*["']([^"']+)["']/m
Instance Method Summary collapse
-
#initialize(root:, config: CssUnused.configuration) ⇒ ViewScanner
constructor
A new instance of ViewScanner.
- #used_classes ⇒ Object
Constructor Details
#initialize(root:, config: CssUnused.configuration) ⇒ ViewScanner
Returns a new instance of ViewScanner.
25 26 27 28 |
# File 'lib/rails/css_unused/view_scanner.rb', line 25 def initialize(root:, config: CssUnused.configuration) @root = Pathname(root) @config = config end |
Instance Method Details
#used_classes ⇒ Object
30 31 32 33 34 35 |
# File 'lib/rails/css_unused/view_scanner.rb', line 30 def used_classes classes = Set.new each_view_file { |path, content| classes.merge(extract_from(content, path)) } classes.subtract(normalized_ignore_list) classes end |