library

package
v0.0.0-...-50a66e4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 5, 2017 License: MIT Imports: 0 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Modules = []string{
	`module Enum

  let size = func (array: Array) -> Int
    var count = 0
    for v in array
      count += 1
    end
    count
  end

  let empty? = func (array: Array) -> Bool
    size(array) == 0
  end

  let reverse = func (array: Array) -> Array
    var reversed = []
    for i in size(array)-1..0
      reversed[] = array[i]
    end
    reversed
  end

  let first = func (array: Array)
    array[0]
  end

  let last = func array: Array
    array[size(array) - 1]
  end

  let insert = func (array: Array, el) -> Array
    array[] = el
  end

  let delete = func (array: Array, index) -> Array
    var purged = []
    for i, v in array
      if i != index
        purged[] = v
      end
    end
    purged
  end

  let map = func (array: Array, fn: Function) -> Array
    for v in array
      fn(v)
    end
  end

  let filter = func (array: Array, fn: Function) -> Array
    var filtered = []
    for v in array
      if fn(v)
        filtered[] = v
      end
    end
    filtered
  end

  let reduce = func (array: Function, start, fn: Function)
    var acc = start
    for v in array
      acc = fn(v, acc)
    end
    return acc
  end

  let find = func (array: Array, fn: Function)
    for v in array
      if fn(v)
        return v
      end
    end
    nil
  end

  let contains? = func (array: Array, search) -> Bool
    for v in array
      if v == search
        return true
      end
    end
    false
  end

  let unique = func (array: Array) -> Array
    var filtered = []
    var hash = [=>]
    for i, v in array
      if hash[v] == nil
        hash[v] = i
        filtered[] = v
      end
    end
    filtered
  end

  let random = func (array: Array)
    var rnd = rand(0, size(array) - 1)
    array[rnd]
  end

end`,

	`module Math

  let pi = 3.14159265359
  let e = 2.718281828459

  let floor = func (nr: Float) -> Int
    Int(nr - nr % 1)
  end

  let ceil = func (nr: Float) -> Int
    let rem = nr % 1
    if rem == 0
      return Int(nr)
    end
    nr > 0 ? Int(nr + (1 - rem)) : Int(nr - (1 + rem))
  end

  let max = func (nr1, nr2)
    if !Type.isNumber?(nr1) || !Type.isNumber?(nr2)
      panic("Math.max() expects a Float or Int")
    end

    return nr1 > nr2 ? nr1 : nr2
  end

  let min = func (nr1, nr2)
    if !Type.isNumber?(nr1) || !Type.isNumber?(nr2)
      panic("Math.min() expects a Float or Int")
    end

    return nr1 > nr2 ? nr2 : nr1
  end

  let random = func (min: Int, max: Int) -> Int
    runtime_rand(min, max)
  end

  let abs = func (nr)
    if !Type.isNumber?(nr)
      panic("Math.abs() expects a Float or Int")
    end

    if nr < 0
      return -nr
    end
    nr
  end

  let pow = func (nr, exp)
    if !Type.isNumber?(nr) || !Type.isNumber?(exp)
      panic("Math.pow() expects a Float or Int")
    end

    nr ** exp
  end

end`,

	`module Type

  let of = func x
    typeof(x)
  end

  let isNumber? = func x
    if typeof(x) == "Float" || typeof(x) == "Int"
      return true
    end
    false
  end

  let toString = func x
    String(x)
  end

  let toInt = func x
    Int(x)
  end

  let toFloat = func x
    Float(x)
  end

  let toArray = func x
    Array(x)
  end

end`,

	`module Dict
  let size = func (dict: Dictionary) -> Int
    var count = 0
    for v in dict
      count += 1
    end
    count
  end

  let contains? = func (dict: Dictionary, key) -> Bool
    for k, v in dict
      if k == key
        return true
      end
    end
    false
  end

  let empty? = func (dict: Dictionary) -> Bool
    size(dict) == 0
  end

  let insert = func (dict: Dictionary, key, value) -> Dictionary
    if dict[key] != nil
      panic("Dictionary key '" + String(key) + "' already exists")
    end

    dict[key] = value
  end

  let update = func (dict: Dictionary, key, value) -> Dictionary
    if dict[key] == nil
      panic("Dictionary key '" + String(key) + "' doesn't exist")
    end

    dict[key] = value
  end

  let delete = func (dict: Dictionary, key) -> Dictionary
    if dict[key] == nil
      panic("Dictionary key '" + String(key) + "' doesn't exist")
    end

    var purged = [=>]
    for k, v in dict
      if k != key
        purged[k] = v
      end
    end
    purged
  end
end`,

	`module String

  let count = func (str: String) -> Int
    var cnt = 0
    for v in str
      cnt += 1
    end
    cnt
  end

  let first = func (str: String) -> String
    str[0]
  end

  let last = func (str: String) -> String
    str[String.count(str) - 1]
  end

  let lower = func (str: String) -> String
    runtime_tolower(str)
  end

  let upper = func (str: String) -> String
    runtime_toupper(str)
  end

  let capitalize = func (str: String) -> String
    var title = str
    for i, v in str
      if i == 0 || str[i - 1] != nil && str[i - 1] == " "
        title[i] = String.upper(v)
      end
    end
    title
  end

  let reverse = func (str: String) -> String
    var reversed = ""
    for i in String.count(str)-1..0
      reversed += str[i]
    end
    reversed
  end

  let slice = func (str: String, start: Int, length: Int) -> String
    if start < 0 || length < 0
      panic("String.slice() expects positive start and length parameters")
    end

    var sliced = ""
    var chars = 0
    for i, v in str
      if i >= start && chars < length
        sliced += v
        chars += 1
      end
    end
    sliced
  end

  let trim = func (str: String, subset: String) -> String
    var trimmed = str
    var left = false
    var right = false

    for i, v in subset
      if trimmed[0] == v && !left
        trimmed = String.slice(trimmed, 1, String.count(trimmed))
        left = true
      end

      if String.last(trimmed) == v && !right
        trimmed = String.slice(trimmed, 0, String.count(trimmed) - 1)
        right = true
      end

      if left && right
        break
      end
    end

    trimmed
  end

  let trimLeft = func (str: String, subset: String) -> String
    var trimmed = str
    for v in subset
      if trimmed[0] == v
        trimmed = String.slice(trimmed, 1, String.count(trimmed))
        break
      end
    end

    trimmed
  end

  let trimRight = func (str: String, subset: String) -> String
    var trimmed = str
    for v in subset
      if String.last(trimmed) == v
        trimmed = String.slice(trimmed, 0, String.count(trimmed) - 1)
        break
      end
    end

    trimmed
  end

  let join = func (array: Array, glue: String) -> String
    var glued = ""
    for v in array
      glued += v + glue
    end

    if String.count(glued) > String.count(glue)
      return String.slice(glued, 0, String.count(glued) - String.count(glue))
    end

    glued
  end

  let split  = func (str: String, separator: String) -> Array
    let count_sep = String.count(separator)
    var array = []
    var last_index = 0

    for i, v in str
        if String.slice(str, i, count_sep) == separator
          var curr = String.slice(str, last_index, i - last_index)
          if curr != ""
            array[] = curr
          end
          last_index = i + count_sep
        end
    end

    array[] = String.slice(str, last_index, String.count(str))

    array
  end

  let starts? = func (str: String, prefix: String) -> Bool
    if String.count(str) < String.count(prefix)
      return false
    end

    if String.slice(str, 0, String.count(prefix)) == prefix
      return true
    end

    false
  end

  let ends? = func (str: String, suffix: String) -> Bool
    if String.count(str) < String.count(suffix)
      return false
    end

    if String.slice(str, String.count(str) - String.count(suffix), String.count(str)) == suffix
      return true
    end

    false
  end

  let contains? = func (str: String, search: String) -> Bool
    for i, v in str
      if String.slice(str, i, String.count(search)) == search
        return true
      end
    end
    false
  end

  let replace = func (str: String, search: String, replace: String) -> String
    let count_search = String.count(search)
    var rpl = ""
    var last_index = 0

    for i, v in str
      if String.slice(str, i, count_search) == search
        rpl = rpl + String.slice(str, last_index, i - last_index) + replace
        last_index = i + count_search
      end
    end

    rpl + String.slice(str, last_index, String.count(str))
  end

  let match? = func (str: String, regex: String) -> Bool
    runtime_regex_match(str, regex)
  end

end`,
}

There are alternatives to include static assets in the Go binary, but didn't want to use external libraries. For the moment, this is the only good solution I can think of.

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL