observable alternatives and similar shards
Based on the "Misc" category.
Alternatively, view observable alternatives based on common mentions on social networks and blogs.
-
burocracia.cr
burocracia.cr the dependecyless shard to validate, generate and format Brazilian burocracias such as CPF, CNPJ and CEP -
anyolite
Full mruby interpreter with simple bindings, allowing for easy scripting support in projects -
crystal-web-framework-stars
Web frameworks for Crystal, most starred on Github -
message_verifier.cr
Verify and generate Rails ActiveSupport::MessageVerifier signed tokens
Get performance insights in less than 4 minutes
Do you think we are missing an alternative of observable or a related project?
README
observable 
Simple implementation of the Observer pattern in Crystal. It is loosely based on the Observable module from Ruby :)
The observer pattern is used to avoid tightly coupling objects that stand in a one-to-many relationship. It allows you to notify dependents about changes that happened to your object, without having hard-coded dependencies :)
Installation
Add to your shard.yml
dependencies:
observable:
github: tpei/observable
branch: master
and then install the library into your project with
$ crystal deps
Usage
Include observable in the class you want to observe:
require "observable/observable"
class ToObserve
include Observable
end
This provides you with the following methods:
add_observer(observer : Observer)
changed(state=true)
changed?
count_observers
delete_observer(observer : Observer)
delete_observers
notify_observers
and as an added bonus, because I dislike the forced changed
call precondition:
notify_observers!
, which notifies no matter if changed or not
Then you can include observer in the class you want observing:
require "observable/observer"
class Observing
include Observer
def update(observable : Observable)
# do whatever you want to do if your observable changes
end
end
This only gives you an update(observable : Observable)
method you should override, because it willl raise an error otherwise.
Unfortunately we don't have ruby's verbosity and dynamism here so it's all a little more static. Especially the update
method can really only pass on the observable
object.