Commit a2e1ebb4 authored by Jamie A. Jennings's avatar Jamie A. Jennings

Updated README.md to add mission statement, and other minor edits

parent f3d037d3
Pipeline #71973105 passed with stage
in 1 minute and 4 seconds
......@@ -12,16 +12,45 @@
* [Brew installer for Mac OS X](https://gitlab.com/rosie-community/packages/homebrew-rosie)
* Pip installer for Python interface to librosie -- `pip install rosie`
## What is Rosie/RPL?
## What is the Rosie Pattern Language?
RPL is a variant of modern Regular Expressions (regex) that is used, for
example, to validate input and to extract key data from unstructured (and
semi-structured) text. Rosie is an implementation of RPL that is designed
to scale to big data, many developers, and large collections of patterns.
The Rosie Pattern Language (RPL) is intended to replace regular expressions
(regex) in situations where:
The Rosie project provides a CLI (like Unix `grep`) and a library, `librosie`,
that can be used within programs written in Python, Go, Haskell, C, and other
languages.
- **many regex** are used in an application, project, or organization; or
- some regex are used by **many people**, or by a few people over a long period of time; or
- regex are used in **production** systems, where the cost of run-time errors is high.
The advantages conferred by RPL in cases 1 and 2 derive from the RPL syntax and
expressive power. The syntax resembles a programming language, making
expressions easier to read and understand, and compatible with tools like
`diff`.
RPL is based on
[Parsing Expression Grammars](https://en.wikipedia.org/wiki/Parsing_expression_grammar),
which are more powerful than regex, obviating the need for "recursive regex" or
"regex grammars", both of which are ad hoc extensions and are not commonly
supported in regex libraries.
All three situations listed above involve **maintainability**. RPL is easier
to maintain than regex (which are considered "write only" by most developers).
The Rosie project provides both a command line and REPL for development and
debugging.
Also, RPL supports executable unit tests, making it possible to:
1. have a suite of regression tests
2. test expressions independent of the code that uses them
3. compile and test expressions at build time, avoiding run-time errors in production
## What is the Rosie project?
Rosie is an implementation of RPL that is designed to scale to big data, many
developers, and large collections of patterns.
The Rosie project provides a CLI (like Unix `grep`) as well as a library,
`librosie`, that can be used within programs written in Python, Go, Haskell, C,
and other languages.
In the screen capture below, the `net.url` pattern (from the `net` library) is
used to extract all of the URLs mentioned on the google home page.
......@@ -36,9 +65,14 @@ place it in double quotes, like string literals in other programs.)
![](extra/examples/images/readme-fig4.png)
## See more [examples](extra/examples/README.md)
## Documentation
## Read the [documentation](doc/README.md)
* See the [documentation index](doc/README.md)
* And some [examples](extra/examples/README.md)
* And some other [extras](extra), like syntax highlighting for vim and Emacs
* There is also a set of [Rosie Community](https://gitlab.com/rosie-community/)
repositories, with interfaces to `librosie` for various programming languages,
collections of patterns, and syntax highlighting for other editors
## Why RPL?
......@@ -91,16 +125,16 @@ place it in double quotes, like string literals in other programs.)
- [x] Build from source (see [local installation](#local-installation) below)
- [X] [Brew installer for Mac OS X](https://gitlab.com/rosie-community/packages/homebrew-rosie)
- [ ] RPM and debian packages
- [ ] RPM and debian packages (help wanted!)
### Repository organization
Releases are tagged, e.g. `v1.1.0`. The head of the master branch is always the
Releases are tagged, e.g. `v1.2.0`. The head of the master branch is always the
latest release plus any post-release documentation updates (which will be folded
into the next release).
The dev branch should be a stable working development build, possibly with some
quirks and likely with out-of-date documentation. If you are a contributor, you
The dev branch should be a stable development build, possibly with some quirks
and likely with out-of-date documentation. If you are a contributor, you
probably want to be running the latest dev branch.
### Build dependencies
......@@ -114,10 +148,10 @@ Additional libraries for Linux: libbsd, libbsd-devel
Platforms: (most of these were tested with docker)
- [x] [Arch Linux](https://www.archlinux.org/)
- [x] [CentOS Linux release 7.4.1708 (Core) and up](https://www.centos.org)
- [x] [Fedora release 25 (Twenty Five) and up](https://getfedora.org)
- [x] [CentOS Linux](https://www.centos.org)
- [x] [Fedora Linux](https://getfedora.org)
- [x] OS X (macOS 10.13 and up)
- [x] [Ubuntu 16.04.1 LTS (Xenial Xerus)](https://www.ubuntu.com/)
- [x] [Ubuntu 16](https://www.ubuntu.com/)
- [x] Windows Subsystem for Linux (see [example installation script](extra/WSL/rosie_install.sh))
- [ ] Windows (Help wanted!)
......@@ -129,7 +163,7 @@ _build directory_). Then run `make`.
If the build succeeds, you will see a message like this:
```
Rosie Pattern Engine 1.1.0 built successfully!
Rosie Pattern Engine 1.2.0 built successfully!
Use 'make install' to install into DESTDIR=/usr/local
Use 'make uninstall' to uninstall from DESTDIR=/usr/local
To run rosie from the build directory, use ./bin/rosie
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment