Module: Sass::Script::Value::Helpers

Included in:
Functions::EvaluationContext
Defined in:
lib/sass/script/value/helpers.rb

Overview

Provides helper functions for creating sass values from within ruby methods.

Since:

  • 3.3.0

Instance Method Summary collapse

Instance Method Details

#bool(value) ⇒ Sass::Script::Value::Bool

Construct a Sass Boolean.

Since:

  • 3.3.0



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

def bool(value)
  Bool.new(value)
end

#hex_color(value, alpha = nil) ⇒ Sass::Script::Value::Color

Construct a Sass Color from a hex color string.

Since:

  • 3.3.0



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

def hex_color(value, alpha = nil)
  Color.from_hex(value, alpha)
end

#hsl_color(hue, saturation, lightness, alpha = nil) ⇒ Sass::Script::Value::Color

Construct a Sass Color from hsl values.

Since:

  • 3.3.0



34
35
36
37
38
# File 'lib/sass/script/value/helpers.rb', line 34

def hsl_color(hue, saturation, lightness, alpha = nil)
  attrs = {:hue => hue, :saturation => saturation, :lightness => lightness}
  attrs[:alpha] = alpha if alpha
  Color.new(attrs)
end

#list(*elements, separator) ⇒ Sass::Script::Value::List #list(array, separator) ⇒ Sass::Script::Value::List

Overloads:

Since:

  • 3.3.0



80
81
82
83
84
85
86
87
88
89
# File 'lib/sass/script/value/helpers.rb', line 80

def list(*elements)
  unless elements.last.is_a?(Symbol)
    raise ArgumentError.new("A list type of :space or :comma must be specified.")
  end
  separator = elements.pop
  if elements.size == 1 && elements.first.is_a?(Array)
    elements = elements.first
  end
  Sass::Script::Value::List.new(elements, separator)
end

#map(hash) ⇒ Sass::Script::Value::Map

Construct a Sass map.

Since:

  • 3.3.0



96
97
98
# File 'lib/sass/script/value/helpers.rb', line 96

def map(hash)
  Map.new(hash)
end

#nullSass::Script::Value::Null

Create a sass null value.

Since:

  • 3.3.0



103
104
105
# File 'lib/sass/script/value/helpers.rb', line 103

def null
  Sass::Script::Value::Null.new
end

#number(number, unit_string = nil) ⇒ Sass::Script::Value::Number

Construct a Sass Number from a ruby number.

See Also:

Since:

  • 3.3.0



65
66
67
# File 'lib/sass/script/value/helpers.rb', line 65

def number(number, unit_string = nil)
  Number.new(number, *parse_unit_string(unit_string))
end

#parse_complex_selector(value, name = nil, allow_parent_ref = false) ⇒ Sass::Selector::Sequence

Parses a user-provided complex selector.

A complex selector can contain combinators but cannot contain commas.

Raises:

  • (ArgumentError)

Since:

  • 3.3.0



161
162
163
164
165
166
167
168
# File 'lib/sass/script/value/helpers.rb', line 161

def parse_complex_selector(value, name = nil, allow_parent_ref = false)
  selector = parse_selector(value, name, allow_parent_ref)
  return seq if selector.members.length == 1

  err = "#{value.inspect} is not a complex selector"
  err = "$#{name.to_s.gsub('_', '-')}: #{err}" if name
  raise ArgumentError.new(err)
end

#parse_compound_selector(value, name = nil, allow_parent_ref = false) ⇒ Sass::Selector::SimpleSequence

Parses a user-provided compound selector.

A compound selector cannot contain combinators or commas.

Raises:

  • (ArgumentError)

Since:

  • 3.3.0



182
183
184
185
186
187
188
189
190
191
192
193
194
195
# File 'lib/sass/script/value/helpers.rb', line 182

def parse_compound_selector(value, name = nil, allow_parent_ref = false)
  assert_type value, :String, name
  selector = parse_selector(value, name, allow_parent_ref)
  seq = selector.members.first
  sseq = seq.members.first
  if selector.members.length == 1 && seq.members.length == 1 &&
      sseq.is_a?(Sass::Selector::SimpleSequence)
    return sseq
  end

  err = "#{value.inspect} is not a compound selector"
  err = "$#{name.to_s.gsub('_', '-')}: #{err}" if name
  raise ArgumentError.new(err)
end

#parse_selector(value, name = nil, allow_parent_ref = false) ⇒ Sass::Selector::CommaSequence

Parses a user-provided selector.

Since:

  • 3.3.0



136
137
138
139
140
141
142
143
144
145
# File 'lib/sass/script/value/helpers.rb', line 136

def parse_selector(value, name = nil, allow_parent_ref = false)
  str = normalize_selector(value, name)
  begin
    Sass::SCSS::StaticParser.new(str, nil, nil, 1, 1, allow_parent_ref).parse_selector
  rescue Sass::SyntaxError => e
    err = "#{value.inspect} is not a valid selector: #{e}"
    err = "$#{name.to_s.gsub('_', '-')}: #{err}" if name
    raise ArgumentError.new(err)
  end
end

#quoted_string(str) ⇒ Sass::Script::Value::String

Create a quoted string.

Since:

  • 3.3.0



111
112
113
# File 'lib/sass/script/value/helpers.rb', line 111

def quoted_string(str)
  Sass::Script::String.new(str, :string)
end

#rgb_color(red, green, blue, alpha = nil) ⇒ Sass::Script::Value::Color

Construct a Sass Color from rgb values.

Since:

  • 3.3.0



48
49
50
51
52
# File 'lib/sass/script/value/helpers.rb', line 48

def rgb_color(red, green, blue, alpha = nil)
  attrs = {:red => red, :green => green, :blue => blue}
  attrs[:alpha] = alpha if alpha
  Color.new(attrs)
end

#unquoted_string(str) ⇒ Sass::Script::Value::String Also known as: identifier

Create an unquoted string.

Since:

  • 3.3.0



119
120
121
# File 'lib/sass/script/value/helpers.rb', line 119

def unquoted_string(str)
  Sass::Script::String.new(str, :identifier)
end