Sha256: 323d064e756348765078c6d9b5701c8a7dea0aaba72d729d43ee0a214c35b35c

Contents?: true

Size: 1.35 KB

Versions: 93

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

class SassC::Script::Value::Map < SassC::Script::Value

  # The Ruby hash containing the contents of this map.
  # @return [Hash<Node, Node>]
  attr_reader :value
  alias_method :to_h, :value

  # Creates a new map.
  #
  # @param hash [Hash<Node, Node>]
  def initialize(hash)
    super(hash)
  end

  # @see Value#options=
  def options=(options)
    super
    value.each do |k, v|
      k.options = options
      v.options = options
    end
  end

  # @see Value#separator
  def separator
    :comma unless value.empty?
  end

  # @see Value#to_a
  def to_a
    value.map do |k, v|
      list = SassC::Script::Value::List.new([k, v], separator: :space)
      list.options = options
      list
    end
  end

  # @see Value#eq
  def eq(other)
    SassC::Script::Value::Bool.new(other.is_a?(Map) && value == other.value)
  end

  def hash
    @hash ||= value.hash
  end

  # @see Value#to_s
  def to_s(opts = {})
    raise SassC::SyntaxError.new("#{inspect} isn't a valid CSS value.")
  end

  def to_sass(opts = {})
    return "()" if value.empty?

    to_sass = lambda do |value|
      if value.is_a?(List) && value.separator == :comma
        "(#{value.to_sass(opts)})"
      else
        value.to_sass(opts)
      end
    end

    "(#{value.map {|(k, v)| "#{to_sass[k]}: #{to_sass[v]}"}.join(', ')})"
  end
  alias_method :inspect, :to_sass

end

Version data entries

93 entries across 77 versions & 7 rubygems

Version Path
sassc-2.1.0.pre3 lib/sassc/script/value/map.rb
sassc-2.1.0.pre2-x86_64-linux lib/sassc/script/value/map.rb
sassc-2.1.0.pre2-x86-mingw32 lib/sassc/script/value/map.rb
sassc-2.1.0.pre2-x86-linux lib/sassc/script/value/map.rb
sassc-2.1.0.pre2-x64-mingw32 lib/sassc/script/value/map.rb
sassc-2.1.0.pre2 lib/sassc/script/value/map.rb
sassc-2.1.0.pre1-x86_64-linux lib/sassc/script/value/map.rb
sassc-2.1.0.pre1-x86-mingw32 lib/sassc/script/value/map.rb
sassc-2.1.0.pre1-x86-linux lib/sassc/script/value/map.rb
sassc-2.1.0.pre1-x64-mingw32 lib/sassc/script/value/map.rb
sassc-2.1.0.pre1 lib/sassc/script/value/map.rb
sassc-2.0.1 lib/sassc/script/value/map.rb
sassc-2.0.0 lib/sassc/script/value/map.rb