Class: CSS::MediaQueries::Context

Inherits:
Data
  • Object
show all
Defined in:
lib/css/media_queries/context.rb

Overview

Holds the user-agent context against which a MediaQueryList is evaluated. Stored as a feature → value Hash; values follow Media Queries Level 4 conventions:

- lengths in CSS pixels (Numeric)
- resolution in dots-per-CSS-px (`dppx`, Numeric)
- identifier-valued features as Strings ("landscape", "dark", ...)
- boolean-style features as 1 / 0 or true / false

‘Context.default(**overrides)` returns a sensible desktop preset.

Constant Summary collapse

DEFAULTS =
{
  'media-type'          => 'screen',

  'width'               => 1024,
  'height'              => 768,
  'device-width'        => 1024,
  'device-height'       => 768,
  'aspect-ratio'        => 1024.0 / 768,
  'device-aspect-ratio' => 1024.0 / 768,
  'orientation'         => 'landscape',

  'resolution'          => 1, # dppx
  'color'               => 8,
  'color-gamut'         => 'srgb',
  'color-index'         => 0,
  'monochrome'          => 0,
  'grid'                => 0,
  'scan'                => 'progressive',
  'update'              => 'fast',
  'overflow-block'      => 'scroll',
  'overflow-inline'     => 'scroll',

  'pointer'             => 'fine',
  'hover'               => 'hover',
  'any-pointer'         => 'fine',
  'any-hover'           => 'hover',

  'prefers-color-scheme'   => 'light',
  'prefers-reduced-motion' => 'no-preference',
  'prefers-contrast'       => 'no-preference',
  'forced-colors'          => 'none'
}.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#featuresObject (readonly)

Returns the value of attribute features

Returns:

  • (Object)

    the current value of features



13
14
15
# File 'lib/css/media_queries/context.rb', line 13

def features
  @features
end

Class Method Details

.default(**overrides) ⇒ Object



22
23
24
# File 'lib/css/media_queries/context.rb', line 22

def self.default(**overrides)
  new(features: DEFAULTS.merge(overrides.transform_keys(&:to_s)))
end

Instance Method Details

#[](name) ⇒ Object



14
# File 'lib/css/media_queries/context.rb', line 14

def [](name) = features[name.to_s]

#media_typeObject



16
# File 'lib/css/media_queries/context.rb', line 16

def media_type = self['media-type']

#with(**overrides) ⇒ Object



18
19
20
# File 'lib/css/media_queries/context.rb', line 18

def with(**overrides)
  Context.new(features: features.merge(overrides.transform_keys(&:to_s)))
end