Class: Primer::Classify::Spacing

Inherits:
Object
  • Object
show all
Defined in:
app/lib/primer/classify/spacing.rb

Overview

Handler for PrimerCSS spacing classes.

Constant Summary collapse

BASE_OPTIONS =
(0..6).to_a.freeze
BASE_MAPPINGS =
{
  my: BASE_OPTIONS,
  pb: BASE_OPTIONS,
  pl: BASE_OPTIONS,
  pr: BASE_OPTIONS,
  pt: BASE_OPTIONS,
  px: BASE_OPTIONS,
  py: BASE_OPTIONS
}.freeze
MARGIN_DIRECTION_OPTIONS =
[*(-6..-1), *BASE_OPTIONS].freeze
MARGIN_DIRECTION_MAPPINGS =
{
  mb: MARGIN_DIRECTION_OPTIONS,
  ml: MARGIN_DIRECTION_OPTIONS,
  mr: MARGIN_DIRECTION_OPTIONS,
  mt: MARGIN_DIRECTION_OPTIONS
}.freeze
AUTO_OPTIONS =
[*BASE_OPTIONS, :auto].freeze
AUTO_MAPPINGS =
{
  m: AUTO_OPTIONS,
  mx: AUTO_OPTIONS
}.freeze
RESPONSIVE_OPTIONS =
[*BASE_OPTIONS, :responsive].freeze
RESPONSIVE_MAPPINGS =
{
  p: RESPONSIVE_OPTIONS
}.freeze
MAPPINGS =
{
  **BASE_MAPPINGS,
  **MARGIN_DIRECTION_MAPPINGS,
  **AUTO_MAPPINGS,
  **RESPONSIVE_MAPPINGS
}.freeze
KEYS =
MAPPINGS.keys.freeze

Class Method Summary collapse

Class Method Details

.spacing(key, val, breakpoint) ⇒ Object



46
47
48
49
50
51
52
# File 'app/lib/primer/classify/spacing.rb', line 46

def spacing(key, val, breakpoint)
  validate(key, val) unless Rails.env.production?

  return "#{key.to_s.dasherize}#{breakpoint}-n#{val.abs}" if val.is_a?(Numeric) && val.negative?

  "#{key.to_s.dasherize}#{breakpoint}-#{val.to_s.dasherize}"
end