Skip to content

Commit

Permalink
Fix #38
Browse files Browse the repository at this point in the history
  • Loading branch information
okeyes-r7 committed Apr 12, 2016
1 parent 6a6326b commit 57d6312
Show file tree
Hide file tree
Showing 31 changed files with 198 additions and 144 deletions.
12 changes: 6 additions & 6 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
Package: urltools
Type: Package
Title: Vectorised Tools for URL Handling and Parsing
Version: 1.3.2
Date: 2015-10-09
Author: Oliver Keyes [aut, cre], Jay Jacobs [aut, cre], Mark Greenaway [ctb],
Bob Rudis [ctb]
Version: 1.4.0
Date: 2016-04-12
Author: Oliver Keyes [aut, cre], Jay Jacobs [aut, cre], Mark Greenaway [ctb],
Bob Rudis [ctb]
Maintainer: Oliver Keyes <ironholds@gmail.com>
Description: A toolkit for handling URLs that so far includes functions for URL
encoding and decoding, parsing, and parameter extraction. All functions are
Expand All @@ -14,8 +14,7 @@ Description: A toolkit for handling URLs that so far includes functions for URL
URLs.
License: MIT + file LICENSE
LazyData: TRUE
LinkingTo:
Rcpp
LinkingTo: Rcpp
Imports:
Rcpp,
methods
Expand All @@ -25,3 +24,4 @@ Suggests:
URL: https://github.com/Ironholds/urltools/
BugReports: https://github.com/Ironholds/urltools/issues
VignetteBuilder: knitr
RoxygenNote: 5.0.1
2 changes: 1 addition & 1 deletion NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated by roxygen2 (4.1.1): do not edit by hand
# Generated by roxygen2: do not edit by hand

export("domain<-")
export("fragment<-")
Expand Down
7 changes: 5 additions & 2 deletions NEWS
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
Version 1.4.0

DEVELOPMENT
BUG FIXES
* Full NA support is now available!

* NAs are now supported in encoding, decoding,
DEVELOPMENT
* A substantial (20%) speed increase is now available thanks to internal
refactoring.

Version 1.3.3
-------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion R/urltools.R
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#' entirely vectorised. It is intended to be useful for people dealing with
#' web-related datasets, such as server-side logs.
#'
#' @seealso the \href{http://cran.rstudio.com/web/packages/urltools/vignettes/urltools.html}{package vignette}.
#' @seealso the \href{https://cran.r-project.org/web/packages/urltools/vignettes/urltools.html}{package vignette}.
#' @useDynLib urltools
#' @importFrom Rcpp sourceCpp
#' @docType package
Expand Down
6 changes: 1 addition & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,11 @@ By participating in this project you agree to abide by its terms.
The latest CRAN version can be obtained via:

install.packages("urltools")

The latest maintenance version:

devtools::install_github("ironholds/urltools", ref = "1.3.2")

To get the development version:

devtools::install_github("ironholds/urltools")

