## ----installation, eval=FALSE-------------------------------------------------
#  if (!requireNamespace("BiocManager", quietly = TRUE))
#      install.packages("BiocManager")
#  BiocManager::install("BiocIO")

## ----library------------------------------------------------------------------
library("BiocIO")

## ----importexportGeneirc------------------------------------------------------
getGeneric("import")
getGeneric("export")

## ----warningExample, eval=FALSE-----------------------------------------------
#  file <- tempfile(fileext = ".loom")
#  LoomFile(file)
#  
#  ### LoomFile object
#  ### resource: file.loom
#  ### Warning messages:
#  ### 1: This class is extending the deprecated RTLFile class from
#  ###     rtracklayer. Use BiocFile from BiocIO in place of RTLFile.
#  ### 2: Use BiocIO::resource()

## ----replaceExample, eval=FALSE-----------------------------------------------
#  ## Old
#  setClass('LoomFile', contains='RTLFile')
#  
#  ## New
#  setClass('LoomFile', contains='BiocFile')

## ----defineCSVFile------------------------------------------------------------
.CSVFile <- setClass("CSVFile", contains = "BiocFile")

CSVFile <- function(resource) .CSVFile(resource = resource)

## ----defineImportExport-------------------------------------------------------
setMethod("import", "CSVFile", function(con, format, text, ...) {
    read.csv(resource(con), ...)
})

setMethod("export", c("data.frame", "CSVFile"),
    function(object, con, format, ...) {
        write.csv(object, resource(con), ...)
    }
)

## ----demonstrateCSV-----------------------------------------------------------
temp <- tempfile(fileext = ".csv")
csv <- CSVFile(temp)

export(mtcars, csv)
df <- import(csv)

## ----sessionInfo, echo=FALSE--------------------------------------------------
sessionInfo()

