README.md in angelo-0.4.1 vs README.md in angelo-0.5.0
- old
+ new
@@ -10,21 +10,21 @@
* websocket support via `websocket('/path'){|s| ... }` route builder
* SSE support via `eventsource('/path'){|s| ... }` route builder
* contextual websocket/sse stashing via `websockets` and `sses` helpers
* `task` handling via `async` and `future` helpers
* no rack
-* tilt/erb support
+* erb, haml, and markdown support
* mustermann support
### What is Angelo?
Just like Sinatra, Angelo gives you an expressive DSL for creating web applications. There are some
notable differences, but the basics remain the same: you can either create a "classic" application
by requiring 'angelo/main' and using the DSL at the top level of your script, or a "modular"
application by requiring 'angelo', subclassing `Angelo::Base`, and calling `.run!` on that class for the
service to start.
-In addition, and perhaps more importantly, **Angelo is built upon Reel, which is, in turn, built upon
+In addition, and perhaps more importantly, **Angelo is built on Reel, which is built on
Celluloid::IO and gives you a reactor with evented IO in Ruby!**
Things will feel very familiar to anyone experienced with Sinatra. You can define
route handlers denoted by HTTP verb and path with parameters set from path matching (using
[Mustermann](#mustermann)), the query string, and post body.
@@ -523,10 +523,25 @@
end
HelloApp.run!
```
+### JSON HTTP API
+
+If you post JSON data with a JSON Content-Type, angelo will:
+
+* merge objects into the `params` SymHash
+* parse arrays and make them available via `request_body`
+
+N.B. `request_body` is functionally equivalent to `request.body.to_s` otherwise.
+
+If your `content_type` is set to `:json`, angelo will convert:
+
+* anything returned from a route block that `respond_to? :to_json`
+* `RequestError` message data
+* `halt` data
+
### Documentation
**I'm bad at documentation and I feel bad.**
Others have helped, and there is a YaRD plugin for Angelo [here](https://github.com/artcom/yard-angelo)
@@ -663,13 +678,35 @@
Foo.run!
```
### Contributing
-YES, HAVE SOME
+Anyone is welcome to contribute. Conduct is guided by the [Contributor Covenant](http://contributor-covenant.org).
+See `code_of_conduct.md`.
-* :fork_and_knife: Fork this repo, make changes, send PR!
-* :shipit: if Good stuff?
+To contribute to Angelo, please:
+* fork the repository to your GitHub account
+* create a branch for the feature or fix
+* commit your changes to that branch, please include tests if applicable
+* submit a Pull Request back to the main repository's `master` branch
+
+After review and acceptance, your changes will be merged and noted in `CHANGLOG.md`.
+
+### Testing
+
+Unit tests are done with Minitest. Run them with :
+
+```
+bundle install
+rake test
+```
+
### License
[Apache 2.0](LICENSE)
+
+### Name
+
+Why the name "Angelo"? Since the project mimics Sinatra's DSL, I thought it best to keep a reference to
+The Chairman in the name. It turns out that Frank Sinatra won an Academy Award for his role 'Angelo
+Maggio' in 'From Here to Eternity'. I appropriated the name since this is like Sinatra on Reel (film).