###Dependencies
* R. Doy.
* [Rcpp](http://cran.rstudio.com/web/packages/Rcpp/)
* [Rcpp](https://cran.r-project.org/package=Rcpp)
2 changes: 1 addition & 1 deletion man/domain.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion man/encoder.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/fragment.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion man/param_get.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/param_remove.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion man/param_set.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/parameters.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/path.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/port.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/scheme.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/suffix_dataset.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion man/suffix_extract.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion man/url_compose.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions man/url_parse.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions man/urltools.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 8 additions & 8 deletions src/RcppExports.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,26 @@
using namespace Rcpp;

// get_component_
std::vector < std::string > get_component_(std::vector < std::string > urls, int component);
CharacterVector get_component_(CharacterVector urls, int component);
RcppExport SEXP urltools_get_component_(SEXP urlsSEXP, SEXP componentSEXP) {
BEGIN_RCPP
Rcpp::RObject __result;
Rcpp::RNGScope __rngScope;
Rcpp::traits::input_parameter< std::vector < std::string > >::type urls(urlsSEXP);
Rcpp::traits::input_parameter< CharacterVector >::type urls(urlsSEXP);
Rcpp::traits::input_parameter< int >::type component(componentSEXP);
__result = Rcpp::wrap(get_component_(urls, component));
return __result;
END_RCPP
}
// set_component_
std::vector < std::string > set_component_(std::vector < std::string > urls, int component, std::string new_value);
CharacterVector set_component_(CharacterVector urls, int component, String new_value);
RcppExport SEXP urltools_set_component_(SEXP urlsSEXP, SEXP componentSEXP, SEXP new_valueSEXP) {
BEGIN_RCPP
Rcpp::RObject __result;
Rcpp::RNGScope __rngScope;
Rcpp::traits::input_parameter< std::vector < std::string > >::type urls(urlsSEXP);
Rcpp::traits::input_parameter< CharacterVector >::type urls(urlsSEXP);
Rcpp::traits::input_parameter< int >::type component(componentSEXP);
Rcpp::traits::input_parameter< std::string >::type new_value(new_valueSEXP);
Rcpp::traits::input_parameter< String >::type new_value(new_valueSEXP);
__result = Rcpp::wrap(set_component_(urls, component, new_value));
return __result;
END_RCPP
Expand Down Expand Up @@ -90,18 +90,18 @@ BEGIN_RCPP
END_RCPP
}
// url_parse
DataFrame url_parse(std::vector < std::string > urls);
DataFrame url_parse(CharacterVector urls);
RcppExport SEXP urltools_url_parse(SEXP urlsSEXP) {
BEGIN_RCPP
Rcpp::RObject __result;
Rcpp::RNGScope __rngScope;
Rcpp::traits::input_parameter< std::vector < std::string > >::type urls(urlsSEXP);
Rcpp::traits::input_parameter< CharacterVector >::type urls(urlsSEXP);
__result = Rcpp::wrap(url_parse(urls));
return __result;
END_RCPP
}
// url_compose
std::vector < std::string > url_compose(DataFrame parsed_urls);
CharacterVector url_compose(DataFrame parsed_urls);
RcppExport SEXP urltools_url_compose(SEXP parsed_urlsSEXP) {
BEGIN_RCPP
Rcpp::RObject __result;
Expand Down
22 changes: 14 additions & 8 deletions src/accessors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,35 @@
using namespace Rcpp;

//[[Rcpp::export]]
std::vector < std::string > get_component_(std::vector < std::string > urls, int component){
CharacterVector get_component_(CharacterVector urls, int component){
parsing p_inst;
unsigned int input_size = urls.size();
CharacterVector output(input_size);
for (unsigned int i = 0; i < input_size; ++i){
if((i % 10000) == 0){
Rcpp::checkUserInterrupt();
}
urls[i] = p_inst.get_component(urls[i], component);
if(urls[i] != NA_STRING){
output[i] = p_inst.get_component(Rcpp::as<std::string>(urls[i]), component);
} else {
output[i] = NA_STRING;
}
}
return urls;
return output;
}

//[[Rcpp::export]]
std::vector < std::string > set_component_(std::vector < std::string > urls, int component,
std::string new_value){
CharacterVector set_component_(CharacterVector urls, int component,
String new_value){
parsing p_inst;
unsigned int input_size = urls.size();

CharacterVector output(input_size);
for (unsigned int i = 0; i < input_size; ++i){
if((i % 10000) == 0){
Rcpp::checkUserInterrupt();
}
urls[i] = p_inst.set_component(urls[i], component, new_value);

output[i] = p_inst.set_component(Rcpp::as<std::string>(urls[i]), component, new_value);
}
return urls;
return output;
}
30 changes: 16 additions & 14 deletions src/compose.cpp
Original file line number Diff line number Diff line change
@@ -1,26 +1,28 @@
#include "compose.h"

bool compose::emptycheck(std::string element){
if(element.size() == 0){
bool compose::emptycheck(String element){
if(element == NA_STRING){
return false;
}
return true;
}

std::string compose::compose_single(std::string scheme, std::string domain, std::string port, std::string path,
std::string parameter, std::string fragment){
std::string compose::compose_single(String scheme, String domain, String port, String path,
String parameter, String fragment){

std::string output;

if(emptycheck(scheme)){
output += scheme + "://";
output += scheme;
output += "://";
}

if(emptycheck(domain)){
output += domain;

if(emptycheck(port)){
output += ":" + port;
output += ":";
output += port;
} else {
output += "/";
}
Expand All @@ -43,16 +45,16 @@ std::string compose::compose_single(std::string scheme, std::string domain, std:
return output;
}

std::vector < std::string > compose::compose_multiple(DataFrame parsed_urls){
CharacterVector compose::compose_multiple(DataFrame parsed_urls){

std::vector < std::string > schemes = parsed_urls["scheme"];
std::vector < std::string > domains = parsed_urls["domain"];
std::vector < std::string > ports = parsed_urls["port"];
std::vector < std::string > paths = parsed_urls["path"];
std::vector < std::string > parameters = parsed_urls["parameter"];
std::vector < std::string > fragments = parsed_urls["fragment"];
CharacterVector schemes = parsed_urls["scheme"];
CharacterVector domains = parsed_urls["domain"];
CharacterVector ports = parsed_urls["port"];
CharacterVector paths = parsed_urls["path"];
CharacterVector parameters = parsed_urls["parameter"];
CharacterVector fragments = parsed_urls["fragment"];

std::vector < std::string > output(schemes.size());
CharacterVector output(schemes.size());

for(unsigned int i = 0; i < schemes.size(); i++){
if((i % 10000) == 0){
Expand Down
Loading

0 comments on commit 57d6312

Please sign in to comment.