Class: ViewComponent::ScopedStyles::CssClassPrefix

Inherits:
Object
  • Object
show all
Defined in:
lib/view_component/scoped_styles/css_class_prefix.rb

Overview

Interpolates css_class_prefix template variables and escapes scoped class names for use in compiled CSS selectors.

Constant Summary collapse

VARIABLES =
%w[component_name class_name].freeze
VARIABLE_PATTERN =
/\{(#{VARIABLES.join("|")})\}/

Class Method Summary collapse

Class Method Details

.escape_for_css_selector(class_name) ⇒ String

Escapes characters that are invalid in unescaped CSS class selectors.

Parameters:

  • class_name (String)

Returns:

  • (String)


32
33
34
# File 'lib/view_component/scoped_styles/css_class_prefix.rb', line 32

def escape_for_css_selector(class_name)
  class_name.gsub("/", '\/')
end

.interpolate(template, component_name:, class_name:) ⇒ String

Replaces {component_name} and {class_name} in template.

Parameters:

  • template (String)

    prefix template (e.g. “{class_name}_”)

  • component_name (String)

    component name with namespaces joined by /, and a trailing Component suffix removed

  • class_name (String)

    CSS class being scoped

Returns:

  • (String)


19
20
21
22
23
24
25
26
# File 'lib/view_component/scoped_styles/css_class_prefix.rb', line 19

def interpolate(template, component_name:, class_name:)
  template.gsub(VARIABLE_PATTERN) do
    case ::Regexp.last_match(1)
    when "component_name" then component_name
    when "class_name" then class_name
    end
  end
end