gistr vignette

for v0.3.6

You can install from CRAN ```r install.packages("gistr") ``` Or the development version from GitHub ```r install.packages("devtools") devtools::install_github("ropensci/gistr") ```
```r library("gistr") ``` ## Authentication There are two ways to authorise gistr to work with your GitHub account: * Generate a personal access token (PAT) at [https://help.github.com/articles/creating-an-access-token-for-command-line-use](https://help.github.com/articles/creating-an-access-token-for-command-line-use) and record it in the `GITHUB_PAT` envar. * Interactively login into your GitHub account and authorise with OAuth. Using the PAT is recommended. Using the `gist_auth()` function you can authenticate seperately first, or if you're not authenticated, this function will run internally with each functionn call. If you have a PAT, that will be used, if not, OAuth will be used. ```r gist_auth() ``` ## Workflow In `gistr` you can use pipes, introduced perhaps first in R in the package `magrittr`, to pass outputs from one function to another. If you have used `dplyr` with pipes you can see the difference, and perhaps the utility, of this workflow over the traditional workflow in R. You can use a non-piping or a piping workflow with `gistr`. Examples below use a mix of both workflows. Here is an example of a piping wofklow (with some explanation): ```r file <- system.file("examples", "stuff.Rmd", package = "gistr") gists(what = "minepublic")[[1]] %>% # List my public gists, and index 1st add_files(file) %>% # Add new file to that gist update() # update sends a PATCH command to Gists API to add file to your gist ``` And a non-piping workflow that does the same exact thing: ```r file <- system.file("examples", "example1.md", package = "gistr") g <- gists(what = "minepublic")[[1]] g <- add_files(g, file) update(g) ``` Or you could string them all together in one line (but it's rather difficult to follow what's going on because you have to read from the inside out) ```r update(add_files(gists(what = "minepublic")[[1]], file)) ``` ## Rate limit information ```r rate_limit() ``` ``` #> Rate limit: 5000 #> Remaining: 4969 #> Resets in: 54 minutes ``` ## List gists Limiting to a few results here to keep it brief ```r gists(per_page = 2) ``` ``` #> [[1]] #> 0fe9a473301a32ff1194 #> URL: https://gist.github.com/0fe9a473301a32ff1194 #> Description: Solution to level 13 in Untrusted: http://alex.nisnevich.com/untrusted/ #> Public: TRUE #> Created/Edited: 2015-12-29T18:08:20Z / 2015-12-29T18:08:23Z #> Files: untrusted-lvl13-solution.js #> Truncated?: FALSE #> #> [[2]] #> 3440aac8fbdc75a2128d #> URL: https://gist.github.com/3440aac8fbdc75a2128d #> Description: Bootstrap Customizer Config #> Public: TRUE #> Created/Edited: 2015-12-29T18:08:18Z / 2015-12-29T18:08:18Z #> Files: config.json #> Truncated?: FALSE ``` Since a certain date/time ```r gists(since = '2014-05-26T00:00:00Z', per_page = 2) ``` ``` #> [[1]] #> 0fe9a473301a32ff1194 #> URL: https://gist.github.com/0fe9a473301a32ff1194 #> Description: Solution to level 13 in Untrusted: http://alex.nisnevich.com/untrusted/ #> Public: TRUE #> Created/Edited: 2015-12-29T18:08:20Z / 2015-12-29T18:08:23Z #> Files: untrusted-lvl13-solution.js #> Truncated?: FALSE #> #> [[2]] #> 3440aac8fbdc75a2128d #> URL: https://gist.github.com/3440aac8fbdc75a2128d #> Description: Bootstrap Customizer Config #> Public: TRUE #> Created/Edited: 2015-12-29T18:08:18Z / 2015-12-29T18:08:18Z #> Files: config.json #> Truncated?: FALSE ``` Request different types of gists, one of public, minepublic, mineall, or starred. ```r gists('minepublic', per_page = 2) ``` ``` #> [[1]] #> 2bf190ff233eb7bd93c9 #> URL: https://gist.github.com/2bf190ff233eb7bd93c9 #> Description: #> Public: TRUE #> Created/Edited: 2015-12-29T18:07:36Z / 2015-12-29T18:07:39Z #> Files: alm.md, code.R #> Truncated?: FALSE, FALSE #> #> [[2]] #> 43e063cb28d5008ca4f4 #> URL: https://gist.github.com/43e063cb28d5008ca4f4 #> Description: a new cool gist #> Public: TRUE #> Created/Edited: 2015-12-29T18:07:36Z / 2015-12-29T18:07:36Z #> Files: stuff.md #> Truncated?: FALSE ``` ## List a single gist ```r gist(id = 'f1403260eb92f5dfa7e1') ``` ``` #> f1403260eb92f5dfa7e1 #> URL: https://gist.github.com/f1403260eb92f5dfa7e1 #> Description: Querying bitly from R #> Public: TRUE #> Created/Edited: 2014-10-15T20:40:12Z / 2015-08-29T14:07:43Z #> Files: bitly_r.md #> Truncated?: FALSE ``` ## Create gist You can pass in files First, get a file to work with ```r stuffpath <- system.file("examples", "stuff.md", package = "gistr") ``` ```r gist_create(files = stuffpath, description = 'a new cool gist') ``` ```r gist_create(files = stuffpath, description = 'a new cool gist', browse = FALSE) ``` ``` #> 2cd13b61a065f532e411 #> URL: https://gist.github.com/2cd13b61a065f532e411 #> Description: a new cool gist #> Public: TRUE #> Created/Edited: 2015-12-29T18:08:25Z / 2015-12-29T18:08:25Z #> Files: stuff.md #> Truncated?: FALSE ``` Or, wrap `gist_create()` around some code in your R session/IDE, like so, with just the function name, and a `{'` at the start and a `'}` at the end. ```r gist_create(code = {' x <- letters numbers <- runif(8) numbers [1] 0.3229318 0.5933054 0.7778408 0.3898947 0.1309717 0.7501378 0.3206379 0.3379005 '}, browse = FALSE) ``` ``` #> c2342ea46463d7a832ab #> URL: https://gist.github.com/c2342ea46463d7a832ab #> Description: #> Public: TRUE #> Created/Edited: 2015-12-29T18:08:25Z / 2015-12-29T18:08:25Z #> Files: code.R #> Truncated?: FALSE ``` You can also knit an input file before posting as a gist: ```r file <- system.file("examples", "stuff.Rmd", package = "gistr") gist_create(file, description = 'a new cool gist', knit = TRUE) #> 4162b9c53479fbc298db #> URL: https://gist.github.com/4162b9c53479fbc298db #> Description: a new cool gist #> Public: TRUE #> Created/Edited: 2014-10-27T16:07:31Z / 2014-10-27T16:07:31Z #> Files: stuff.md ``` Or code blocks before (note that code blocks without knitr block demarcations will result in unexecuted code): ```r gist_create(code = {' x <- letters (numbers <- runif(8)) '}, knit = TRUE) #> ec45c396dee4aa492139 #> URL: https://gist.github.com/ec45c396dee4aa492139 #> Description: #> Public: TRUE #> Created/Edited: 2014-10-27T16:09:09Z / 2014-10-27T16:09:09Z #> Files: file81720d1ceff.md ``` ## knit code from file path, code block, or gist file knit a local file ```r file <- system.file("examples", "stuff.Rmd", package = "gistr") run(file, knitopts = list(quiet = TRUE)) %>% gist_create(browse = FALSE) ``` ``` #> c63969de315b857cd0f1 #> URL: https://gist.github.com/c63969de315b857cd0f1 #> Description: #> Public: TRUE #> Created/Edited: 2015-12-29T18:08:25Z / 2015-12-29T18:08:25Z #> Files: stuff.md #> Truncated?: FALSE ``` knit a code block (`knitr` code block notation missing, do add that in) (result not shown) ```r run({' x <- letters (numbers <- runif(8)) '}) %>% gist_create() ``` knit a file from a gist, has to get file first (result not shown) ```r gists('minepublic')[[1]] %>% run() %>% update() ``` ## List commits on a gist ```r gists()[[1]] %>% commits() ``` ``` #> [[1]] #> #> Version: 05d0fcb55d5ad1fc292ecd5eb0f31195d66acd3d #> User: sckott #> Commited: 2015-12-29T18:08:25Z #> Commits [total, additions, deletions]: [5,5,0] ``` ## Star a gist Star ```r gist('485d4edfb1e1912bb9f4') %>% star() ``` ``` #> 485d4edfb1e1912bb9f4 #> URL: https://gist.github.com/485d4edfb1e1912bb9f4 #> Description: rentrez release blog post #> Public: TRUE #> Created/Edited: 2015-09-23T02:26:19Z / 2015-09-23T02:55:27Z #> Files: rentrez_1.Rmd, rentrez_1.md #> Truncated?: FALSE, FALSE ``` Unstar ```r gist('485d4edfb1e1912bb9f4') %>% unstar() ``` ``` #> 485d4edfb1e1912bb9f4 #> URL: https://gist.github.com/485d4edfb1e1912bb9f4 #> Description: rentrez release blog post #> Public: TRUE #> Created/Edited: 2015-09-23T02:26:19Z / 2015-09-23T02:55:27Z #> Files: rentrez_1.Rmd, rentrez_1.md #> Truncated?: FALSE, FALSE ``` ## Update a gist Add files First, path to file ```r file <- system.file("examples", "alm.md", package = "gistr") ``` ```r gists(what = "minepublic")[[1]] %>% add_files(file) %>% update() ``` ``` #> c2342ea46463d7a832ab #> URL: https://gist.github.com/c2342ea46463d7a832ab #> Description: #> Public: TRUE #> Created/Edited: 2015-12-29T18:08:25Z / 2015-12-29T18:08:27Z #> Files: alm.md, code.R #> Truncated?: FALSE, FALSE ``` Delete files ```r gists(what = "minepublic")[[1]] %>% delete_files(file) %>% update() ``` ``` #> c2342ea46463d7a832ab #> URL: https://gist.github.com/c2342ea46463d7a832ab #> Description: #> Public: TRUE #> Created/Edited: 2015-12-29T18:08:25Z / 2015-12-29T18:08:28Z #> Files: code.R #> Truncated?: FALSE ``` ## Open a gist in your default browser ```r gists()[[1]] %>% browse() ``` > Opens the gist in your default browser ## Get embed script ```r gists()[[1]] %>% embed() ``` ``` #> [1] "<script src=\"https://gist.github.com/sckott/c2342ea46463d7a832ab.js\"></script>" ``` ### List forks Returns a list of `gist` objects, just like `gists()` ```r gist(id = '1642874') %>% forks(per_page = 2) ``` ``` #> [[1]] #> 1642989 #> URL: https://gist.github.com/1642989 #> Description: Spline Transition #> Public: TRUE #> Created/Edited: 2012-01-19T21:45:20Z / 2015-12-14T15:38:21Z #> Files: #> Truncated?: #> #> [[2]] #> 1643051 #> URL: https://gist.github.com/1643051 #> Description: Line Transition (Broken) #> Public: TRUE #> Created/Edited: 2012-01-19T21:51:30Z / 2015-10-30T21:37:35Z #> Files: #> Truncated?: ``` ## Fork a gist Returns a `gist` object ```r g <- gists() (forked <- g[[ sample(seq_along(g), 1) ]] %>% fork()) ``` ``` #> 4ee6bbeb3c49bdd41138 #> URL: https://gist.github.com/4ee6bbeb3c49bdd41138 #> Description: Bootstrap Customizer Config #> Public: TRUE #> Created/Edited: 2015-12-29T18:08:29Z / 2015-12-29T18:08:29Z #> Files: config.json #> Truncated?: FALSE ``` ## Example use case _Working with the Mapzen Pelias geocoding API_ The API is described at [https://github.com/pelias/pelias](https://github.com/pelias/pelias), and is still in alpha they say. The steps: get data, make a gist. The data is returned from Mapzen as geojson, so all we have to do is literally push it up to GitHub gists and we're done b/c GitHub renders the map. ```r library('httr') base <- "http://pelias.mapzen.com/search" res <- httr::GET(base, query = list(input = 'coffee shop', lat = 45.5, lon = -122.6)) json <- httr::content(res, "text") gist_create(code = json, filename = "pelias_test.geojson") #> 017214637bcfeb198070 #> URL: https://gist.github.com/017214637bcfeb198070 #> Description: #> Public: TRUE #> Created/Edited: 2014-10-28T14:42:36Z / 2014-10-28T14:42:36Z #> Files: pelias_test.geojson ``` And here's that gist: [https://gist.github.com/sckott/017214637bcfeb198070](https://gist.github.com/sckott/017214637bcfeb198070) ![img](/roweb/assets/tutorial-images/gistr/gistr_ss.png)
## Citing > Ramnath Vaidyanathan, Karthik Ram and Scott Chamberlain (2015). gistr: Work with GitHub Gists from R. R package version 0.3.6. https://github.com/ropensci/gistr
## License and bugs * License: [MIT](http://opensource.org/licenses/MIT) * Report bugs at [our GitHub repo for gistr](https://github.com/ropensci/gistr/issues?state=open) [Back to top](#top)
comments powered by Disqus