# Counters

`whereami` stores in counters when a `whereami` call was invoked in a script during a session. This information can be used in control reactivity in shiny app development and testing.

Below shows the basics of accessing and controlling counters.

    library(whereami)

    txt_1 <- "
    whereami::cat_where(whereami::whereami(tag = 'tag1'))
    "

    txt_2 <- "whereami::cat_where(whereami::whereami(tag = 'tag2'))"

    tf_1 <- tempfile(fileext = '.R')
    tf_2 <- tempfile(fileext = '.R')

    cat(txt_1,file = tf_1)
    cat(txt_2,file = tf_2)

    source(tf_1)
    source(tf_2)

## Query Counter State

    # All counters
    counter_state()

    # A single counter
    counter_state(tag = 'tag1')

## Accessing Counters

    # Counter names
    counter_names()

    # Counter tags
    counter_tags()

## Retrieve Counters

    counters <- counter_get()

    counters

## Manipulating Counters

Using `counter_reset` and `counter_state` in a loop

    for( i in 1:10 ){

      source(tf_1)
      source(tf_2)

      if( counter_state(tag = 'tag1') > 5 )
        counter_reset(tag = 'tag2')
    }

## Plot Method

    plot(counter_get())

## json logs

A json log of the counter is written to `file.path(tempdir(),'whereami.json')` by default. The path can be set using `set_whereami_log()`.

    jsonlite::read_json(
    file.path(tempdir(),'whereami.json'),
    simplifyVector = TRUE)

## Clear all counters

    counter_reset()

Verify that there are no active counters.

    counter_state()