--- a/chunker/README Sat Nov 08 18:59:05 2008 +0000
+++ b/chunker/README Sun Nov 09 00:27:36 2008 +0000
@@ -1,7 +1,59 @@
-The DATA constant
+Preface:
+
+ Ruby provides an automatic constant called DATA, which is an IO object
+ that references all text in the current file under an __END__ token.
+
+ I find it convenient to use the __END__ area to store all sorts of
+ stuff, rather than have to worry about distributing separate files.
+
+
+The problem:
+
+ The DATA constant is determined from whatever ruby believes $0 to be.
+ It doesn't work inside of other required libraries, so you'll see stuff
+ like this all the time:
+
+ END = File.open( __FILE__ ).read.split( /^__END__/, 2 ).last
+
+ It works, but it's more work than I want to do.
+
+
+A workaround:
+
+ Chunker solves this by parsing __END__ tokens for you, and making it
+ available in the form of a 'DATA_END' constant. It installs this
+ constant into the class that includes Chunker, so you can use it again
+ and again, assuming you use a different file for each class.
-The problem
+ It also automatically parses out other things that look like tokens, so
+ you can easily have multiple, distinct documents all embedded into the
+ __END__ block.
+
+
+Usage:
+
+ There is no direct interface to Chunker. Just include it from a
+ class to have that file's __END__ data blocks magically become DATA_*
+ IO constants within that class.
+
+
+Example:
+
+ This produces the string "Yep.\n".
-A workaround
+
+ require 'chunker'
+ class Foom
+ include Chunker
+ end
+
+ puts Foom.new.class.const_get( :DATA_WICKED ).read
+ __END__
+ Stuff in the END block!
+ __WOW__
+ Ultimate success!
+ __WICKED__
+ Yep.
+