R/sport_data_parser.R

#' @import R6
#' @export
SportDataParser <- R6::R6Class(
  "SportDataParser",
  public = list(
    initialize = function(
      config = list(), read_f = function(env){}, transform_f = function(env){},
      write_f = function(env){}, read_p = list(), transform_p = list(),
      write_p = list()
    ){
      private$config_ <- config
      edsrutils::r6_method_reassign(private, 'read_', read_f)
      edsrutils::r6_method_reassign(private, 'transform_', transform_f)
      edsrutils::r6_method_reassign(private, 'write_', write_f)
      private$read_p_ <- read_p
      private$transform_p_ <- transform_p
      private$write_p_ <- write_p
    },
    cycle = function(){
      env <- self$.__enclos_env__
      private$read_(env)
      if (length(private$in_data_) > 0){
        private$transform_(env)
        private$write_(env)
      }else{
        cat('Sleeping for', private$read_p_$sleep_secs,'seconds...\n')
        Sys.sleep(private$read_p_$sleep_secs)
      }
      return(invisible(self))
    },
    read = function(){
      env <- self$.__enclos_env__
      private$read_(env)
      return(invisible(self))
    },
    transform = function(){
      env <- self$.__enclos_env__
      private$transform_(env)
      return(invisible(self))
    },
    write = function(){
      env <- self$.__enclos_env__
      private$write_(env)
      return(invisible(self))
    },
    in_data = function(){
      env <- self$.__enclos_env__
      return(private$in_data_)
    },
    out_data = function(){
      env <- self$.__enclos_env__
      return(private$out_data_)
    }
  ),
  active = list(
    config = function(value){
      if (missing(value)) return(private$config_) else private$config_ <- value
    },
    read_p = function(value){
      if (missing(value)) return(private$read_p_) else private$read_p_ <- value
    },
    transform_p = function(value){
      if (missing(value)){
        return(private$transform_p_)
      }else{
        private$transform_p_ <- value
      }
    },
    write_p = function(value){
      if (missing(value)){
        return(private$write_p_)
      }else{
        private$write_p_ <- value
      }
    },
    read_f = function(fn){
      if (missing(fn)){
        return(private$read_)
      }else{
        edsrutils::r6_method_reassign(private, 'read_', fn)
      }
    },
    transform_f = function(fn){
      if (missing(fn)){
        return(private$transform_)
      }else{
        edsrutils::r6_method_reassign(private, 'transform_', fn)
      }
    },
    write_f = function(fn){
      if (missing(fn)){
        return(private$write_)
      }else{
        edsrutils::r6_method_reassign(private, 'write_', fn)
      }
    }
  ),
  private = list(
    config_ = list(),
    in_data_ = list(),
    out_data_ = list(),
    read_p_ = list(),
    transform_p_ = list(),
    write_p_ = list(),
    read_ = function(env){},
    transform_ = function(env){},
    write_ = function(env){}
  )
)
EntirelyDS/edsrparsing documentation built on May 6, 2019, 3:48 p.m.