44# ' @param package character(1)
55# ' @param index mutable env
66# ' @importFrom rvest read_html html_elements html_attr html_text
7- # ' @importFrom stringr str_extract str_sub
87# ' @export
98get_versions <- function (package , cache = .versions_index ) {
109 if (! is.null(cache [[package ]])) {
@@ -15,35 +14,39 @@ get_versions <- function(package, cache = .versions_index) {
1514
1615 latest_row <- rvest :: read_html(base_url ) | >
1716 rvest :: html_element(sprintf(" tr:has(a[href^='%s'])" , package ))
18- latest_release <- latest_row | >
19- rvest :: html_element(" a" ) | >
20- rvest :: html_attr(" href" ) | >
21- stringr :: str_extract(" (.*)_(.*)\\ .tar\\ .gz" , group = c(1 , 2 )) | >
22- matrix (ncol = 2 ) | >
23- as.data.frame()
24- latest_release $ date <- latest_row | >
25- rvest :: html_element(" td:has(a) + td" ) | >
26- rvest :: html_text() | >
27- stringr :: str_sub(1 , 10 )
17+ latest_href <- latest_row |
18+ rvest :: html_element(" a" ) |
19+ rvest :: html_attr(" href" )
20+ latest_release <- strcapture(
21+ " (.*)_(.*)\\ .tar\\ .gz" ,
22+ latest_href ,
23+ data.frame (package = character (), version = character ())
24+ )
25+ latest_release $ date <- latest_row |
26+ rvest :: html_element(" td:has(a) + td" ) |
27+ rvest :: html_text() |
28+ substr(1 , 10 )
2829 names(latest_release ) <- c(" package" , " version" , " date" )
2930
3031 archive_releases <- tryCatch(
3132 expr = {
3233 url <- file.path(base_url , " Archive" , package )
3334 page <- rvest :: read_html(url )
3435
35- rels <- rvest :: html_elements(page , " tr > td > a" ) | >
36- rvest :: html_attr(" href" ) | >
37- stringr :: str_extract(" (.*)_(.*)\\ .tar\\ .gz" , group = c(1 , 2 )) | >
38- matrix (ncol = 2 ) | >
39- as.data.frame()
36+ archive_hrefs <- rvest :: html_elements(page , " tr > td > a" ) |
37+ rvest :: html_attr(" href" )
38+ rels <- strcapture(
39+ " (.*)_(.*)\\ .tar\\ .gz" ,
40+ archive_hrefs ,
41+ data.frame (package = character (), version = character ())
42+ )
4043
4144 rels $ date <- rvest :: html_elements(
4245 page ,
4346 " tr > td:has(a) + td"
44- ) | >
45- rvest :: html_text() | >
46- stringr :: str_sub (1 , 10 )
47+ ) |
48+ rvest :: html_text() |
49+ substr (1 , 10 )
4750
4851 names(rels ) <- c(" package" , " version" , " date" )
4952 rels [! is.na(rels $ package ), ]
0 commit comments