Skip to content

Commit

Permalink
Update readme with contributor guide
Browse files Browse the repository at this point in the history
  • Loading branch information
8bit-pixies committed Mar 27, 2017
1 parent 4081bf3 commit b03c15f
Show file tree
Hide file tree
Showing 7 changed files with 129 additions and 142 deletions.
1 change: 1 addition & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ readme.md
cran-comments.md
docs/*
joss-paper/*
example/*
141 changes: 0 additions & 141 deletions example-pl0.R

This file was deleted.

52 changes: 52 additions & 0 deletions example/example-word2num.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
library(Ramble)

# we might have hyphens or spaces,
# e.g. ninety-one or ninety one
remove_space_hyphen <- maybe(token(String("-"))) %using% function(...) return(0)

token_string <- function(x) token(String(x))

unit_definition <- (remove_space_hyphen %alt% succeed(NULL)) %then% (
(token_string("ten") %using% function(...) return(10)) %alt%
(token_string("eleven") %using% function(...) return(11)) %alt%
(token_string("twelve") %using% function(...) return(12)) %alt%
(token_string("thirteen") %using% function(...) return(13)) %alt%
(token_string("fourteen") %using% function(...) return(14)) %alt%
(token_string("fifteen") %using% function(...) return(15)) %alt%
(token_string("sixteen") %using% function(...) return(16)) %alt%
(token_string("seventeen") %using% function(...) return(17)) %alt%
(token_string("eighteen") %using% function(...) return(18)) %alt%
(token_string("nineteen") %using% function(...) return(19)) %alt%
(token_string("zero") %using% function(...) return(0)) %alt%
(token_string("oh") %using% function(...) return(0)) %alt%
(token_string("zip") %using% function(...) return(0)) %alt%
(token_string("zilch") %using% function(...) return(0)) %alt%
(token_string("nada") %using% function(...) return(0)) %alt%
(token_string("one") %using% function(...) return(1)) %alt%
(token_string("two") %using% function(...) return(2)) %alt%
(token_string("three") %using% function(...) return(3)) %alt%
(token_string("four") %using% function(...) return(4)) %alt%
(token_string("five") %using% function(...) return(5)) %alt%
(token_string("six") %using% function(...) return(6)) %alt%
(token_string("seven") %using% function(...) return(7)) %alt%
(token_string("eight") %using% function(...) return(8)) %alt%
(token_string("nine") %using% function(...) return(9))
)

tens_definition <- (
(token_string("ten") %using% function(...) return(10)) %alt%
(token_string("twenty") %using% function(...) return(20)) %alt%
(token_string("thirty") %using% function(...) return(30)) %alt%
(token_string("forty") %using% function(...) return(40)) %alt%
(token_string("fourty") %using% function(...) return(40)) %alt%
(token_string("fifty") %using% function(...) return(50)) %alt%
(token_string("sixty") %using% function(...) return(60)) %alt%
(token_string("seventy") %using% function(...) return(70)) %alt%
(token_string("eighty") %using% function(...) return(80)) %alt%
(token_string("ninety") %using% function(...) return(90))
)

# optional tens_defintion + units
word2num <- ((tens_definition %alt% succeed(NULL)) %then% unit_definition) %using% function(x) return(sum(unlist(x)))
word2num("ninety one")$result
word2num("twenty-two")$result
File renamed without changes.
File renamed without changes.
17 changes: 16 additions & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,29 @@ Python's [recursive descent parsing library](https://pypi.python.org/pypi/funcpa

* [Higher-order functions for parsing](http://eprints.nottingham.ac.uk/221/1/parsing.pdf)

Contributing
============

You can contribute by opening issues on Github or implementing things yourself and making a pull request.

Please ensure that package passes all checks with `--as-cran` flag (i.e. via `devtools::check(args = c('--as-cran'))`) before submitting a pull request.

How it Works
============

To understand the differences between Ramble and other combinatory parsers please read [Ramble: A Parser Combinator in R](http://www.slideshare.net/chapm0nsiu/ramble-introduction).
To understand the differences between Ramble and other combinatory parsers please read [Ramble: A Parser Combinator in R](https://github.com/chappers/Ramble/blob/master/docs/ramble-introduction.pdf).

Example
=======

You may view examples for:

* Parsing xml file
* Creating a simple calculator
* Reading a number given in words, and converting it to the appropriate numeric value

Within the `examples/*` folder. Below is the calculator example.

```r
#' expr :: = term + term | term - term | term
#' term :: = factor * factor | factor / factor | factor
Expand Down
60 changes: 60 additions & 0 deletions tests/testthat/test_word2num.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
library(Ramble)

# we might have hyphens or spaces,
# e.g. ninety-one or ninety one
remove_space_hyphen <- maybe(token(String("-"))) %using% function(...) return(0)

token_string <- function(x) token(String(x))

unit_definition <- (remove_space_hyphen %alt% succeed(NULL)) %then% (
(token_string("ten") %using% function(...) return(10)) %alt%
(token_string("eleven") %using% function(...) return(11)) %alt%
(token_string("twelve") %using% function(...) return(12)) %alt%
(token_string("thirteen") %using% function(...) return(13)) %alt%
(token_string("fourteen") %using% function(...) return(14)) %alt%
(token_string("fifteen") %using% function(...) return(15)) %alt%
(token_string("sixteen") %using% function(...) return(16)) %alt%
(token_string("seventeen") %using% function(...) return(17)) %alt%
(token_string("eighteen") %using% function(...) return(18)) %alt%
(token_string("nineteen") %using% function(...) return(19)) %alt%
(token_string("zero") %using% function(...) return(0)) %alt%
(token_string("oh") %using% function(...) return(0)) %alt%
(token_string("zip") %using% function(...) return(0)) %alt%
(token_string("zilch") %using% function(...) return(0)) %alt%
(token_string("nada") %using% function(...) return(0)) %alt%
(token_string("one") %using% function(...) return(1)) %alt%
(token_string("two") %using% function(...) return(2)) %alt%
(token_string("three") %using% function(...) return(3)) %alt%
(token_string("four") %using% function(...) return(4)) %alt%
(token_string("five") %using% function(...) return(5)) %alt%
(token_string("six") %using% function(...) return(6)) %alt%
(token_string("seven") %using% function(...) return(7)) %alt%
(token_string("eight") %using% function(...) return(8)) %alt%
(token_string("nine") %using% function(...) return(9))
)

tens_definition <- (
(token_string("ten") %using% function(...) return(10)) %alt%
(token_string("twenty") %using% function(...) return(20)) %alt%
(token_string("thirty") %using% function(...) return(30)) %alt%
(token_string("forty") %using% function(...) return(40)) %alt%
(token_string("fourty") %using% function(...) return(40)) %alt%
(token_string("fifty") %using% function(...) return(50)) %alt%
(token_string("sixty") %using% function(...) return(60)) %alt%
(token_string("seventy") %using% function(...) return(70)) %alt%
(token_string("eighty") %using% function(...) return(80)) %alt%
(token_string("ninety") %using% function(...) return(90))
)

# optional tens_defintion + units
word2num <- ((tens_definition %alt% succeed(NULL)) %then% unit_definition) %using% function(x) return(sum(unlist(x)))


test_that("word2num", {
expect_equal(word2num("ninety one")$result, 91)
expect_equal(word2num("ninety-two")$result, 92)
expect_equal(word2num("ninety tone"), list())
expect_equal(word2num("forty six")$result, 46)
expect_equal(word2num("nineteen")$result, 19)
expect_equal(word2num("thirty seven")$result, 37)
})

0 comments on commit b03c15f

Please sign in to comment.