diff -r fe38422c10a4 -r bab54dae339a README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README Wed Jan 06 14:36:04 2016 -0800 @@ -0,0 +1,59 @@ + +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. + + 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". + + + 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. +