You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
2 years ago | |
---|---|---|
R | 2 years ago | |
inst | 2 years ago | |
man | 2 years ago | |
tests | 2 years ago | |
.Rbuildignore | 2 years ago | |
.codecov.yml | 2 years ago | |
.gitignore | 2 years ago | |
.travis.yml | 2 years ago | |
CONDUCT.md | 2 years ago | |
DESCRIPTION | 2 years ago | |
LICENSE | 2 years ago | |
LICENSE.md | 2 years ago | |
NAMESPACE | 2 years ago | |
NEWS.md | 2 years ago | |
README.Rmd | 2 years ago | |
README.md | 2 years ago | |
swiftr.Rproj | 2 years ago |
README.md
swiftr
Seamless R and Swift Integration
Description
eamless R and Swift Integration
What’s Inside The Tin
The following functions are implemented:
add_registration_glue
: This examines a package swift file and builds the necessary registration glue codeswift_function
: Define an R Function with a Swift Implementation
Installation
remotes::install_git("https://git.rud.is/hrbrmstr/swiftr.git")
# or
remotes::install_gitlab("hrbrmstr/swiftr")
# or
remotes::install_bitbucket("hrbrmstr/swiftr")
# or
remotes::install_github("hrbrmstr/swiftr")
NOTE: To use the ‘remotes’ install options you will need to have the {remotes} package installed.
Usage
library(swiftr)
# current version
packageVersion("swiftr")
## [1] '0.1.0'
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)
## List of 32
## $ CFBundleVersion : chr "1.4.1093-1"
## $ NSPhotoLibraryAddUsageDescription : chr "R wants write access to the photo library."
## $ NSHighResolutionCapable : logi TRUE
## $ NSCalendarsUsageDescription : chr "R wants to access calendars."
## $ CFBundleLongVersionString : chr "1.4.1093-1"
## $ NSContactsUsageDescription : chr "R wants to access contacts."
## $ CFBundleGetInfoString : chr "RStudio 1.4.1093-1, © 2009-2020 RStudio, PBC"
## $ NSPrincipalClass : chr "NSApplication"
## $ NSCameraUsageDescription : chr "R wants to access the camera."
## $ NSPhotoLibraryUsageDescription : chr "R wants to access the photo library."
## $ CFBundleInfoDictionaryVersion : chr "6.0"
## $ NSRemindersUsageDescription : chr "R wants to access the reminders."
## $ CFBundleSignature : chr "Rstd"
## $ CFBundleIconFile : chr "RStudio.icns"
## $ LSRequiresCarbon : logi TRUE
## $ LSApplicationCategoryType : chr "public.app-category.developer-tools"
## $ CFBundleExecutable : chr "RStudio"
## $ CFBundlePackageType : chr "APPL"
## $ NSAppleScriptEnabled : logi TRUE
## $ CFBundleDocumentTypes :'data.frame': 16 obs. of 8 variables:
## $ OSAScriptingDefinition : chr "RStudio.sdef"
## $ CSResourcesFileMapped : logi TRUE
## $ NSHumanReadableCopyright : chr "RStudio 1.4.1093-1, © 2009-2020 RStudio, PBC"
## $ CFBundleDevelopmentRegion : chr "English"
## $ CFBundleIdentifier : chr "org.rstudio.RStudio"
## $ NSBluetoothPeripheralUsageDescription: chr "R wants to access bluetooth."
## $ NSAppleEventsUsageDescription : chr "R wants to run AppleScript."
## $ NSLocationWhenInUseUsageDescription : chr "R wants to access location information."
## $ CFBundleShortVersionString : chr "1.4.1093-1"
## $ NSMicrophoneUsageDescription : chr "R wants to access the microphone."
## $ CFBundleName : chr "RStudio"
## $ NSSupportsAutomaticGraphicsSwitching : logi TRUE
swiftr Metrics
Lang | # Files | (%) | LoC | (%) | Blank lines | (%) | # Lines | (%) |
---|---|---|---|---|---|---|---|---|
R | 5 | 0.42 | 199 | 0.42 | 69 | 0.36 | 49 | 0.31 |
Rmd | 1 | 0.08 | 40 | 0.08 | 27 | 0.14 | 30 | 0.19 |
SUM | 6 | 0.50 | 239 | 0.50 | 96 | 0.50 | 79 | 0.50 |
clock Package Metrics for swiftr
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.