File: dvips.R

package info (click to toggle)
r-cran-r.rsp 0.46.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,472 kB
  • sloc: javascript: 612; tcl: 304; sh: 18; makefile: 16
file content (68 lines) | stat: -rw-r--r-- 2,035 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
dvips <- function(filename, path=NULL, opts=NULL, ..., force=FALSE, verbose=FALSE) {
  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  # Validate arguments
  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  # Argument 'filename' & 'path':
  pathname <- Arguments$getReadablePathname(filename, path=path, mustExist=TRUE)

  # Argument 'opts':
  opts <- Arguments$getCharacters(opts)
  opts <- paste(opts, collapse=" ")

  # Argument 'force':
  force <- Arguments$getLogical(force)

  # Argument 'verbose':
  verbose <- Arguments$getVerbose(verbose)
  if (verbose) {
    pushState(verbose)
    on.exit(popState(verbose))
  }


  verbose && enter(verbose, "dvips")
  verbose && cat(verbose, "DVI pathname: ", pathname)

  filename <- basename(pathname)
  path <- dirname(pathname)

  filename2 <- gsub("[.]dvi", ".ps", filename)
  pathname2 <- Arguments$getWritablePathname(filename2, path=path)
  verbose && cat(verbose, "PS pathname: ", pathname2)

  # Is output file up to date?
  isUpToDate <- FALSE
  if (!force && isFile(pathname2)) {
    date <- file.info(pathname)$mtime
    verbose && cat(verbose, "Source file modified on: ", date)
    outDate <- file.info(pathname2)$mtime
    verbose && cat(verbose, "Output file modified on: ", outDate)
    if (is.finite(date) && is.finite(outDate)) {
      isUpToDate <- (outDate >= date)
    }
    verbose && printf(verbose, "Output file is %sup to date.\n", ifelse(isUpToDate, "", "not "))
  }


  if (!isUpToDate || !isFile(pathname2)) {
    verbose && enter(verbose, "Calling dvips")
    # Change working directory
    opwd <- getwd()
    on.exit(setwd(opwd))
    setwd(path)

    verbose && cat(verbose, "Working directory: ", getwd())
    verbose && cat(verbose, "Filename: ", filename)

    cmd <- sprintf("dvips %s %s", opts, filename)
    system(cmd)
    verbose && exit(verbose)
  }

  # Sanity check
  pathname2 <- Arguments$getReadablePathname(pathname2, mustExist=TRUE)

  verbose && exit(verbose)

  invisible(pathname2)
} # dvips()