module Sass::Script::Functions

Public Instance Methods

exp(modulus, exponent) click to toggle source
# File lib/rhet-butler/sass-functions.rb, line 6
def exp(modulus, exponent)
  assert_type modulus, :Number
  assert_type exponent, :Number

  Number.new(modulus.value ** exponent.value, modulus.numerator_units, modulus.denominator_units)
end
tween(initial, final, ratio) click to toggle source
# File lib/rhet-butler/sass-functions.rb, line 14
def tween(initial, final, ratio)
  assert_type initial, :Number
  assert_type final, :Number
  assert_type ratio, :Number

  initial_units = [initial.numerator_units, initial.denominator_units]
  final_units = [final.numerator_units, final.denominator_units]
  unless initial_units == final_units
    raise ArgumentError, "Mismatched units: initial: #{initial_units.inspect} != final: #{final_units.inspect}"
  end

  ratio_units = ratio.numerator_units - ratio.denominator_units
  ratio_value = case ratio_units
                when %w{%}
                  ratio.value / 100.0
                when []
                  ratio.value
                else
                  raise ArgumentError, "Bad units for ratio: #{ratio_units.inspect}"
                end

  Number.new(initial.value + ((final.value - initial.value) * ratio_value), *initial_units)
end