|
|
|
---
|
|
|
|
output: rmarkdown::github_document
|
|
|
|
editor_options:
|
|
|
|
chunk_output_type: console
|
|
|
|
---
|
|
|
|
```{r pkg-knitr-opts, include=FALSE}
|
|
|
|
hrbrpkghelpr::global_opts()
|
|
|
|
```
|
|
|
|
|
|
|
|
```{r badges, results='asis', echo=FALSE, cache=FALSE}
|
|
|
|
hrbrpkghelpr::stinking_badges()
|
|
|
|
```
|
|
|
|
|
|
|
|
```{r description, results='asis', echo=FALSE, cache=FALSE}
|
|
|
|
hrbrpkghelpr::yank_title_and_description()
|
|
|
|
```
|
|
|
|
|
|
|
|
## What's Inside The Tin
|
|
|
|
|
|
|
|
The following functions are implemented:
|
|
|
|
|
|
|
|
```{r ingredients, results='asis', echo=FALSE, cache=FALSE}
|
|
|
|
hrbrpkghelpr::describe_ingredients()
|
|
|
|
```
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
```{r install-ex, results='asis', echo=FALSE, cache=FALSE}
|
|
|
|
hrbrpkghelpr::install_block()
|
|
|
|
```
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
```{r lib-ex}
|
|
|
|
library(swiftr)
|
|
|
|
|
|
|
|
# current version
|
|
|
|
packageVersion("swiftr")
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
```{r ex01}
|
|
|
|
swift_function(
|
|
|
|
code = '
|
|
|
|
|
|
|
|
func ignored() {
|
|
|
|
print("""
|
|
|
|
this will be ignored by swift_function() but you could use private
|
|
|
|
functions as helpers for the main public Swift function which will be
|
|
|
|
made available to R.
|
|
|
|
""")
|
|
|
|
}
|
|
|
|
|
|
|
|
@_cdecl ("read_plist")
|
|
|
|
public func read_plist(path: SEXP) -> SEXP {
|
|
|
|
|
|
|
|
var out: SEXP = R_NilValue
|
|
|
|
|
|
|
|
do {
|
|
|
|
// read in the raw plist
|
|
|
|
let plistRaw = try Data(contentsOf: URL(fileURLWithPath: String(cString: R_CHAR(STRING_ELT(path, 0)))))
|
|
|
|
|
|
|
|
// convert it to a PropertyList
|
|
|
|
let plist = try PropertyListSerialization.propertyList(from: plistRaw, options: [], format: nil) as! [String:Any]
|
|
|
|
|
|
|
|
// serialize it to JSON
|
|
|
|
let jsonData = try JSONSerialization.data(withJSONObject: plist , options: .prettyPrinted)
|
|
|
|
|
|
|
|
// setup the JSON string return
|
|
|
|
String(data: jsonData, encoding: .utf8)?.withCString {
|
|
|
|
cstr in out = Rf_mkString(cstr)
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch {
|
|
|
|
debugPrint("\\(error)")
|
|
|
|
}
|
|
|
|
|
|
|
|
return(out)
|
|
|
|
|
|
|
|
}
|
|
|
|
')
|
|
|
|
|
|
|
|
read_plist("/Applications/RStudio.app/Contents/Info.plist") %>%
|
|
|
|
jsonlite::fromJSON() %>%
|
|
|
|
str(1)
|
|
|
|
```
|
|
|
|
|
|
|
|
## swiftr Metrics
|
|
|
|
|
|
|
|
```{r cloc, echo=FALSE}
|
|
|
|
cloc::cloc_pkg_md()
|
|
|
|
```
|
|
|
|
|
|
|
|
## Code of Conduct
|
|
|
|
|
|
|
|
Please note that this project is released with a Contributor Code of Conduct.
|
|
|
|
By participating in this project you agree to abide by its terms.
|