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).