Mercurial > repos > prog > lcmsmatching
view BiodbObject.R @ 2:20d69a062da3 draft
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit d4048accde6bdfd5b3e14f5394902d38991854f8
author | prog |
---|---|
date | Thu, 02 Mar 2017 08:55:00 -0500 |
parents | |
children |
line wrap: on
line source
########################## # CLASS DECLARATION {{{1 # ########################## BiodbObject <- methods::setRefClass("BiodbObject", fields = list( .observers = "ANY" )) ######################## # ABSTRACT METHOD {{{1 # ######################## BiodbObject$methods( .abstract.method = function() { class <- class(.self) method <- sys.call(length(sys.calls()) - 1) method <- sub('^[^$]*\\$([^(]*)\\(.*$', '\\1()', method) stop(paste("Method", method, "is not implemented in", class, "class.")) }) ###################### # ADD OBSERVERS {{{1 # ###################### BiodbObject$methods( addObservers = function(obs) { # Check types of observers if ( ( ! is.list(obs) && ! inherits(obs, "BiodbObserver")) || (is.list(obs) && any( ! vapply(obs, function(o) inherits(o, "BiodbObserver"), FUN.VALUE = TRUE)))) stop("Observers must inherit from BiodbObserver class.") # Add observers to current list .observers <<- if (is.null(.self$.observers)) c(obs) else c(.self$.observers, obs) })