Module: Sass::Value

Included in:
Boolean, Calculation, Color, Function, List, Map, Mixin, Module, Null, Number, String
Defined in:
lib/sass/value.rb,
lib/sass/value/map.rb,
lib/sass/value/list.rb,
lib/sass/value/null.rb,
lib/sass/value/color.rb,
lib/sass/value/mixin.rb,
lib/sass/value/module.rb,
lib/sass/value/number.rb,
lib/sass/value/string.rb,
lib/sass/value/boolean.rb,
lib/sass/value/function.rb,
lib/sass/value/fuzzy_math.rb,
lib/sass/value/calculation.rb,
lib/sass/value/color/space.rb,
lib/sass/value/number/unit.rb,
lib/sass/value/argument_list.rb,
lib/sass/value/color/channel.rb,
lib/sass/value/color/space/hsl.rb,
lib/sass/value/color/space/hwb.rb,
lib/sass/value/color/space/lab.rb,
lib/sass/value/color/space/lch.rb,
lib/sass/value/color/space/lms.rb,
lib/sass/value/color/space/rgb.rb,
lib/sass/value/color/space/srgb.rb,
lib/sass/value/color/conversions.rb,
lib/sass/value/color/space/oklab.rb,
lib/sass/value/color/space/oklch.rb,
lib/sass/value/color/space/utils.rb,
lib/sass/value/color/space/a98_rgb.rb,
lib/sass/value/color/space/rec2020.rb,
lib/sass/value/color/space/xyz_d50.rb,
lib/sass/value/color/space/xyz_d65.rb,
lib/sass/value/color/gamut_map_method.rb,
lib/sass/value/color/space/display_p3.rb,
lib/sass/value/color/space/srgb_linear.rb,
lib/sass/value/color/space/prophoto_rgb.rb,
lib/sass/value/color/interpolation_method.rb,
lib/sass/value/color/gamut_map_method/clip.rb,
lib/sass/value/color/space/display_p3_linear.rb,
lib/sass/value/color/gamut_map_method/local_minde.rb

Overview

The abstract base class of Sass's value types.

Defined Under Namespace

Classes: ArgumentList, Boolean, Calculation, Color, Function, List, Map, Mixin, Module, Null, Number, String

Instance Method Summary collapse

Instance Method Details

#[](index) ⇒ Value

Parameters:

  • index (Numeric)

Returns:



25
26
27
# File 'lib/sass/value.rb', line 25

def [](index)
  at(index)
end

#assert_boolean(name = nil) ⇒ Boolean

Returns:

Raises:



88
89
90
# File 'lib/sass/value.rb', line 88

def assert_boolean(name = nil)
  raise Sass::ScriptError.new("#{inspect} is not a boolean", name)
end

#assert_calculation(name = nil) ⇒ Calculation

Returns:

Raises:



94
95
96
# File 'lib/sass/value.rb', line 94

def assert_calculation(name = nil)
  raise Sass::ScriptError.new("#{inspect} is not a calculation", name)
end

#assert_color(name = nil) ⇒ Color

Returns:

Raises:



100
101
102
# File 'lib/sass/value.rb', line 100

def assert_color(name = nil)
  raise Sass::ScriptError.new("#{inspect} is not a color", name)
end

#assert_function(name = nil) ⇒ Function

Returns:

Raises:



106
107
108
# File 'lib/sass/value.rb', line 106

def assert_function(name = nil)
  raise Sass::ScriptError.new("#{inspect} is not a function", name)
end

#assert_map(name = nil) ⇒ Map

Returns:

Raises:



112
113
114
# File 'lib/sass/value.rb', line 112

def assert_map(name = nil)
  raise Sass::ScriptError.new("#{inspect} is not a map", name)
end

#assert_mixin(name = nil) ⇒ Mixin

Returns:

Raises:



118
119
120
# File 'lib/sass/value.rb', line 118

def assert_mixin(name = nil)
  raise Sass::ScriptError.new("#{inspect} is not a mixin", name)
