src/happyx/spa/state

Search:
Group by:

State 🍍

Provides reactivity states

Usage ⚡

var
  lvl = remember 1
  exp = remember 0
  maxExp = remember 10
  name = remember "Ethosa"

appRoutes("app"):
  "/":
    tDiv:
      "Hello, {name}, your level is {lvl} [{exp}/{maxExp}]"
    tButton:
      "Increase exp"
      @click:
        exp += 1
        while exp >= maxExp:
          exp -= maxExp
          lvl += 1
          maxExp += 5

Types

State[T] = ref object
  val*: T
  watchers*: seq[StateChangeHandler[T]]
StateChangeHandler[T] = proc (newVal, oldVal: T)

Vars

enableRouting = true
Low-level API to disable/enable routing

Procs

func `!`[T](b`gensym10: T; self`gensym10: State[T]): T
func `!`[T](self`gensym10, b`gensym10: State[T]): T
func `!`[T](self`gensym10: State[T]; b`gensym10: T): T
proc `!=`[T](self`gensym1, b`gensym1: State[T]): bool
proc `!=`[T](self`gensym1: State[T]; b`gensym1: T): bool
func `$`[T](self: State[T]): string
Returns State's string representation
func `%`[T](b`gensym12: T; self`gensym12: State[T]): T
func `%`[T](self`gensym12, b`gensym12: State[T]): T
func `%`[T](self`gensym12: State[T]; b`gensym12: T): T
func `&`[T](b`gensym5: T; self`gensym5: State[T]): T
func `&`[T](self`gensym5, b`gensym5: State[T]): T
func `&`[T](self`gensym5: State[T]; b`gensym5: T): T
func `*`[T](b`gensym8: T; self`gensym8: State[T]): T
func `*`[T](self`gensym8, b`gensym8: State[T]): T
func `*`[T](self`gensym8: State[T]; b`gensym8: T): T
func `+`[T](b`gensym6: T; self`gensym6: State[T]): T
func `+`[T](self`gensym6, b`gensym6: State[T]): T
func `+`[T](self`gensym6: State[T]; b`gensym6: T): T
func `-`[T](b`gensym7: T; self`gensym7: State[T]): T
func `-`[T](self`gensym7, b`gensym7: State[T]): T
func `-`[T](self`gensym7: State[T]; b`gensym7: T): T
func `/`[T](b`gensym9: T; self`gensym9: State[T]): T
func `/`[T](self`gensym9, b`gensym9: State[T]): T
func `/`[T](self`gensym9: State[T]; b`gensym9: T): T
func `<`[T](b`gensym15: T; self`gensym15: State[T]): T
func `<`[T](self`gensym15, b`gensym15: State[T]): T
func `<`[T](self`gensym15: State[T]; b`gensym15: T): T
proc `<=`[T](self`gensym3, b`gensym3: State[T]): bool
proc `<=`[T](self`gensym3: State[T]; b`gensym3: T): bool
proc `==`[T](self`gensym0, b`gensym0: State[T]): bool
proc `==`[T](self`gensym0: State[T]; b`gensym0: T): bool
func `>`[T](b`gensym14: T; self`gensym14: State[T]): T
func `>`[T](self`gensym14, b`gensym14: State[T]): T
func `>`[T](self`gensym14: State[T]; b`gensym14: T): T
proc `>=`[T](self`gensym2, b`gensym2: State[T]): bool
proc `>=`[T](self`gensym2: State[T]; b`gensym2: T): bool
func `@`[T](b`gensym13: T; self`gensym13: State[T]): T
func `@`[T](self`gensym13, b`gensym13: State[T]): T
func `@`[T](self`gensym13: State[T]; b`gensym13: T): T
func `[]`(self: State[StringTableRef]; idx: string): string {.
    ...raises: [KeyError], tags: [], forbids: [].}
