Overview
Installation
Usage
Bugs
Processr is a simple text processing and concatenation library. It takes a number of input strings (or files) and outputs a single string (or file) containing the result. Text can be passed through filters to modify the output.
The project is hosted on rubygems.org. Getting it is simple:
geminstallprocessr
Use the configuration block to setup Processr
Processr.configuredo|config|config.root = File.expand_path(File.dirname(__FILE__)) config.out = File.join(config.root, 'output.txt') end
If an output file is specified the result will be written to that file, otherwise the result will be returned directly from the #process! method.
processor = Processr.newprocessor<<"Some\n"processor<<"Text"processor.process!# => "Some\nText"
This will result in a concatenated string being returned.
processor = Processr.newprocessor.files<<'input_one.txt'processor.files<<'input_two.txt'processor.process!# => contents of input_one.txt and input_two.txt
This will result in the contents of input_one.txt and input_two.txt returned.
Filters can be used to modify the output of a processing session. A filter is any object that responds to #call. Filters take a single argument (the input buffer) and must return the modified buffer for further processing. For example:
lambdado|buffer|# ...do something with buffer here...bufferend
Or
classMyFilterdefself.call(buffer) # ...do something with buffer here...bufferendend
You can register a filter by calling #add_filter on an instance of Processr. A further example would be a really simple textile parser:
TextileFilter = lambdado|buffer|lookup = { /_(.*)_/=>'<em>\1</em>', /\*(.*)\*/=>'<strong>\1</strong>', /\"(.*)\":(\S*)/=>'<a href="\2">\1</a>' } lookup.each_pairdo|regex, replacement|buffer.gsub!(regex, replacement) endbufferendprocessor = Processr.newprocessor.add_filter(TextileFilter) processor<<'A _simple_ example of a "textile":http://www.textism.com/tools/textile/ parser using a *filter*.'processor.process!# => "A <em>simple</em> example of a <a href="http://www.textism.com/tools/textile/">textile</a> parser using a <strong>filter</strong>."
Run the examples for more information.
If you have any problems with processr, please file an issue at github.com/joshnesbitt/processr/issues.
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 future version unintentionally.
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
Send me a pull request. Bonus points for topic branches.
Copyright © 2010 Josh Nesbitt <josh@josh-nesbitt.net>. See LICENSE for details.