| # File src/library/utils/R/RSiteSearch.R |
| # Part of the R package, https://www.R-project.org |
| # |
| # Copyright (C) 1995-2015 The R Core Team |
| # |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 2 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # A copy of the GNU General Public License is available at |
| # https://www.R-project.org/Licenses/ |
| |
| RSiteSearch <- function(string, |
| restrict = c("functions", "vignettes", "views"), |
| format = c("normal", "short"), |
| sortby = c("score", "date:late", "date:early", |
| "subject", "subject:descending", |
| "from", "from:descending", "size", "size:descending"), |
| matchesPerPage = 20) |
| { |
| string <- paste0("http://search.r-project.org/cgi-bin/namazu.cgi?query=", |
| URLencode(gsub(" ", "+", string), reserved = TRUE)) |
| mpp <- paste0("max=", matchesPerPage) |
| format <- paste0("result=", match.arg(format)) |
| |
| restrictVALS <- c("functions", "vignettes", "views") |
| restr <- match.arg(restrict, choices = restrictVALS, several.ok = TRUE) |
| restr <- paste(paste0("idxname=", restr), collapse = "&") |
| |
| sortby <- match.arg(sortby) |
| sortby <- paste0("sort=", |
| switch(sortby, |
| "score"=, "date:late"=, "date:early" = sortby, |
| "subject" = "field:subject:ascending", |
| "subject:descending" = "field:subject:descending", |
| "from" = "field:from:ascending", |
| "from:descending" = "field:from:descending", |
| "size" = "field:size:ascending", |
| "size:descending" = "field:size:descending")) |
| |
| ## we know this is a http:// URL, so encoding should be safe. |
| ## it seems that firefox on macOS needs it for {...} |
| ## OTOH, Namazu does not decode in, say, sort=date:late. |
| qstring <- paste(string, mpp, format, sortby, restr, sep = "&") |
| browseURL(qstring) |
| cat(gettextf("A search query has been submitted to %s", |
| "http://search.r-project.org"), "\n", sep = "") |
| cat(gettext("The results page should open in your browser shortly\n")) |
| invisible(qstring) |
| } |