end

#assert_module(name = nil) ⇒ Module

Returns:

Raises:



124
125
126
# File 'lib/sass/value.rb', line 124

def assert_module(name = nil)
  raise Sass::ScriptError.new("#{inspect} is not a module", name)
end

#assert_number(name = nil) ⇒ Number

Returns:

Raises:



130
131
132
# File 'lib/sass/value.rb', line 130

def assert_number(name = nil)
  raise Sass::ScriptError.new("#{inspect} is not a number", name)
end

#assert_string(name = nil) ⇒ String

Returns:

Raises:



136
137
138
# File 'lib/sass/value.rb', line 136

def assert_string(name = nil)
  raise Sass::ScriptError.new("#{inspect} is not a string", name)
end

#at(index) ⇒ Value

Parameters:

  • index (Numeric)

Returns:



31
32
33
# File 'lib/sass/value.rb', line 31

def at(index)
  index < 1 && index >= -1 ? self : nil
end

#bracketed? ⇒ ::Boolean

Returns:

  • (::Boolean)


14
15
16
# File 'lib/sass/value.rb', line 14

def bracketed?
  false
end

#eql?(other) ⇒ ::Boolean

Returns:

  • (::Boolean)


19
20
21
# File 'lib/sass/value.rb', line 19

def eql?(other)
  self == other
end

#inspect ⇒ ::String

Returns:

  • (::String)


60
61
62
63
64
65
66
67
68
69
# File 'lib/sass/value.rb', line 60

def inspect
  s = nil
  Sass.compile_string('@use "sass:meta";$_:o(meta.inspect(i()));', functions: {
                        'i()' => ->(_) { self },
                        'o($s)' => ->(args) { s = args[0].assert_string }
                      })
  s.text
rescue StandardError
  super
end

#sass_index_to_array_index(sass_index, name = nil) ⇒ Integer

Parameters:

Returns:

  • (Integer)

Raises:



142
143
144
145
146
147
148
149
150
151
# File 'lib/sass/value.rb', line 142

def sass_index_to_array_index(sass_index, name = nil)
  index = sass_index.assert_number(name).assert_integer(name)
  raise Sass::ScriptError.new('List index may not be 0', name) if index.zero?

  if index.abs > to_a_length
    raise Sass::ScriptError.new("Invalid index #{sass_index} for a list with #{to_a_length} elements", name)
  end

  index.negative? ? to_a_length + index : index - 1
end

#separator ⇒ ::String?

Returns:

  • (::String, nil)


9
10
11
# File 'lib/sass/value.rb', line 9

def separator
  nil
end

#to_a ⇒ Array<Value>

Returns:



36
37
38
# File 'lib/sass/value.rb', line 36

def to_a
  [self]
end

#to_bool ⇒ ::Boolean

Returns:

  • (::Boolean)


72
73
74
# File 'lib/sass/value.rb', line 72

def to_bool # rubocop:disable Naming/PredicateMethod
  true
end

#to_h ⇒ Hash<Value, Value>

Returns:

Raises:



42
43
44
# File 'lib/sass/value.rb', line 42

def to_h(...)
  to_a.to_h(...)
end

#to_map ⇒ Map?

Returns:



77
78
79
# File 'lib/sass/value.rb', line 77

def to_map
  nil
end

#to_nil ⇒ Value?

Returns:



82
83
84
# File 'lib/sass/value.rb', line 82

def to_nil
  self
end

#to_s ⇒ ::String

Returns:

  • (::String)

Raises:



48
49
50
51
52
53
54
55
56
57
# File 'lib/sass/value.rb', line 48

def to_s
  s = nil
  Sass.compile_string('$_:o(#{i()});', functions: { # rubocop:disable Lint/InterpolationCheck
                        'i()' => ->(_) { self },
                        'o($s)' => ->(args) { s = args[0].assert_string }
                      })
  s.text
rescue Sass::CompileError => e
  raise Sass::ScriptError.new(e.message), cause: nil
end