README.markdown in remedy-0.0.3.pre vs README.markdown in remedy-0.0.3
- old
+ new
@@ -1,17 +1,32 @@
Remedy
======
Remedy is a console interaction framework along the lines of Curses written in pure Ruby with an Object-Oriented approach and baked-in support for bulding MVC applications.
+THIS SOFTWARE IS PRE-ALPHA!!
+----------------------------
+
+It's under active development and is being used in my own projects. However, expect bugs, missing features, etc.
+
+If you have any suggestions or find any bugs, drop them in GitHub/issues so I can keep track of them. Thanks!
+
Installation
------------
Add this line to your application's Gemfile:
- gem 'remedy'
+```ruby
+ gem 'remedy'
+```
+If you're only going to use part of Remedy, you can tell Bundler to not automatically require the whole thing:
+
+```ruby
+ gem 'remedy', require: false
+```
+
And then execute:
$ bundle
Or install it yourself as:
@@ -19,15 +34,83 @@
$ gem install remedy
Usage
-----
-TODO: Write usage instructions here
+Remedy makes a few different classes and modules available to allow straight forward half-duplex communication with users via the console.
+There are obejcts for input as well as output, including low level console keystroke reads and screen drawing.
+
+### Interaction
+
+The Interaction object wraps raw keyboard reads and streamlines some aspects of accepting keyboard input.
+
+```ruby
+ include Remedy
+ user_input = Interaction.new
+
+ user_input.loop do |key|
+ puts key
+ end
+```
+
+### Viewport
+
+Viewport is the object that draws on your screen, you can give it any compatible Remedy::Partial object, or something that responds like one.
+
+```ruby
+ include Remedy
+ joke = Content.new
+ joke << "Q: What's the difference between a duck?"
+ joke << "A: Purple, because ice cream has no bones!"
+
+ screen = Viewport.new
+ screen.draw joke
+```
+
+Remedy::Partial has the subclasses Header, Footer, and Content.
+
+You can use the above classes to divide your Views into 3 seperate pieces. Content will be truncated as needed to accomodate the header and footer and the dimensions of the console. You can also specify the cursor/scroll position of the content being drawn, and when specifying headers or footers, you must.
+
+```ruby
+ include Remedy
+ title = Header.new
+ title << "Someone Said These Were Good"
+
+ jokes = Content.new
+ jokes << %q{1. A woman gets on a bus with her baby. The bus driver says: 'Ugh, that's the ugliest baby I've ever seen!' The woman walks to the rear of the bus and sits down, fuming. She says to a man next to her: 'The driver just insulted me!' The man says: 'You go up there and tell him off. Go on, I'll hold your monkey for you.'}
+ jokes << %q{2. I went to the zoo the other day, there was only one dog in it, it was a shitzu.}
+
+ disclaimer = Footer.new
+ disclaimer << "According to a survey they were funny. I didn't make them."
+
+ screen = Viewport.new
+ screen.draw jokes, Size.new(0,0), title, disclaimer
+```
+
+### Console
+
+If you want easy access to some lower level console commands, you can use Console.
+
+The most interesting function in my opinion is the callback that gets triggered when the user resizes the console window.
+
+```ruby
+ include Remedy
+
+ screen = Viewport.new
+ notice = Content.new
+ notice << "You just resized your screen!\n\nBrilliant!"
+
+ Console.set_console_resized_hook! do
+ screen.draw notice
+ end
+```
+
Contributing
------------
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request
+