# idemo.r -- in-class demonstration function.
# Created 01/31/2001 by Motoya Machida

idemo <- function(fname=file.choose()){
  visnames <- c("names", "summary", "mean", "median", "var", "sd",
                "length", "t.test", "model.tables.aov", "data.frame", "table")

  codes <- scan(fname, what="", sep='\n', comment.char="")
  n <- length(codes)
  cat("Execute R programming codes from \"", fname, "\".\n\n", sep="")

  for(i in 1:n){
    nlen <- 1:nchar(codes[i])
    linst <- substring(codes[i],nlen,nlen)

    if(linst[1] == "#"){
      cat(codes[i])
    }
    else{
      cat("> ", codes[i], sep="")
      readline()

      if(length(grep("<-", codes[i])) > 0){
        eval(parse(text=codes[i]))
      }
      else{
        paren <- match("(", linst)
        if(is.na(paren)){
          print(eval(parse(text=codes[i])))
        }
        else{
          funname <- paste(linst[1:(paren-1)], collapse="")
          if(is.na(match(funname, visnames)))  eval(parse(text=codes[i]))
          else                                 print(eval(parse(text=codes[i])))
        }
      }
    }
    readline()
  }
  cat("> \n\nCompleted.\n\n")
}

# idemo()



