* Rename 'markers' to 'token'
* Fix up the Rakefile's gem generation * Add LICENSE * Add a real README
This commit is contained in:
parent
f4051c5a35
commit
194fadda98
5 changed files with 183 additions and 138 deletions
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue