Skip to content

Instantly share code, notes, and snippets.

@azenla
Created February 6, 2014 00:18
Show Gist options
  • Select an option

  • Save azenla/8836100 to your computer and use it in GitHub Desktop.

Select an option

Save azenla/8836100 to your computer and use it in GitHub Desktop.
State Container
package org.nanobot
/**
* Holds basic on/off statuses for different parts of a bot
*/
class StateContainer {
private final Map<String, Boolean> states = [:]
void on(String name) {
states[name] = true
}
void off(String name) {
states[name] = false
}
boolean has(String name) {
return states[name] ?: false
}
void toggle(String name) {
states[name] = !has(name)
}
void reset() {
states.clear()
}
Set<String> current() {
return states.findAll {
it.value
}.keySet().asImmutable() // Immutable to prevent people from modifying states in bulk
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment