* Rename 'markers' to 'token'

* Fix up the Rakefile's gem generation
* Add LICENSE
* Add a real README
This commit is contained in:
mahlon 2008-11-09 00:27:36 +00:00
parent f4051c5a35
commit 194fadda98
5 changed files with 183 additions and 138 deletions

View file

@ -1,7 +1,59 @@
The DATA constant
Preface:
The problem
Ruby provides an automatic constant called DATA, which is an IO object
that references all text in the current file under an __END__ token.
A workaround
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.