RcppTOML v0.1.3

0

Monthly downloads

0th

Percentile

'Rcpp' Bindings to Parser for Tom's Obvious Markup Language

The configuration format defined by 'TOML' (which expands to "Tom's Obvious Markup Language") specifies an excellent format (described at <https://github.com/toml-lang/toml>) suitable for both human editing as well as the common uses of a machine-readable format. This package uses 'Rcpp' to connect the 'cpptoml' parser written by Chase Geigle (in modern C++11) to R.

Readme

RcppTOML Build Status License CRAN Downloads

Rcpp bindings for TOML

What is TOML?

TOML is a configuration file grammar for humans. It is easier to read and edit than the alternatives yet arguably more useful as it is stronly types: values come back as integer, double, (multiline-) character (strings), boolean or Datetime. Moreover, complex nesting and arrays are supported as well.

This package uses the C++11 implementation written by Chase Geigle in cpptoml to implement a parser used by R.

Example

Consider the following TOML input example input:

# This is a TOML document.

title = "TOML Example"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true

[servers]

  # Indentation (tabs and/or spaces) is allowed but not required
  [servers.alpha]
  ip = "10.0.0.1"
  dc = "eqdc10"

  [servers.beta]
  ip = "10.0.0.2"
  dc = "eqdc10"

[clients]
data = [ ["gamma", "delta"], [1, 2] ]

# Line breaks are OK when inside arrays
hosts = [
  "alpha",
  "omega"
]

Once parsed, note how R has properly typed input:

R> library(RcppTOML)
R> parseTOML("inst/toml/example.toml")
List of 5
 $ clients :List of 2
  ..$ data :List of 2
  .. ..$ : chr [1:2] "gamma" "delta"
  .. ..$ : int [1:2] 1 2
  ..$ hosts: chr [1:2] "alpha" "omega"
 $ database:List of 4
  ..$ connection_max: int 5000
  ..$ enabled       : logi TRUE
  ..$ ports         : int [1:3] 8001 8001 8002
  ..$ server        : chr "192.168.1.1"
 $ owner   :List of 2
  ..$ dob : POSIXct[1:1], format: "1979-05-27 15:32:00"
  ..$ name: chr "Tom Preston-Werner"
 $ servers :List of 2
  ..$ alpha:List of 2
  .. ..$ dc: chr "eqdc10"
  .. ..$ ip: chr "10.0.0.1"
  ..$ beta :List of 2
  .. ..$ dc: chr "eqdc10"
  .. ..$ ip: chr "10.0.0.2"
 $ title   : chr "TOML Example"
R>

See the other examples and the upstream documentation for more. Also note that most decent editors have proper TOML support which makes editing and previewing a breeze:

Installation

The package is on CRAN and can be installed from every mirror via

install.packages("RcppTOML")

Development releases may be provided by the ghrr repository which can accessed using via

## if needed, first do:  install.packages("drat")
drat::addRepo("ghrr")

Status

Feature-complete with TOML v0.4.0, see the tests/ directory. It parses everything that the underlying cpptoml parses with the same (sole) exception of unicode escape characters in strings.

Author

Dirk Eddelbuettel

License

GPL (>= 2)

Functions in RcppTOML

Name Description
RcppTOML-package
parseTOML
No Results!

Last month downloads

Details

Type Package
Date 2017-04-25
SystemRequirements A C++11 compiler; g++ (>= 4.8.*) should be fine.
BugReports https://github.com/eddelbuettel/rcpptoml/issues
URL http://dirk.eddelbuettel.com/code/rcpp.toml.html
LinkingTo Rcpp
License GPL (>= 2)
NeedsCompilation yes
Packaged 2017-04-25 11:56:26.914824 UTC; edd
Repository CRAN
Date/Publication 2017-04-25 14:36:00 UTC

Include our badge in your README

[![Rdoc](http://www.rdocumentation.org/badges/version/RcppTOML)](http://www.rdocumentation.org/packages/RcppTOML)