module Flint

Constants

VERSION

Public Class Methods

declare(*args) click to toggle source
# File lib/flint/functions.rb, line 3
def self.declare(*args)
  Sass::Script::Functions.declare(*args)
end

Public Instance Methods

flint_ruby_list_to_str(list, glue) click to toggle source

Joins all elements of list with passed glue

@param {List} list @param {String} glue

@return {String}

# File lib/flint/functions.rb, line 46
def flint_ruby_list_to_str(list, glue)
  assert_type list, :List, :list
  assert_type glue, :String, :glue

  arr = list.to_a.flatten.map { |item| item.value }

  Sass::Script::String.new(arr.join(glue.value))
end
flint_ruby_map_fetch(map, *keys) click to toggle source

Fetch value from map

@param {Map} map - map to fetch value from @param {ArgList} keys - list of keys to traverse

@return {*}

# File lib/flint/functions.rb, line 24
def flint_ruby_map_fetch(map, *keys)
  assert_type map, :Map, :map

  result = map
  keys.each { |key| result.nil? ? break : result = result.to_h.fetch(key, nil) }

  unless result.nil?
    result
  else
    Sass::Script::Bool.new(false)
  end
end
flint_ruby_str_replace(string, find, replace) click to toggle source

Replace substring with string

@param {String} string - string that contains substring @param {String} find - substring to replace @param {String} replace - new string to replace sub with

@return {String}

# File lib/flint/functions.rb, line 90
def flint_ruby_str_replace(string, find, replace)
  assert_type string, :String, :string
  assert_type find, :String, :find
  assert_type replace, :String, :replace

  Sass::Script::String.new(string.value.gsub(find.value, replace.value))
end
flint_ruby_str_to_list(string, separator, ignore) click to toggle source

Turn string into a flat list

@param {String} string - string to operate on @param {String} separator - item to find which separates substrings @param {String} ignore - removes remaining string beyond item

@return {List}

# File lib/flint/functions.rb, line 65
def flint_ruby_str_to_list(string, separator, ignore)
  assert_type string, :String, :string
  assert_type separator, :String, :separator
  assert_type ignore, :String, :ignore

  # Remove everything after ignore, split with separator
  items = string.value[/[^#{ignore}]+/].split(separator.value)

  if items.count == 1
    Sass::Script::String.new(items[0], :comma)
  else
    Sass::Script::List.new(items.map { |i| Sass::Script::String.new(i) }, :comma)
  end
end
flint_use_ruby() click to toggle source

Use ruby functions

@return {Bool}

# File lib/flint/functions.rb, line 12
def flint_use_ruby()
  Sass::Script::Bool.new(true)
end