README.mkd in applix-0.4.11 vs README.mkd in applix-0.4.12
- old
+ new
@@ -50,9 +50,61 @@
becomes:
{ :foo => true, :bar => 'loo', :args => ["123", "now"] }
+## Command line micro DSLs with @argsloop@
+
+Imagine you have an app which could perform multiple operations on a excel
+sheet. Like reading, validating and reporting. You could put all variations in
+a single command which to call directly from a command line. A better is to
+break down such a procedure into single steps which can be performed
+independently and combined freely on the command line. Example procedure:
+
+ load <filename>
+ select <sheetname>
+ validate
+ print
+
+Now you can make this an applix command line DSL like this:
+
+ Applix.main(ARGV) do
+ any(argsloop: MyExcelApp.new)
+ end
+
+and calling it like:
+
+ $ my_app load <filename> select <sheetname> validate print
+
+Now to make applix call your app with the right commands and parameters the
+commands just have to take its parameters off the arg vector like this:
+
+ app.load(args)
+ filename = args.shift
+ ...
+ args
+ end
+
+ app.select(args)
+ sheetname = args.shift
+ ...
+ args
+ end
+
+ app.validate(args)
+ ...
+ args
+ end
+
+ app.print(args)
+ ...
+ args
+ end
+
+Adding new steps now is easy, like instead of print you could make an upload
+to another database for example without the need touch existing code.
+
+
## Note on Patches/Pull Requests
* Fork the project.
* Make your feature addition or bug fix.
* Add tests for it. This is important so I don't break it in a