# SCM Repository

[inlinedocs] Diff of /pkg/inlinedocs/R/parsers.R
 [inlinedocs] / pkg / inlinedocs / R / parsers.R

# Diff of /pkg/inlinedocs/R/parsers.R

revision 198, Fri Feb 18 14:17:08 2011 UTC revision 200, Fri Feb 18 15:02:16 2011 UTC
# Line 7  Line 7
7
8  ### combine lists by adding elements or adding to existing elements  ### combine lists by adding elements or adding to existing elements
9  combine.list <- function(x,y){  combine.list <- function(x,y){
11        y <- y[names(y)!=".overwrite"]
12        rep(TRUE,length(y))
13      }else{
14        !names(y)%in%names(x)
15      }
##if("doc"%in%names(x))return(x\$doc)
##if("doc"%in%names(y))return(y\$doc)
18    for(up in toup)x[[up]] <- combine(x[[up]],y[[up]])    for(up in toup)x[[up]] <- combine(x[[up]],y[[up]])
19    return(x)    x
20  ### A list, same type as x, but with added elements from y.  ### A list, same type as x, but with added elements from y.
21  }  }
22
# Line 512  Line 515
515             }             }
516             list(examples = ex)             list(examples = ex)
517           } else list()           } else list()
518           },collapse=function(doc,...){
519             L <- lapply(doc,paste,collapse="\n")
520             L\$.overwrite <- TRUE
521             L
522           },tag.s3methods=function(name,env,...){
523             parts <- strsplit(name, ".", fixed = TRUE)[[1]]
524             l <- length(parts)
525             if (l > 1) {
526               for (i in 1:(l - 1)) {
527                 ## Look for a generic function (known by the system or defined
528                 ## in the package) that matches that part of the function name
529                 generic <- paste(parts[1:i], collapse = ".")
530                 if (any(generic %in% utils:::getKnownS3generics()) ||
531                     utils:::findGeneric(generic, env) != "") {
532                   object <- paste(parts[(i + 1):l], collapse = ".")
533                   return(list(.s3method=c(generic, object)))
534                 }
535               }
536             }
537             list()
538         }         }
539         )         )
540
# Line 861  Line 884
884
885    docs <- list()    docs <- list()
886
# PhG: Automatically determine who is S3 methods
for (name in names(objs)) {
parts <- strsplit(name, ".", fixed = TRUE)[[1]]
l <- length(parts)
if (l > 1) {
for (i in 1:(l - 1)) {
# Look for a generic function (known by the system or defined
# in the package) that matches that part of the function name
generic <- paste(parts[1:i], collapse = ".")
if (any(generic %in% utils:::getKnownS3generics()) ||
utils:::findGeneric(generic, e) != "") {
object <- paste(parts[(i + 1):l], collapse = ".")
docs[[name]]\$.s3method <- c(generic, object)
break
}
}
}
}
887    ## apply parsers in sequence to code and objs    ## apply parsers in sequence to code and objs
888    for(i in seq_along(parsers)){    for(i in seq_along(parsers)){
889      N <- names(parsers[i])      N <- names(parsers[i])
# Line 889  Line 894
894      }      }
895      p <- parsers[[i]]      p <- parsers[[i]]
896      ## This is the argument list that each parser receives:      ## This is the argument list that each parser receives:
897      L <- p(code=code,objs=objs,docs=docs,...)      L <- p(code=code,objs=objs,docs=docs,env=e,...)
898      docs <- combine(docs,L)      docs <- combine(docs,L)
899    }    }
900    ## post-process to collapse all character vectors    ## post-process to collapse all character vectors

Legend:
 Removed from v.198 changed lines Added in v.200