Skip to content

ghnatiuk/erbal

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Erbal is a lightweight ERB parser based on the Ragel State Machine Compiler (www.complang.org/ragel/) and written in C. It’s very fast.

Please note that Erbal isn’t intended as a full replacement for the ERB implementation that ships with Ruby. Erbal only implements parsing of the following tags:

<%, <%=, <%#, -%>, %>

This is to keep Erbal very simple and very fast. If there’s a good case for implementing more features from ERB and it doesn’t impact performance or add much complexity then I’ll consider it. Personally I’ve never needed anything more.

require 'erbal'
e = Erbal.new("<% a=1 -%> a is: <%= a -%>", "@output_buffer")
src = e.parse
eval(src)

In your after_initialize block in config/environment.rb add:

require 'erbal/rails'
ActionView::Template.register_template_handler :erb, ErbalTemplateHandler

This benchmark was performed on a MacBook Pro with a 2.4Ghz Intel Core 2 Duo and 4GB 667Mhz DDR2 SDRAM. Running Mac OS X 10.6 (Snow Leopard). The code to run it is located in benchmark/bench.rb

Summary:

Erbal is 14.6x faster than Ruby’s ERB and 7.5x faster than Erubis.

Details:

Ruby: 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10] Erubis: 2.6.5 using Erubis::FastEruby. Erbal: 0.0.2

=> Warming up.... done
=> 10000 runs repeated 6 times

=> Erb:
 1) 13.01
 2) 13.00
 3) 13.01
 4) 13.04
 5) 13.13
 6) 13.23
=> Average: 13.07

=> Erbal:
 1) 0.90
 2) 0.89
 3) 0.89
 4) 0.90
 5) 0.89
 6) 0.89
=> Average: 0.89

=> Erubis:
 1) 6.63
 2) 6.67
 3) 6.69
 4) 6.71
 5) 6.72
 6) 6.75
=> Average: 6.70

Many thanks to Adrian Thurston for writing the Ragel State Machine Compiler (www.complang.org/ragel/)!

About

Very small, very fast Ragel/C based ERB parser

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors