SCM

SCM Repository

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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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){
10    toadd <- !names(y)%in%names(x)    toadd <- if(".overwrite"%in%names(y)){
11        y <- y[names(y)!=".overwrite"]
12        rep(TRUE,length(y))
13      }else{
14        !names(y)%in%names(x)
15      }
16    toup <- names(y)[!toadd]    toup <- names(y)[!toadd]
   ##if("doc"%in%names(x))return(x$doc)  
   ##if("doc"%in%names(y))return(y$doc)  
17    x[names(y)[toadd]] <- y[toadd]    x[names(y)[toadd]] <- y[toadd]
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

R-Forge@R-project.org
ViewVC Help
Powered by ViewVC 1.0.0  
Thanks to:
Vienna University of Economics and Business University of Wisconsin - Madison Powered By FusionForge