Integrating the bindings
Because of what we did in the last section, this will be the easiest part of the chapter, with the only remaining question being: what notification do we want to emit? A good use case for it would be to emit one when there is an error during the transformation process. The notification would get the user's attention that they need to take action on something that otherwise may have gone unnoticed if it was expected to take a while.
Now you might be thinking that we just instantiate new NotificationEmitter
instances as needed and use them for each context. However, we are going to take a slightly different approach. The plan is to add an initializer to our Processor
type that will keep a reference to an emitter as an instance variable. This would look like def initialize(@emitter : Transform::NotificationEmitter = Transform::NotificationEmitter.new); end
. I am going to hold off on explaining the reasoning behind this as it will be covered in Chapter...