Mercurial > repos > prog > lcmsmatching
view BiodbObject.R @ 3:f61ce21ed17c draft
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit 476a081c0da66822f4e77070f5ce59d9f14511f4-dirty
author | prog |
---|---|
date | Thu, 02 Mar 2017 11:07:56 -0500 |
parents | 20d69a062da3 |
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) })