func `[]`[T, U](self: State[array[T, U]]; idx: int): T
Returns State's item at idx index.
func `[]`[T, U](self: State[array[T, U]]; idx: State[int]): T
Returns State's item at idx index.
func `[]`[T, U](self: State[TableRef[T, U]]; idx: T): U
Returns State's item at idx index.
func `[]`[T](self: State[seq[T]]; idx: int): T
Returns State's item at idx index.
func `[]`[T](self: State[seq[T]]; idx: State[int]): T
Returns State's item at idx index.
func `^`[T](b`gensym11: T; self`gensym11: State[T]): T
func `^`[T](self`gensym11, b`gensym11: State[T]): T
func `^`[T](self`gensym11: State[T]; b`gensym11: T): T
func get[T](self: State[T]): T
Returns state value Alias for val
func high[T](self: State[T]): int
Returns state value length
func len[T](self: State[T]): int
Returns state value length
func low[T](self: State[T]): int
Returns state value length
proc `not`[T](self`gensym4: State[T]): bool
func remember[T](val: T): State[T]
Creates a new state
proc set(settings: var LanguageSettings; lang: string) {....raises: [], tags: [],
    forbids: [].}
func watchImpl[T](state: State[T]; o, n: T)

Iterators

iterator items[T](self: State[openArray[T]]): T
Iterate over state items
iterator pairs[T, U](self: State[TableRef[T, U]]): (T, U)
Iterate over state items

Converters

converter toBool(self: State[bool]): bool {....raises: [], tags: [], forbids: [].}
Converts State into boolean if possible
converter toChar(self: State[char]): char {....raises: [], tags: [], forbids: [].}
Converts State into char if possible
converter toCString(self: State[cstring]): cstring {....raises: [], tags: [],
    forbids: [].}
Converts State into cstring if possible
converter toFloat(self: State[float]): float {....raises: [], tags: [], forbids: [].}
Converts State into float if possible
converter toFloat32(self: State[float32]): float32 {....raises: [], tags: [],
    forbids: [].}
Converts State into float32 if possible
converter toFloat64(self: State[float64]): float64 {....raises: [], tags: [],
    forbids: [].}
Converts State into float64 if possible
converter toInt(self: State[int]): int {....raises: [], tags: [], forbids: [].}
Converts State into int if possible
converter toInt8(self: State[int8]): int8 {....raises: [], tags: [], forbids: [].}
Converts State into int8 if possible
converter toInt16(self: State[int16]): int16 {....raises: [], tags: [], forbids: [].}
Converts State into int16 if possible
converter toInt32(self: State[int32]): int32 {....raises: [], tags: [], forbids: [].}
Converts State into int32 if possible
converter toInt64(self: State[int64]): int64 {....raises: [], tags: [], forbids: [].}
Converts State into int64 if possible
converter toSeq[T](self: State[seq[T]]): seq[T]
Converts State into seq[T] if possible
converter toString(self: State[string]): string {....raises: [], tags: [],
    forbids: [].}
Converts State into string if possible

Macros

macro `->`(a: State; field: untyped): untyped
Call any function that available for state value

Examples:

Seqs:

var arr: State[seq[int]] = remember @[]
arr->add(1)
echo arr

int:

var num = remember 0
num->inc()
echo num
macro watch(state, newVal, oldVal, body: untyped): untyped
Watch every value changing

Templates

template `$=`[T](a`gensym23: State[T]; b`gensym23: State[T])
template `$=`[T](a`gensym23: State[T]; b`gensym23: T)
template `$=`[T](b`gensym23: T; a`gensym23: State[T])
template `%=`[T](a`gensym22: State[T]; b`gensym22: State[T])
template `%=`[T](a`gensym22: State[T]; b`gensym22: T)
template `%=`[T](b`gensym22: T; a`gensym22: State[T])
template `&=`[T](a`gensym21: State[T]; b`gensym21: State[T])
template `&=`[T](a`gensym21: State[T]; b`gensym21: T)
template `&=`[T](b`gensym21: T; a`gensym21: State[T])
template `*=`[T](a`gensym16: State[T]; b`gensym16: State[T])
template `*=`[T](a`gensym16: State[T]; b`gensym16: T)
template `*=`[T](b`gensym16: T; a`gensym16: State[T])
template `+=`[T](a`gensym17: State[T]; b`gensym17: State[T])
template `+=`[T](a`gensym17: State[T]; b`gensym17: T)
template `+=`[T](b`gensym17: T; a`gensym17: State[T])
template `-=`[T](a`gensym18: State[T]; b`gensym18: State[T])
template `-=`[T](a`gensym18: State[T]; b`gensym18: T)
template `-=`[T](b`gensym18: T; a`gensym18: State[T])
template `/=`[T](a`gensym19: State[T]; b`gensym19: State[T])
template `/=`[T](a`gensym19: State[T]; b`gensym19: T)
template `/=`[T](b`gensym19: T; a`gensym19: State[T])
template `:=`[T](a`gensym25: State[T]; b`gensym25: State[T])
template `:=`[T](a`gensym25: State[T]; b`gensym25: T)
template `:=`[T](b`gensym25: T; a`gensym25: State[T])
template `@=`[T](a`gensym24: State[T]; b`gensym24: State[T])
template `@=`[T](a`gensym24: State[T]; b`gensym24: T)
template `@=`[T](b`gensym24: T; a`gensym24: State[T])
template `[]=`(a: State[StringTableRef]; idx: string; value: string)
Changes State's item at idx index.
template `[]=`[T, U](a: State[array[T, U]]; idx: int; value: T)
Changes State's item at idx index.
template `[]=`[T, U](a: State[TableRef[T, U]]; idx: T; value: U)
Changes State's item at idx index.
template `[]=`[T](a: State[seq[T]]; idx: int; value: T)
Changes State's item at idx index.
template `^=`[T](a`gensym20: State[T]; b`gensym20: State[T])
template `^=`[T](a`gensym20: State[T]; b`gensym20: T)
template `^=`[T](b`gensym20: T; a`gensym20: State[T])
template set[T](a: State[T]; value: T)
Changes state value and rerenders SPA
template val=[T](a: State[T]; value: T)
Changes state value
template `|=`[T](a`gensym26: State[T]; b`gensym26: State[T])
template `|=`[T](a`gensym26: State[T]; b`gensym26: T)
template `|=`[T](b`gensym26: T; a`gensym26: State[T])
template `~=`[T](a`gensym27: State[T]; b`gensym27: State[T])
template `~=`[T](a`gensym27: State[T]; b`gensym27: T)
template `~=`[T](b`gensym27: T; a`gensym27: State[T])