[rubygem-gherkin] Rebuilt for Ruby 1.9.3. Significantly simplified build process.

Bohuslav Kabrda bkabrda at fedoraproject.org
Mon Jan 23 14:46:29 UTC 2012


commit 9e063b09e6b51f95f344112c41cd5493a71eabf2
Author: Bohuslav Kabrda <bkabrda at redhat.com>
Date:   Mon Jan 23 15:46:07 2012 +0100

    Rebuilt for Ruby 1.9.3.
    Significantly simplified build process.

 gherkin-2.4.5-fix-gemspec.patch      |   46 -
 gherkin-2.4.5-remove-hash-line.patch | 4190 +++++++++++++++++-----------------
 rubygem-gherkin.spec                 |  111 +-
 3 files changed, 2143 insertions(+), 2204 deletions(-)
---
diff --git a/gherkin-2.4.5-remove-hash-line.patch b/gherkin-2.4.5-remove-hash-line.patch
index 4d8ba02..cd51e6d 100644
--- a/gherkin-2.4.5-remove-hash-line.patch
+++ b/gherkin-2.4.5-remove-hash-line.patch
@@ -1,8 +1,8 @@
---- gherkin-2.4.5/ext/gherkin_lexer_sv/gherkin_lexer_sv.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_sv/gherkin_lexer_sv.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_et/gherkin_lexer_et.c.orig	2012-01-23 14:51:32.423402293 +0100
++++ ext/gherkin_lexer_et/gherkin_lexer_et.c	2012-01-23 14:51:50.972338756 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -11,65 +11,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
+-#line 87 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -749,7 +749,7 @@ static const int lexer_error = 0;
+@@ -661,7 +661,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -914,14 +914,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -826,14 +826,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 918 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
+-#line 830 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
      
--#line 925 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
+-#line 837 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -995,7 +995,7 @@ _match:
+@@ -907,7 +907,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1003,20 +1003,20 @@ _match:
+@@ -915,20 +915,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -77,60 +77,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1026,37 +1026,37 @@ _match:
+@@ -938,37 +938,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1065,34 +1065,34 @@ _match:
+@@ -977,34 +977,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -138,7 +138,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -146,7 +146,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -154,116 +154,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1100,7 +1100,7 @@ _match:
+@@ -1012,7 +1012,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1109,13 +1109,13 @@ _match:
+@@ -1021,13 +1021,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1123,13 +1123,13 @@ _match:
+@@ -1035,13 +1035,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1145,13 +1145,13 @@ _match:
+@@ -1057,13 +1057,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1197,7 +1197,7 @@ _match:
+@@ -1109,7 +1109,7 @@ _match:
      }
    }
  	break;
--#line 1201 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
+-#line 1113 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
 +
  		}
  	}
  
-@@ -1214,7 +1214,7 @@ _again:
+@@ -1126,7 +1126,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1260,7 +1260,7 @@ _again:
+@@ -1172,7 +1172,7 @@ _again:
      }
    }
  	break;
--#line 1264 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
+-#line 1176 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
 +
  		}
  	}
  	}
-@@ -1268,7 +1268,7 @@ _again:
+@@ -1180,7 +1180,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_id/gherkin_lexer_id.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_id/gherkin_lexer_id.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_hr/gherkin_lexer_hr.c.orig	2012-01-23 14:51:32.424402290 +0100
++++ ext/gherkin_lexer_hr/gherkin_lexer_hr.c	2012-01-23 14:51:50.976338743 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -272,65 +272,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
+-#line 87 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -630,7 +630,7 @@ static const int lexer_error = 0;
+@@ -750,7 +750,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -795,14 +795,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -915,14 +915,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 799 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
+-#line 919 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
      
--#line 806 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
+-#line 926 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -876,7 +876,7 @@ _match:
+@@ -996,7 +996,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -884,20 +884,20 @@ _match:
+@@ -1004,20 +1004,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -338,60 +338,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -907,37 +907,37 @@ _match:
+@@ -1027,37 +1027,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -946,34 +946,34 @@ _match:
+@@ -1066,34 +1066,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -399,7 +399,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -407,7 +407,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -415,116 +415,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -981,7 +981,7 @@ _match:
+@@ -1101,7 +1101,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -990,13 +990,13 @@ _match:
+@@ -1110,13 +1110,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1004,13 +1004,13 @@ _match:
+@@ -1124,13 +1124,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1026,13 +1026,13 @@ _match:
+@@ -1146,13 +1146,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1078,7 +1078,7 @@ _match:
+@@ -1198,7 +1198,7 @@ _match:
      }
    }
  	break;
--#line 1082 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
+-#line 1202 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
 +
  		}
  	}
  
-@@ -1095,7 +1095,7 @@ _again:
+@@ -1215,7 +1215,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1141,7 +1141,7 @@ _again:
+@@ -1261,7 +1261,7 @@ _again:
      }
    }
  	break;
--#line 1145 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
+-#line 1265 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
 +
  		}
  	}
  	}
-@@ -1149,7 +1149,7 @@ _again:
+@@ -1269,7 +1269,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_lu/gherkin_lexer_lu.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_lu/gherkin_lexer_lu.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_he/gherkin_lexer_he.c.orig	2012-01-23 14:51:32.424402290 +0100
++++ ext/gherkin_lexer_he/gherkin_lexer_he.c	2012-01-23 14:51:50.979338732 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -533,65 +533,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
+-#line 87 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -814,7 +814,7 @@ static const int lexer_error = 0;
+@@ -801,7 +801,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -979,14 +979,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -966,14 +966,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 983 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
+-#line 970 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
      
--#line 990 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
+-#line 977 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1060,7 +1060,7 @@ _match:
+@@ -1047,7 +1047,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1068,20 +1068,20 @@ _match:
+@@ -1055,20 +1055,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -599,60 +599,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1091,37 +1091,37 @@ _match:
+@@ -1078,37 +1078,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1130,34 +1130,34 @@ _match:
+@@ -1117,34 +1117,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -660,7 +660,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -668,7 +668,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -676,116 +676,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1165,7 +1165,7 @@ _match:
+@@ -1152,7 +1152,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1174,13 +1174,13 @@ _match:
+@@ -1161,13 +1161,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1188,13 +1188,13 @@ _match:
+@@ -1175,13 +1175,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1210,13 +1210,13 @@ _match:
+@@ -1197,13 +1197,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1262,7 +1262,7 @@ _match:
+@@ -1249,7 +1249,7 @@ _match:
      }
    }
  	break;
--#line 1266 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
+-#line 1253 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
 +
  		}
  	}
  
-@@ -1279,7 +1279,7 @@ _again:
+@@ -1266,7 +1266,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1325,7 +1325,7 @@ _again:
+@@ -1312,7 +1312,7 @@ _again:
      }
    }
  	break;
--#line 1329 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
+-#line 1316 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
 +
  		}
  	}
  	}
-@@ -1333,7 +1333,7 @@ _again:
+@@ -1320,7 +1320,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_cs/gherkin_lexer_cs.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_cs/gherkin_lexer_cs.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c.orig	2012-01-23 14:51:32.424402290 +0100
++++ ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c	2012-01-23 14:51:50.983338719 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -794,65 +794,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
+-#line 87 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -854,7 +854,7 @@ static const int lexer_error = 0;
+@@ -650,7 +650,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1019,14 +1019,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -815,14 +815,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1023 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
+-#line 819 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
      
--#line 1030 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
+-#line 826 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1100,7 +1100,7 @@ _match:
+@@ -896,7 +896,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1108,20 +1108,20 @@ _match:
+@@ -904,20 +904,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -860,60 +860,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1131,37 +1131,37 @@ _match:
+@@ -927,37 +927,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1170,34 +1170,34 @@ _match:
+@@ -966,34 +966,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -921,7 +921,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -929,7 +929,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -937,116 +937,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1205,7 +1205,7 @@ _match:
+@@ -1001,7 +1001,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1214,13 +1214,13 @@ _match:
+@@ -1010,13 +1010,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1228,13 +1228,13 @@ _match:
+@@ -1024,13 +1024,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1250,13 +1250,13 @@ _match:
+@@ -1046,13 +1046,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1302,7 +1302,7 @@ _match:
+@@ -1098,7 +1098,7 @@ _match:
      }
    }
  	break;
--#line 1306 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
+-#line 1102 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
 +
  		}
  	}
  
-@@ -1319,7 +1319,7 @@ _again:
+@@ -1115,7 +1115,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1365,7 +1365,7 @@ _again:
+@@ -1161,7 +1161,7 @@ _again:
      }
    }
  	break;
--#line 1369 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
+-#line 1165 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
 +
  		}
  	}
  	}
-@@ -1373,7 +1373,7 @@ _again:
+@@ -1169,7 +1169,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_pt/gherkin_lexer_pt.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_pt/gherkin_lexer_pt.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_no/gherkin_lexer_no.c.orig	2012-01-23 14:51:32.424402290 +0100
++++ ext/gherkin_lexer_no/gherkin_lexer_no.c	2012-01-23 14:51:50.988338702 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -1055,65 +1055,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
+-#line 87 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -754,7 +754,7 @@ static const int lexer_error = 0;
+@@ -738,7 +738,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -919,14 +919,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -903,14 +903,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 923 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
+-#line 907 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
      
--#line 930 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
+-#line 914 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1000,7 +1000,7 @@ _match:
+@@ -984,7 +984,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1008,20 +1008,20 @@ _match:
+@@ -992,20 +992,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -1121,60 +1121,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1031,37 +1031,37 @@ _match:
+@@ -1015,37 +1015,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1070,34 +1070,34 @@ _match:
+@@ -1054,34 +1054,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -1182,7 +1182,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -1190,7 +1190,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -1198,116 +1198,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1105,7 +1105,7 @@ _match:
+@@ -1089,7 +1089,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1114,13 +1114,13 @@ _match:
+@@ -1098,13 +1098,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1128,13 +1128,13 @@ _match:
+@@ -1112,13 +1112,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1150,13 +1150,13 @@ _match:
+@@ -1134,13 +1134,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1202,7 +1202,7 @@ _match:
+@@ -1186,7 +1186,7 @@ _match:
      }
    }
  	break;
--#line 1206 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
+-#line 1190 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
 +
  		}
  	}
  
-@@ -1219,7 +1219,7 @@ _again:
+@@ -1203,7 +1203,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1265,7 +1265,7 @@ _again:
+@@ -1249,7 +1249,7 @@ _again:
      }
    }
  	break;
--#line 1269 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
+-#line 1253 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
 +
  		}
  	}
  	}
-@@ -1273,7 +1273,7 @@ _again:
+@@ -1257,7 +1257,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_bg/gherkin_lexer_bg.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_bg/gherkin_lexer_bg.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_fr/gherkin_lexer_fr.c.orig	2012-01-23 14:51:32.424402290 +0100
++++ ext/gherkin_lexer_fr/gherkin_lexer_fr.c	2012-01-23 14:51:50.993338684 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -1316,65 +1316,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
+-#line 87 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -1082,7 +1082,7 @@ static const int lexer_error = 0;
+@@ -878,7 +878,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1247,14 +1247,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1043,14 +1043,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1251 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
+-#line 1047 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
      
--#line 1258 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
+-#line 1054 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1328,7 +1328,7 @@ _match:
+@@ -1124,7 +1124,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1336,20 +1336,20 @@ _match:
+@@ -1132,20 +1132,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -1382,60 +1382,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1359,37 +1359,37 @@ _match:
+@@ -1155,37 +1155,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1398,34 +1398,34 @@ _match:
+@@ -1194,34 +1194,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -1443,7 +1443,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -1451,7 +1451,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -1459,116 +1459,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1433,7 +1433,7 @@ _match:
+@@ -1229,7 +1229,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1442,13 +1442,13 @@ _match:
+@@ -1238,13 +1238,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1456,13 +1456,13 @@ _match:
+@@ -1252,13 +1252,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1478,13 +1478,13 @@ _match:
+@@ -1274,13 +1274,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1530,7 +1530,7 @@ _match:
+@@ -1326,7 +1326,7 @@ _match:
      }
    }
  	break;
--#line 1534 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
+-#line 1330 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
 +
  		}
  	}
  
-@@ -1547,7 +1547,7 @@ _again:
+@@ -1343,7 +1343,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1593,7 +1593,7 @@ _again:
+@@ -1389,7 +1389,7 @@ _again:
      }
    }
  	break;
--#line 1597 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
+-#line 1393 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
 +
  		}
  	}
  	}
-@@ -1601,7 +1601,7 @@ _again:
+@@ -1397,7 +1397,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_lt/gherkin_lexer_lt.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_lt/gherkin_lexer_lt.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c.orig	2012-01-23 14:51:32.425402286 +0100
++++ ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c	2012-01-23 14:51:50.998338667 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -1577,65 +1577,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
+-#line 87 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -722,7 +722,7 @@ static const int lexer_error = 0;
+@@ -994,7 +994,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -887,14 +887,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1159,14 +1159,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 891 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
+-#line 1163 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
      
--#line 898 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
+-#line 1170 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -968,7 +968,7 @@ _match:
+@@ -1240,7 +1240,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -976,20 +976,20 @@ _match:
+@@ -1248,20 +1248,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -1643,60 +1643,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -999,37 +999,37 @@ _match:
+@@ -1271,37 +1271,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1038,34 +1038,34 @@ _match:
+@@ -1310,34 +1310,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -1704,7 +1704,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -1712,7 +1712,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -1720,116 +1720,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1073,7 +1073,7 @@ _match:
+@@ -1345,7 +1345,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1082,13 +1082,13 @@ _match:
+@@ -1354,13 +1354,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1096,13 +1096,13 @@ _match:
+@@ -1368,13 +1368,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1118,13 +1118,13 @@ _match:
+@@ -1390,13 +1390,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1170,7 +1170,7 @@ _match:
+@@ -1442,7 +1442,7 @@ _match:
      }
    }
  	break;
--#line 1174 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
+-#line 1446 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
 +
  		}
  	}
  
-@@ -1187,7 +1187,7 @@ _again:
+@@ -1459,7 +1459,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1233,7 +1233,7 @@ _again:
+@@ -1505,7 +1505,7 @@ _again:
      }
    }
  	break;
--#line 1237 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
+-#line 1509 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
 +
  		}
  	}
  	}
-@@ -1241,7 +1241,7 @@ _again:
+@@ -1513,7 +1513,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_he/gherkin_lexer_he.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_he/gherkin_lexer_he.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_ko/gherkin_lexer_ko.c.orig	2012-01-23 14:51:32.425402286 +0100
++++ ext/gherkin_lexer_ko/gherkin_lexer_ko.c	2012-01-23 14:51:51.003338651 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -1838,65 +1838,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
+-#line 87 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -801,7 +801,7 @@ static const int lexer_error = 0;
+@@ -787,7 +787,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -966,14 +966,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -952,14 +952,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 970 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
+-#line 956 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
      
--#line 977 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
+-#line 963 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1047,7 +1047,7 @@ _match:
+@@ -1033,7 +1033,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1055,20 +1055,20 @@ _match:
+@@ -1041,20 +1041,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -1904,60 +1904,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1078,37 +1078,37 @@ _match:
+@@ -1064,37 +1064,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1117,34 +1117,34 @@ _match:
+@@ -1103,34 +1103,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -1965,7 +1965,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -1973,7 +1973,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -1981,116 +1981,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1152,7 +1152,7 @@ _match:
+@@ -1138,7 +1138,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1161,13 +1161,13 @@ _match:
+@@ -1147,13 +1147,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1175,13 +1175,13 @@ _match:
+@@ -1161,13 +1161,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1197,13 +1197,13 @@ _match:
+@@ -1183,13 +1183,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1249,7 +1249,7 @@ _match:
+@@ -1235,7 +1235,7 @@ _match:
      }
    }
  	break;
--#line 1253 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
+-#line 1239 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
 +
  		}
  	}
  
-@@ -1266,7 +1266,7 @@ _again:
+@@ -1252,7 +1252,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1312,7 +1312,7 @@ _again:
+@@ -1298,7 +1298,7 @@ _again:
      }
    }
  	break;
--#line 1316 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
+-#line 1302 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
 +
  		}
  	}
  	}
-@@ -1320,7 +1320,7 @@ _again:
+@@ -1306,7 +1306,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c.orig	2012-01-23 14:51:32.425402286 +0100
++++ ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c	2012-01-23 14:51:51.008338633 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -2099,65 +2099,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
+-#line 87 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -994,7 +994,7 @@ static const int lexer_error = 0;
+@@ -692,7 +692,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1159,14 +1159,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -857,14 +857,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1163 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
+-#line 861 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
      
--#line 1170 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
+-#line 868 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1240,7 +1240,7 @@ _match:
+@@ -938,7 +938,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1248,20 +1248,20 @@ _match:
+@@ -946,20 +946,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -2165,60 +2165,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1271,37 +1271,37 @@ _match:
+@@ -969,37 +969,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1310,34 +1310,34 @@ _match:
+@@ -1008,34 +1008,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -2226,7 +2226,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -2234,7 +2234,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -2242,116 +2242,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1345,7 +1345,7 @@ _match:
+@@ -1043,7 +1043,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1354,13 +1354,13 @@ _match:
+@@ -1052,13 +1052,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1368,13 +1368,13 @@ _match:
+@@ -1066,13 +1066,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1390,13 +1390,13 @@ _match:
+@@ -1088,13 +1088,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1442,7 +1442,7 @@ _match:
+@@ -1140,7 +1140,7 @@ _match:
      }
    }
  	break;
--#line 1446 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
+-#line 1144 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
 +
  		}
  	}
  
-@@ -1459,7 +1459,7 @@ _again:
+@@ -1157,7 +1157,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1505,7 +1505,7 @@ _again:
+@@ -1203,7 +1203,7 @@ _again:
      }
    }
  	break;
--#line 1509 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
+-#line 1207 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
 +
  		}
  	}
  	}
-@@ -1513,7 +1513,7 @@ _again:
+@@ -1211,7 +1211,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_de/gherkin_lexer_de.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_de/gherkin_lexer_de.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c.orig	2012-01-23 14:51:32.425402286 +0100
++++ ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c	2012-01-23 14:51:51.012338619 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -2360,65 +2360,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
+-#line 87 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -842,7 +842,7 @@ static const int lexer_error = 0;
+@@ -650,7 +650,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1007,14 +1007,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -815,14 +815,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1011 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
+-#line 819 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
      
--#line 1018 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
+-#line 826 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1088,7 +1088,7 @@ _match:
+@@ -896,7 +896,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1096,20 +1096,20 @@ _match:
+@@ -904,20 +904,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -2426,60 +2426,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1119,37 +1119,37 @@ _match:
+@@ -927,37 +927,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1158,34 +1158,34 @@ _match:
+@@ -966,34 +966,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -2487,7 +2487,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -2495,7 +2495,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -2503,116 +2503,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1193,7 +1193,7 @@ _match:
+@@ -1001,7 +1001,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1202,13 +1202,13 @@ _match:
+@@ -1010,13 +1010,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1216,13 +1216,13 @@ _match:
+@@ -1024,13 +1024,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1238,13 +1238,13 @@ _match:
+@@ -1046,13 +1046,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1290,7 +1290,7 @@ _match:
+@@ -1098,7 +1098,7 @@ _match:
      }
    }
  	break;
--#line 1294 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
+-#line 1102 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
 +
  		}
  	}
  
-@@ -1307,7 +1307,7 @@ _again:
+@@ -1115,7 +1115,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1353,7 +1353,7 @@ _again:
+@@ -1161,7 +1161,7 @@ _again:
      }
    }
  	break;
--#line 1357 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
+-#line 1165 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
 +
  		}
  	}
  	}
-@@ -1361,7 +1361,7 @@ _again:
+@@ -1169,7 +1169,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_hr/gherkin_lexer_hr.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_hr/gherkin_lexer_hr.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c.orig	2012-01-23 14:51:32.425402286 +0100
++++ ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c	2012-01-23 14:51:51.017338602 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -2621,65 +2621,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
+-#line 87 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -750,7 +750,7 @@ static const int lexer_error = 0;
+@@ -709,7 +709,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -915,14 +915,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -874,14 +874,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 919 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
+-#line 878 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
      
--#line 926 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
+-#line 885 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -996,7 +996,7 @@ _match:
+@@ -955,7 +955,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1004,20 +1004,20 @@ _match:
+@@ -963,20 +963,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -2687,60 +2687,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1027,37 +1027,37 @@ _match:
+@@ -986,37 +986,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1066,34 +1066,34 @@ _match:
+@@ -1025,34 +1025,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -2748,7 +2748,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -2756,7 +2756,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -2764,116 +2764,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1101,7 +1101,7 @@ _match:
+@@ -1060,7 +1060,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1110,13 +1110,13 @@ _match:
+@@ -1069,13 +1069,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1124,13 +1124,13 @@ _match:
+@@ -1083,13 +1083,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1146,13 +1146,13 @@ _match:
+@@ -1105,13 +1105,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1198,7 +1198,7 @@ _match:
+@@ -1157,7 +1157,7 @@ _match:
      }
    }
  	break;
--#line 1202 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
+-#line 1161 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
 +
  		}
  	}
  
-@@ -1215,7 +1215,7 @@ _again:
+@@ -1174,7 +1174,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1261,7 +1261,7 @@ _again:
+@@ -1220,7 +1220,7 @@ _again:
      }
    }
  	break;
--#line 1265 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
+-#line 1224 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
 +
  		}
  	}
  	}
-@@ -1269,7 +1269,7 @@ _again:
+@@ -1228,7 +1228,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_ru/gherkin_lexer_ru.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_ru/gherkin_lexer_ru.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_pt/gherkin_lexer_pt.c.orig	2012-01-23 14:51:32.425402286 +0100
++++ ext/gherkin_lexer_pt/gherkin_lexer_pt.c	2012-01-23 14:51:51.021338589 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -2882,65 +2882,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
+-#line 87 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -1482,7 +1482,7 @@ static const int lexer_error = 0;
+@@ -754,7 +754,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1647,14 +1647,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -919,14 +919,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1651 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
+-#line 923 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
      
--#line 1658 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
+-#line 930 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1728,7 +1728,7 @@ _match:
+@@ -1000,7 +1000,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1736,20 +1736,20 @@ _match:
+@@ -1008,20 +1008,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -2948,60 +2948,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1759,37 +1759,37 @@ _match:
+@@ -1031,37 +1031,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1798,34 +1798,34 @@ _match:
+@@ -1070,34 +1070,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -3009,7 +3009,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -3017,7 +3017,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -3025,116 +3025,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1833,7 +1833,7 @@ _match:
+@@ -1105,7 +1105,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1842,13 +1842,13 @@ _match:
+@@ -1114,13 +1114,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1856,13 +1856,13 @@ _match:
+@@ -1128,13 +1128,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1878,13 +1878,13 @@ _match:
+@@ -1150,13 +1150,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1930,7 +1930,7 @@ _match:
+@@ -1202,7 +1202,7 @@ _match:
      }
    }
  	break;
--#line 1934 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
+-#line 1206 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
 +
  		}
  	}
  
-@@ -1947,7 +1947,7 @@ _again:
+@@ -1219,7 +1219,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1993,7 +1993,7 @@ _again:
+@@ -1265,7 +1265,7 @@ _again:
      }
    }
  	break;
--#line 1997 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
+-#line 1269 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
 +
  		}
  	}
  	}
-@@ -2001,7 +2001,7 @@ _again:
+@@ -1273,7 +1273,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_hu/gherkin_lexer_hu.c.orig	2012-01-23 14:51:32.426402282 +0100
++++ ext/gherkin_lexer_hu/gherkin_lexer_hu.c	2012-01-23 14:51:51.026338571 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -3143,65 +3143,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
+-#line 87 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -650,7 +650,7 @@ static const int lexer_error = 0;
+@@ -801,7 +801,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -815,14 +815,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -966,14 +966,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 819 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
+-#line 970 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
      
--#line 826 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
+-#line 977 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -896,7 +896,7 @@ _match:
+@@ -1047,7 +1047,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -904,20 +904,20 @@ _match:
+@@ -1055,20 +1055,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -3209,60 +3209,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -927,37 +927,37 @@ _match:
+@@ -1078,37 +1078,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -966,34 +966,34 @@ _match:
+@@ -1117,34 +1117,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -3270,7 +3270,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -3278,7 +3278,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -3286,116 +3286,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1001,7 +1001,7 @@ _match:
+@@ -1152,7 +1152,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1010,13 +1010,13 @@ _match:
+@@ -1161,13 +1161,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1024,13 +1024,13 @@ _match:
+@@ -1175,13 +1175,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1046,13 +1046,13 @@ _match:
+@@ -1197,13 +1197,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1098,7 +1098,7 @@ _match:
+@@ -1249,7 +1249,7 @@ _match:
      }
    }
  	break;
--#line 1102 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
+-#line 1253 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
 +
  		}
  	}
  
-@@ -1115,7 +1115,7 @@ _again:
+@@ -1266,7 +1266,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1161,7 +1161,7 @@ _again:
+@@ -1312,7 +1312,7 @@ _again:
      }
    }
  	break;
--#line 1165 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
+-#line 1316 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
 +
  		}
  	}
  	}
-@@ -1169,7 +1169,7 @@ _again:
+@@ -1320,7 +1320,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_eo/gherkin_lexer_eo.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_eo/gherkin_lexer_eo.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_es/gherkin_lexer_es.c.orig	2012-01-23 14:51:32.426402282 +0100
++++ ext/gherkin_lexer_es/gherkin_lexer_es.c	2012-01-23 14:51:51.031338554 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -3404,65 +3404,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
+-#line 87 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -663,7 +663,7 @@ static const int lexer_error = 0;
+@@ -805,7 +805,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -828,14 +828,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -970,14 +970,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 832 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
+-#line 974 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
      
--#line 839 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
+-#line 981 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -909,7 +909,7 @@ _match:
+@@ -1051,7 +1051,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -917,20 +917,20 @@ _match:
+@@ -1059,20 +1059,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -3470,60 +3470,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -940,37 +940,37 @@ _match:
+@@ -1082,37 +1082,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -979,34 +979,34 @@ _match:
+@@ -1121,34 +1121,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -3531,7 +3531,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -3539,7 +3539,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -3547,116 +3547,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1014,7 +1014,7 @@ _match:
+@@ -1156,7 +1156,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1023,13 +1023,13 @@ _match:
+@@ -1165,13 +1165,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1037,13 +1037,13 @@ _match:
+@@ -1179,13 +1179,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1059,13 +1059,13 @@ _match:
+@@ -1201,13 +1201,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1111,7 +1111,7 @@ _match:
+@@ -1253,7 +1253,7 @@ _match:
      }
    }
  	break;
--#line 1115 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
+-#line 1257 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
 +
  		}
  	}
  
-@@ -1128,7 +1128,7 @@ _again:
+@@ -1270,7 +1270,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1174,7 +1174,7 @@ _again:
+@@ -1316,7 +1316,7 @@ _again:
      }
    }
  	break;
--#line 1178 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
+-#line 1320 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
 +
  		}
  	}
  	}
-@@ -1182,7 +1182,7 @@ _again:
+@@ -1324,7 +1324,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_nl/gherkin_lexer_nl.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_nl/gherkin_lexer_nl.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c.orig	2012-01-23 14:51:32.426402282 +0100
++++ ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c	2012-01-23 14:51:51.036338538 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -3665,65 +3665,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
+-#line 87 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -790,7 +790,7 @@ static const int lexer_error = 0;
+@@ -898,7 +898,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -955,14 +955,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1063,14 +1063,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 959 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
+-#line 1067 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
      
--#line 966 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
+-#line 1074 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1036,7 +1036,7 @@ _match:
+@@ -1144,7 +1144,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1044,20 +1044,20 @@ _match:
+@@ -1152,20 +1152,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -3731,60 +3731,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1067,37 +1067,37 @@ _match:
+@@ -1175,37 +1175,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1106,34 +1106,34 @@ _match:
+@@ -1214,34 +1214,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -3792,7 +3792,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -3800,7 +3800,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -3808,116 +3808,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1141,7 +1141,7 @@ _match:
+@@ -1249,7 +1249,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1150,13 +1150,13 @@ _match:
+@@ -1258,13 +1258,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1164,13 +1164,13 @@ _match:
+@@ -1272,13 +1272,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1186,13 +1186,13 @@ _match:
+@@ -1294,13 +1294,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1238,7 +1238,7 @@ _match:
+@@ -1346,7 +1346,7 @@ _match:
      }
    }
  	break;
--#line 1242 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
+-#line 1350 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
 +
  		}
  	}
  
-@@ -1255,7 +1255,7 @@ _again:
+@@ -1363,7 +1363,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1301,7 +1301,7 @@ _again:
+@@ -1409,7 +1409,7 @@ _again:
      }
    }
  	break;
--#line 1305 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
+-#line 1413 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
 +
  		}
  	}
  	}
-@@ -1309,7 +1309,7 @@ _again:
+@@ -1417,7 +1417,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_en/gherkin_lexer_en.c.orig	2012-01-23 14:51:32.426402282 +0100
++++ ext/gherkin_lexer_en/gherkin_lexer_en.c	2012-01-23 14:51:51.041338520 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -3926,65 +3926,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
+-#line 87 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -602,7 +602,7 @@ static const int lexer_error = 0;
+@@ -692,7 +692,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -767,14 +767,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -857,14 +857,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 771 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
+-#line 861 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
      
--#line 778 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
+-#line 868 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -848,7 +848,7 @@ _match:
+@@ -938,7 +938,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -856,20 +856,20 @@ _match:
+@@ -946,20 +946,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -3992,60 +3992,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -879,37 +879,37 @@ _match:
+@@ -969,37 +969,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -918,34 +918,34 @@ _match:
+@@ -1008,34 +1008,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -4053,7 +4053,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -4061,7 +4061,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -4069,116 +4069,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -953,7 +953,7 @@ _match:
+@@ -1043,7 +1043,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -962,13 +962,13 @@ _match:
+@@ -1052,13 +1052,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -976,13 +976,13 @@ _match:
+@@ -1066,13 +1066,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -998,13 +998,13 @@ _match:
+@@ -1088,13 +1088,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1050,7 +1050,7 @@ _match:
+@@ -1140,7 +1140,7 @@ _match:
      }
    }
  	break;
--#line 1054 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
+-#line 1144 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
 +
  		}
  	}
  
-@@ -1067,7 +1067,7 @@ _again:
+@@ -1157,7 +1157,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1113,7 +1113,7 @@ _again:
+@@ -1203,7 +1203,7 @@ _again:
      }
    }
  	break;
--#line 1117 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
+-#line 1207 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
 +
  		}
  	}
  	}
-@@ -1121,7 +1121,7 @@ _again:
+@@ -1211,7 +1211,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_eo/gherkin_lexer_eo.c.orig	2012-01-23 14:51:32.426402282 +0100
++++ ext/gherkin_lexer_eo/gherkin_lexer_eo.c	2012-01-23 14:51:51.045338506 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -4187,65 +4187,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
+-#line 87 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -898,7 +898,7 @@ static const int lexer_error = 0;
+@@ -663,7 +663,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1063,14 +1063,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -828,14 +828,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1067 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
+-#line 832 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
      
--#line 1074 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
+-#line 839 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1144,7 +1144,7 @@ _match:
+@@ -909,7 +909,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1152,20 +1152,20 @@ _match:
+@@ -917,20 +917,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -4253,60 +4253,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1175,37 +1175,37 @@ _match:
+@@ -940,37 +940,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1214,34 +1214,34 @@ _match:
+@@ -979,34 +979,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -4314,7 +4314,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -4322,7 +4322,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -4330,116 +4330,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1249,7 +1249,7 @@ _match:
+@@ -1014,7 +1014,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1258,13 +1258,13 @@ _match:
+@@ -1023,13 +1023,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1272,13 +1272,13 @@ _match:
+@@ -1037,13 +1037,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1294,13 +1294,13 @@ _match:
+@@ -1059,13 +1059,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1346,7 +1346,7 @@ _match:
+@@ -1111,7 +1111,7 @@ _match:
      }
    }
  	break;
--#line 1350 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
+-#line 1115 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
 +
  		}
  	}
  
-@@ -1363,7 +1363,7 @@ _again:
+@@ -1128,7 +1128,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1409,7 +1409,7 @@ _again:
+@@ -1174,7 +1174,7 @@ _again:
      }
    }
  	break;
--#line 1413 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
+-#line 1178 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
 +
  		}
  	}
  	}
-@@ -1417,7 +1417,7 @@ _again:
+@@ -1182,7 +1182,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_fi/gherkin_lexer_fi.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_fi/gherkin_lexer_fi.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_da/gherkin_lexer_da.c.orig	2012-01-23 14:51:32.426402282 +0100
++++ ext/gherkin_lexer_da/gherkin_lexer_da.c	2012-01-23 14:51:51.050338489 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -4448,65 +4448,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
+-#line 87 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -640,7 +640,7 @@ static const int lexer_error = 0;
+@@ -725,7 +725,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -805,14 +805,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -890,14 +890,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 809 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
+-#line 894 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
      
--#line 816 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
+-#line 901 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -886,7 +886,7 @@ _match:
+@@ -971,7 +971,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -894,20 +894,20 @@ _match:
+@@ -979,20 +979,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -4514,60 +4514,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -917,37 +917,37 @@ _match:
+@@ -1002,37 +1002,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -956,34 +956,34 @@ _match:
+@@ -1041,34 +1041,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -4575,7 +4575,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -4583,7 +4583,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -4591,116 +4591,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -991,7 +991,7 @@ _match:
+@@ -1076,7 +1076,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1000,13 +1000,13 @@ _match:
+@@ -1085,13 +1085,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1014,13 +1014,13 @@ _match:
+@@ -1099,13 +1099,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1036,13 +1036,13 @@ _match:
+@@ -1121,13 +1121,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1088,7 +1088,7 @@ _match:
+@@ -1173,7 +1173,7 @@ _match:
      }
    }
  	break;
--#line 1092 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
+-#line 1177 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
 +
  		}
  	}
  
-@@ -1105,7 +1105,7 @@ _again:
+@@ -1190,7 +1190,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1151,7 +1151,7 @@ _again:
+@@ -1236,7 +1236,7 @@ _again:
      }
    }
  	break;
--#line 1155 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
+-#line 1240 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
 +
  		}
  	}
  	}
-@@ -1159,7 +1159,7 @@ _again:
+@@ -1244,7 +1244,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_sk/gherkin_lexer_sk.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_sk/gherkin_lexer_sk.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_sv/gherkin_lexer_sv.c.orig	2012-01-23 14:51:32.427402278 +0100
++++ ext/gherkin_lexer_sv/gherkin_lexer_sv.c	2012-01-23 14:51:51.054338475 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -4709,65 +4709,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
+-#line 87 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -725,7 +725,7 @@ static const int lexer_error = 0;
+@@ -749,7 +749,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -890,14 +890,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -914,14 +914,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 894 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
+-#line 918 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
      
--#line 901 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
+-#line 925 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -971,7 +971,7 @@ _match:
+@@ -995,7 +995,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -979,20 +979,20 @@ _match:
+@@ -1003,20 +1003,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -4775,60 +4775,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1002,37 +1002,37 @@ _match:
+@@ -1026,37 +1026,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1041,34 +1041,34 @@ _match:
+@@ -1065,34 +1065,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -4836,7 +4836,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -4844,7 +4844,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -4852,116 +4852,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1076,7 +1076,7 @@ _match:
+@@ -1100,7 +1100,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1085,13 +1085,13 @@ _match:
+@@ -1109,13 +1109,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1099,13 +1099,13 @@ _match:
+@@ -1123,13 +1123,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1121,13 +1121,13 @@ _match:
+@@ -1145,13 +1145,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1173,7 +1173,7 @@ _match:
+@@ -1197,7 +1197,7 @@ _match:
      }
    }
  	break;
--#line 1177 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
+-#line 1201 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
 +
  		}
  	}
  
-@@ -1190,7 +1190,7 @@ _again:
+@@ -1214,7 +1214,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1236,7 +1236,7 @@ _again:
+@@ -1260,7 +1260,7 @@ _again:
      }
    }
  	break;
--#line 1240 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
+-#line 1264 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
 +
  		}
  	}
  	}
-@@ -1244,7 +1244,7 @@ _again:
+@@ -1268,7 +1268,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c.orig	2012-01-23 14:51:32.427402278 +0100
++++ ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c	2012-01-23 14:51:51.060338455 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -4970,65 +4970,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
+-#line 87 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -1537,7 +1537,7 @@ static const int lexer_error = 0;
+@@ -1059,7 +1059,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1702,14 +1702,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1224,14 +1224,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1706 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
+-#line 1228 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
      
--#line 1713 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
+-#line 1235 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1783,7 +1783,7 @@ _match:
+@@ -1305,7 +1305,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1791,20 +1791,20 @@ _match:
+@@ -1313,20 +1313,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -5036,60 +5036,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1814,37 +1814,37 @@ _match:
+@@ -1336,37 +1336,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1853,34 +1853,34 @@ _match:
+@@ -1375,34 +1375,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -5097,7 +5097,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -5105,7 +5105,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -5113,116 +5113,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1888,7 +1888,7 @@ _match:
+@@ -1410,7 +1410,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1897,13 +1897,13 @@ _match:
+@@ -1419,13 +1419,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1911,13 +1911,13 @@ _match:
+@@ -1433,13 +1433,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1933,13 +1933,13 @@ _match:
+@@ -1455,13 +1455,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1985,7 +1985,7 @@ _match:
+@@ -1507,7 +1507,7 @@ _match:
      }
    }
  	break;
--#line 1989 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
+-#line 1511 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
 +
  		}
  	}
  
-@@ -2002,7 +2002,7 @@ _again:
+@@ -1524,7 +1524,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -2048,7 +2048,7 @@ _again:
+@@ -1570,7 +1570,7 @@ _again:
      }
    }
  	break;
--#line 2052 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
+-#line 1574 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
 +
  		}
  	}
  	}
-@@ -2056,7 +2056,7 @@ _again:
+@@ -1578,7 +1578,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_fr/gherkin_lexer_fr.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_fr/gherkin_lexer_fr.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_bg/gherkin_lexer_bg.c.orig	2012-01-23 14:51:32.427402278 +0100
++++ ext/gherkin_lexer_bg/gherkin_lexer_bg.c	2012-01-23 14:51:51.066338434 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -5231,65 +5231,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
+-#line 87 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -878,7 +878,7 @@ static const int lexer_error = 0;
+@@ -1082,7 +1082,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1043,14 +1043,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1247,14 +1247,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1047 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
+-#line 1251 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
      
--#line 1054 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
+-#line 1258 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1124,7 +1124,7 @@ _match:
+@@ -1328,7 +1328,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1132,20 +1132,20 @@ _match:
+@@ -1336,20 +1336,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -5297,60 +5297,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1155,37 +1155,37 @@ _match:
+@@ -1359,37 +1359,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1194,34 +1194,34 @@ _match:
+@@ -1398,34 +1398,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -5358,7 +5358,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -5366,7 +5366,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -5374,116 +5374,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1229,7 +1229,7 @@ _match:
+@@ -1433,7 +1433,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1238,13 +1238,13 @@ _match:
+@@ -1442,13 +1442,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1252,13 +1252,13 @@ _match:
+@@ -1456,13 +1456,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1274,13 +1274,13 @@ _match:
+@@ -1478,13 +1478,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1326,7 +1326,7 @@ _match:
+@@ -1530,7 +1530,7 @@ _match:
      }
    }
  	break;
--#line 1330 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
+-#line 1534 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
 +
  		}
  	}
  
-@@ -1343,7 +1343,7 @@ _again:
+@@ -1547,7 +1547,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1389,7 +1389,7 @@ _again:
+@@ -1593,7 +1593,7 @@ _again:
      }
    }
  	break;
--#line 1393 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
+-#line 1597 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
 +
  		}
  	}
  	}
-@@ -1397,7 +1397,7 @@ _again:
+@@ -1601,7 +1601,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_da/gherkin_lexer_da.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_da/gherkin_lexer_da.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_ru/gherkin_lexer_ru.c.orig	2012-01-23 14:51:32.427402278 +0100
++++ ext/gherkin_lexer_ru/gherkin_lexer_ru.c	2012-01-23 14:51:51.072338413 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -5492,65 +5492,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
+-#line 87 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -725,7 +725,7 @@ static const int lexer_error = 0;
+@@ -1482,7 +1482,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -890,14 +890,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1647,14 +1647,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 894 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
+-#line 1651 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
      
--#line 901 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
+-#line 1658 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -971,7 +971,7 @@ _match:
+@@ -1728,7 +1728,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -979,20 +979,20 @@ _match:
+@@ -1736,20 +1736,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -5558,60 +5558,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1002,37 +1002,37 @@ _match:
+@@ -1759,37 +1759,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1041,34 +1041,34 @@ _match:
+@@ -1798,34 +1798,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -5619,7 +5619,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -5627,7 +5627,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -5635,116 +5635,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1076,7 +1076,7 @@ _match:
+@@ -1833,7 +1833,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1085,13 +1085,13 @@ _match:
+@@ -1842,13 +1842,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1099,13 +1099,13 @@ _match:
+@@ -1856,13 +1856,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1121,13 +1121,13 @@ _match:
+@@ -1878,13 +1878,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1173,7 +1173,7 @@ _match:
+@@ -1930,7 +1930,7 @@ _match:
      }
    }
  	break;
--#line 1177 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
+-#line 1934 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
 +
  		}
  	}
  
-@@ -1190,7 +1190,7 @@ _again:
+@@ -1947,7 +1947,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1236,7 +1236,7 @@ _again:
+@@ -1993,7 +1993,7 @@ _again:
      }
    }
  	break;
--#line 1240 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
+-#line 1997 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
 +
  		}
  	}
  	}
-@@ -1244,7 +1244,7 @@ _again:
+@@ -2001,7 +2001,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_et/gherkin_lexer_et.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_et/gherkin_lexer_et.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_it/gherkin_lexer_it.c.orig	2012-01-23 14:51:32.427402278 +0100
++++ ext/gherkin_lexer_it/gherkin_lexer_it.c	2012-01-23 14:51:51.077338397 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -5753,65 +5753,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
+-#line 87 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -661,7 +661,7 @@ static const int lexer_error = 0;
+@@ -759,7 +759,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -826,14 +826,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -924,14 +924,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 830 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
+-#line 928 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
      
--#line 837 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
+-#line 935 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -907,7 +907,7 @@ _match:
+@@ -1005,7 +1005,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -915,20 +915,20 @@ _match:
+@@ -1013,20 +1013,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -5819,60 +5819,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -938,37 +938,37 @@ _match:
+@@ -1036,37 +1036,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -977,34 +977,34 @@ _match:
+@@ -1075,34 +1075,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -5880,7 +5880,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -5888,7 +5888,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -5896,116 +5896,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1012,7 +1012,7 @@ _match:
+@@ -1110,7 +1110,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1021,13 +1021,13 @@ _match:
+@@ -1119,13 +1119,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1035,13 +1035,13 @@ _match:
+@@ -1133,13 +1133,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1057,13 +1057,13 @@ _match:
+@@ -1155,13 +1155,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1109,7 +1109,7 @@ _match:
+@@ -1207,7 +1207,7 @@ _match:
      }
    }
  	break;
--#line 1113 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
+-#line 1211 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
 +
  		}
  	}
  
-@@ -1126,7 +1126,7 @@ _again:
+@@ -1224,7 +1224,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1172,7 +1172,7 @@ _again:
+@@ -1270,7 +1270,7 @@ _again:
      }
    }
  	break;
--#line 1176 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
+-#line 1274 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
 +
  		}
  	}
  	}
-@@ -1180,7 +1180,7 @@ _again:
+@@ -1278,7 +1278,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_vi/gherkin_lexer_vi.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_vi/gherkin_lexer_vi.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_nl/gherkin_lexer_nl.c.orig	2012-01-23 14:51:32.428402275 +0100
++++ ext/gherkin_lexer_nl/gherkin_lexer_nl.c	2012-01-23 14:51:51.082338380 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -6014,65 +6014,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
+-#line 87 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -883,7 +883,7 @@ static const int lexer_error = 0;
+@@ -790,7 +790,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1048,14 +1048,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -955,14 +955,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1052 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
+-#line 959 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
      
--#line 1059 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
+-#line 966 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1129,7 +1129,7 @@ _match:
+@@ -1036,7 +1036,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1137,20 +1137,20 @@ _match:
+@@ -1044,20 +1044,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -6080,60 +6080,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1160,37 +1160,37 @@ _match:
+@@ -1067,37 +1067,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1199,34 +1199,34 @@ _match:
+@@ -1106,34 +1106,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -6141,7 +6141,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -6149,7 +6149,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -6157,116 +6157,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1234,7 +1234,7 @@ _match:
+@@ -1141,7 +1141,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1243,13 +1243,13 @@ _match:
+@@ -1150,13 +1150,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1257,13 +1257,13 @@ _match:
+@@ -1164,13 +1164,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1279,13 +1279,13 @@ _match:
+@@ -1186,13 +1186,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1331,7 +1331,7 @@ _match:
+@@ -1238,7 +1238,7 @@ _match:
      }
    }
  	break;
--#line 1335 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
+-#line 1242 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
 +
  		}
  	}
  
-@@ -1348,7 +1348,7 @@ _again:
+@@ -1255,7 +1255,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1394,7 +1394,7 @@ _again:
+@@ -1301,7 +1301,7 @@ _again:
      }
    }
  	break;
--#line 1398 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
+-#line 1305 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
 +
  		}
  	}
  	}
-@@ -1402,7 +1402,7 @@ _again:
+@@ -1309,7 +1309,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_uk/gherkin_lexer_uk.c.orig	2012-01-23 14:51:32.428402275 +0100
++++ ext/gherkin_lexer_uk/gherkin_lexer_uk.c	2012-01-23 14:51:51.088338359 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -6275,65 +6275,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
+-#line 87 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -1059,7 +1059,7 @@ static const int lexer_error = 0;
+@@ -1368,7 +1368,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1224,14 +1224,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1533,14 +1533,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1228 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
+-#line 1537 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
      
--#line 1235 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
+-#line 1544 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1305,7 +1305,7 @@ _match:
+@@ -1614,7 +1614,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1313,20 +1313,20 @@ _match:
+@@ -1622,20 +1622,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -6341,60 +6341,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1336,37 +1336,37 @@ _match:
+@@ -1645,37 +1645,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1375,34 +1375,34 @@ _match:
+@@ -1684,34 +1684,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -6402,7 +6402,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -6410,7 +6410,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -6418,116 +6418,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1410,7 +1410,7 @@ _match:
+@@ -1719,7 +1719,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1419,13 +1419,13 @@ _match:
+@@ -1728,13 +1728,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1433,13 +1433,13 @@ _match:
+@@ -1742,13 +1742,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1455,13 +1455,13 @@ _match:
+@@ -1764,13 +1764,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1507,7 +1507,7 @@ _match:
+@@ -1816,7 +1816,7 @@ _match:
      }
    }
  	break;
--#line 1511 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
+-#line 1820 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
 +
  		}
  	}
  
-@@ -1524,7 +1524,7 @@ _again:
+@@ -1833,7 +1833,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1570,7 +1570,7 @@ _again:
+@@ -1879,7 +1879,7 @@ _again:
      }
    }
  	break;
--#line 1574 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
+-#line 1883 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
 +
  		}
  	}
  	}
-@@ -1578,7 +1578,7 @@ _again:
+@@ -1887,7 +1887,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_ro/gherkin_lexer_ro.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_ro/gherkin_lexer_ro.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_lv/gherkin_lexer_lv.c.orig	2012-01-23 14:51:32.428402275 +0100
++++ ext/gherkin_lexer_lv/gherkin_lexer_lv.c	2012-01-23 14:51:51.093338342 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -6536,13 +6536,13 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
+-#line 87 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
@@ -6551,7 +6551,7 @@
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  
  static VALUE 
@@ -6560,16 +6560,16 @@
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1021 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
+-#line 1021 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
      
--#line 1028 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
+-#line 1028 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
 +
  	{
  	int _klen;
@@ -6578,7 +6578,7 @@
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
  		MARK(content_start, p);
@@ -6587,14 +6587,14 @@
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -6602,7 +6602,7 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
@@ -6611,42 +6611,42 @@
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      store_kw_con(listener, "step",
@@ -6655,7 +6655,7 @@
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -6663,7 +6663,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -6671,7 +6671,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -6679,14 +6679,14 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      if (lexer->mark == 0) {
@@ -6695,7 +6695,7 @@
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      MARK(keyword_end, p);
@@ -6704,14 +6704,14 @@
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      p = p - 1;
@@ -6720,14 +6720,14 @@
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
@@ -6736,14 +6736,14 @@
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      int line;
@@ -6752,7 +6752,7 @@
      }
    }
  	break;
--#line 1304 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
+-#line 1304 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
 +
  		}
  	}
@@ -6761,7 +6761,7 @@
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  	{
      int line;
@@ -6770,7 +6770,7 @@
      }
    }
  	break;
--#line 1367 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
+-#line 1367 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
 +
  		}
  	}
@@ -6779,16 +6779,16 @@
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_hu/gherkin_lexer_hu.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_hu/gherkin_lexer_hu.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_vi/gherkin_lexer_vi.c.orig	2012-01-23 14:51:32.428402275 +0100
++++ ext/gherkin_lexer_vi/gherkin_lexer_vi.c	2012-01-23 14:51:51.097338329 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -6797,65 +6797,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
+-#line 87 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -801,7 +801,7 @@ static const int lexer_error = 0;
+@@ -883,7 +883,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -966,14 +966,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1048,14 +1048,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 970 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
+-#line 1052 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
      
--#line 977 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
+-#line 1059 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1047,7 +1047,7 @@ _match:
+@@ -1129,7 +1129,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1055,20 +1055,20 @@ _match:
+@@ -1137,20 +1137,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -6863,60 +6863,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1078,37 +1078,37 @@ _match:
+@@ -1160,37 +1160,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1117,34 +1117,34 @@ _match:
+@@ -1199,34 +1199,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -6924,7 +6924,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -6932,7 +6932,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -6940,116 +6940,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1152,7 +1152,7 @@ _match:
+@@ -1234,7 +1234,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1161,13 +1161,13 @@ _match:
+@@ -1243,13 +1243,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1175,13 +1175,13 @@ _match:
+@@ -1257,13 +1257,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1197,13 +1197,13 @@ _match:
+@@ -1279,13 +1279,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1249,7 +1249,7 @@ _match:
+@@ -1331,7 +1331,7 @@ _match:
      }
    }
  	break;
--#line 1253 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
+-#line 1335 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
 +
  		}
  	}
  
-@@ -1266,7 +1266,7 @@ _again:
+@@ -1348,7 +1348,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1312,7 +1312,7 @@ _again:
+@@ -1394,7 +1394,7 @@ _again:
      }
    }
  	break;
--#line 1316 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
+-#line 1398 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
 +
  		}
  	}
  	}
-@@ -1320,7 +1320,7 @@ _again:
+@@ -1402,7 +1402,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_ja/gherkin_lexer_ja.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_ja/gherkin_lexer_ja.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c.orig	2012-01-23 14:51:32.428402275 +0100
++++ ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c	2012-01-23 14:51:51.100338318 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -7058,65 +7058,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
+-#line 87 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -1126,7 +1126,7 @@ static const int lexer_error = 0;
+@@ -602,7 +602,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1291,14 +1291,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -767,14 +767,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1295 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
+-#line 771 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
      
--#line 1302 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
+-#line 778 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1372,7 +1372,7 @@ _match:
+@@ -848,7 +848,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1380,20 +1380,20 @@ _match:
+@@ -856,20 +856,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -7124,60 +7124,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1403,37 +1403,37 @@ _match:
+@@ -879,37 +879,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1442,34 +1442,34 @@ _match:
+@@ -918,34 +918,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -7185,7 +7185,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -7193,7 +7193,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -7201,116 +7201,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1477,7 +1477,7 @@ _match:
+@@ -953,7 +953,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1486,13 +1486,13 @@ _match:
+@@ -962,13 +962,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1500,13 +1500,13 @@ _match:
+@@ -976,13 +976,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1522,13 +1522,13 @@ _match:
+@@ -998,13 +998,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1574,7 +1574,7 @@ _match:
+@@ -1050,7 +1050,7 @@ _match:
      }
    }
  	break;
--#line 1578 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
+-#line 1054 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
 +
  		}
  	}
  
-@@ -1591,7 +1591,7 @@ _again:
+@@ -1067,7 +1067,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1637,7 +1637,7 @@ _again:
+@@ -1113,7 +1113,7 @@ _again:
      }
    }
  	break;
--#line 1641 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
+-#line 1117 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
 +
  		}
  	}
  	}
-@@ -1645,7 +1645,7 @@ _again:
+@@ -1121,7 +1121,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_ja/gherkin_lexer_ja.c.orig	2012-01-23 14:51:32.429402272 +0100
++++ ext/gherkin_lexer_ja/gherkin_lexer_ja.c	2012-01-23 14:51:51.104338304 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -7319,65 +7319,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
+-#line 87 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -650,7 +650,7 @@ static const int lexer_error = 0;
+@@ -1126,7 +1126,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -815,14 +815,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1291,14 +1291,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 819 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
+-#line 1295 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
      
--#line 826 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
+-#line 1302 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -896,7 +896,7 @@ _match:
+@@ -1372,7 +1372,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -904,20 +904,20 @@ _match:
+@@ -1380,20 +1380,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -7385,60 +7385,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -927,37 +927,37 @@ _match:
+@@ -1403,37 +1403,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -966,34 +966,34 @@ _match:
+@@ -1442,34 +1442,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -7446,7 +7446,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -7454,7 +7454,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -7462,116 +7462,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1001,7 +1001,7 @@ _match:
+@@ -1477,7 +1477,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1010,13 +1010,13 @@ _match:
+@@ -1486,13 +1486,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1024,13 +1024,13 @@ _match:
+@@ -1500,13 +1500,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1046,13 +1046,13 @@ _match:
+@@ -1522,13 +1522,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1098,7 +1098,7 @@ _match:
+@@ -1574,7 +1574,7 @@ _match:
      }
    }
  	break;
--#line 1102 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
+-#line 1578 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
 +
  		}
  	}
  
-@@ -1115,7 +1115,7 @@ _again:
+@@ -1591,7 +1591,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1161,7 +1161,7 @@ _again:
+@@ -1637,7 +1637,7 @@ _again:
      }
    }
  	break;
--#line 1165 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
+-#line 1641 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
 +
  		}
  	}
  	}
-@@ -1169,7 +1169,7 @@ _again:
+@@ -1645,7 +1645,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_ca/gherkin_lexer_ca.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_ca/gherkin_lexer_ca.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_id/gherkin_lexer_id.c.orig	2012-01-23 14:51:32.429402272 +0100
++++ ext/gherkin_lexer_id/gherkin_lexer_id.c	2012-01-23 14:51:51.106338297 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -7580,65 +7580,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
+-#line 87 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -1008,7 +1008,7 @@ static const int lexer_error = 0;
+@@ -630,7 +630,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1173,14 +1173,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -795,14 +795,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1177 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
+-#line 799 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
      
--#line 1184 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
+-#line 806 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1254,7 +1254,7 @@ _match:
+@@ -876,7 +876,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1262,20 +1262,20 @@ _match:
+@@ -884,20 +884,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -7646,60 +7646,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1285,37 +1285,37 @@ _match:
+@@ -907,37 +907,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1324,34 +1324,34 @@ _match:
+@@ -946,34 +946,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -7707,7 +7707,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -7715,7 +7715,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -7723,116 +7723,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1359,7 +1359,7 @@ _match:
+@@ -981,7 +981,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1368,13 +1368,13 @@ _match:
+@@ -990,13 +990,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1382,13 +1382,13 @@ _match:
+@@ -1004,13 +1004,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1404,13 +1404,13 @@ _match:
+@@ -1026,13 +1026,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1456,7 +1456,7 @@ _match:
+@@ -1078,7 +1078,7 @@ _match:
      }
    }
  	break;
--#line 1460 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
+-#line 1082 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
 +
  		}
  	}
  
-@@ -1473,7 +1473,7 @@ _again:
+@@ -1095,7 +1095,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1519,7 +1519,7 @@ _again:
+@@ -1141,7 +1141,7 @@ _again:
      }
    }
  	break;
--#line 1523 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
+-#line 1145 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
 +
  		}
  	}
  	}
-@@ -1527,7 +1527,7 @@ _again:
+@@ -1149,7 +1149,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_uk/gherkin_lexer_uk.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_uk/gherkin_lexer_uk.c	2011-07-12 21:56:49.000000000 -0400
+--- ext/gherkin_lexer_lt/gherkin_lexer_lt.c.orig	2012-01-23 14:51:32.429402272 +0100
++++ ext/gherkin_lexer_lt/gherkin_lexer_lt.c	2012-01-23 14:51:51.109338288 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -7841,65 +7841,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
+-#line 87 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -1368,7 +1368,7 @@ static const int lexer_error = 0;
+@@ -722,7 +722,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1533,14 +1533,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -887,14 +887,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1537 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
+-#line 891 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
      
--#line 1544 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
+-#line 898 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1614,7 +1614,7 @@ _match:
+@@ -968,7 +968,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1622,20 +1622,20 @@ _match:
+@@ -976,20 +976,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -7907,60 +7907,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1645,37 +1645,37 @@ _match:
+@@ -999,37 +999,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1684,34 +1684,34 @@ _match:
+@@ -1038,34 +1038,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -7968,7 +7968,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -7976,7 +7976,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -7984,116 +7984,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1719,7 +1719,7 @@ _match:
+@@ -1073,7 +1073,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1728,13 +1728,13 @@ _match:
+@@ -1082,13 +1082,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1742,13 +1742,13 @@ _match:
+@@ -1096,13 +1096,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1764,13 +1764,13 @@ _match:
+@@ -1118,13 +1118,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1816,7 +1816,7 @@ _match:
+@@ -1170,7 +1170,7 @@ _match:
      }
    }
  	break;
--#line 1820 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
+-#line 1174 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
 +
  		}
  	}
  
-@@ -1833,7 +1833,7 @@ _again:
+@@ -1187,7 +1187,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1879,7 +1879,7 @@ _again:
+@@ -1233,7 +1233,7 @@ _again:
      }
    }
  	break;
--#line 1883 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
+-#line 1237 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
 +
  		}
  	}
  	}
-@@ -1887,7 +1887,7 @@ _again:
+@@ -1241,7 +1241,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_it/gherkin_lexer_it.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_it/gherkin_lexer_it.c	2011-07-12 21:56:50.000000000 -0400
+--- ext/gherkin_lexer_sk/gherkin_lexer_sk.c.orig	2012-01-23 14:51:32.429402272 +0100
++++ ext/gherkin_lexer_sk/gherkin_lexer_sk.c	2012-01-23 14:51:51.112338276 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -8102,65 +8102,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
+-#line 87 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -759,7 +759,7 @@ static const int lexer_error = 0;
+@@ -725,7 +725,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -924,14 +924,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -890,14 +890,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 928 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
+-#line 894 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
      
--#line 935 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
+-#line 901 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1005,7 +1005,7 @@ _match:
+@@ -971,7 +971,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1013,20 +1013,20 @@ _match:
+@@ -979,20 +979,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -8168,60 +8168,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1036,37 +1036,37 @@ _match:
+@@ -1002,37 +1002,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1075,34 +1075,34 @@ _match:
+@@ -1041,34 +1041,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -8229,7 +8229,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -8237,7 +8237,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -8245,116 +8245,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1110,7 +1110,7 @@ _match:
+@@ -1076,7 +1076,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1119,13 +1119,13 @@ _match:
+@@ -1085,13 +1085,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1133,13 +1133,13 @@ _match:
+@@ -1099,13 +1099,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1155,13 +1155,13 @@ _match:
+@@ -1121,13 +1121,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1207,7 +1207,7 @@ _match:
+@@ -1173,7 +1173,7 @@ _match:
      }
    }
  	break;
--#line 1211 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
+-#line 1177 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
 +
  		}
  	}
  
-@@ -1224,7 +1224,7 @@ _again:
+@@ -1190,7 +1190,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1270,7 +1270,7 @@ _again:
+@@ -1236,7 +1236,7 @@ _again:
      }
    }
  	break;
--#line 1274 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
+-#line 1240 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
 +
  		}
  	}
  	}
-@@ -1278,7 +1278,7 @@ _again:
+@@ -1244,7 +1244,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_tr/gherkin_lexer_tr.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_tr/gherkin_lexer_tr.c	2011-07-12 21:56:50.000000000 -0400
+--- ext/gherkin_lexer_fi/gherkin_lexer_fi.c.orig	2012-01-23 14:51:32.429402272 +0100
++++ ext/gherkin_lexer_fi/gherkin_lexer_fi.c	2012-01-23 14:51:51.115338267 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -8363,65 +8363,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
+-#line 87 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -767,7 +767,7 @@ static const int lexer_error = 0;
+@@ -640,7 +640,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -932,14 +932,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -805,14 +805,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 936 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
+-#line 809 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
      
--#line 943 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
+-#line 816 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1013,7 +1013,7 @@ _match:
+@@ -886,7 +886,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1021,20 +1021,20 @@ _match:
+@@ -894,20 +894,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -8429,60 +8429,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1044,37 +1044,37 @@ _match:
+@@ -917,37 +917,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1083,34 +1083,34 @@ _match:
+@@ -956,34 +956,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -8490,7 +8490,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -8498,7 +8498,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -8506,116 +8506,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1118,7 +1118,7 @@ _match:
+@@ -991,7 +991,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1127,13 +1127,13 @@ _match:
+@@ -1000,13 +1000,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1141,13 +1141,13 @@ _match:
+@@ -1014,13 +1014,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1163,13 +1163,13 @@ _match:
+@@ -1036,13 +1036,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1215,7 +1215,7 @@ _match:
+@@ -1088,7 +1088,7 @@ _match:
      }
    }
  	break;
--#line 1219 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
+-#line 1092 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
 +
  		}
  	}
  
-@@ -1232,7 +1232,7 @@ _again:
+@@ -1105,7 +1105,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1278,7 +1278,7 @@ _again:
+@@ -1151,7 +1151,7 @@ _again:
      }
    }
  	break;
--#line 1282 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
+-#line 1155 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
 +
  		}
  	}
  	}
-@@ -1286,7 +1286,7 @@ _again:
+@@ -1159,7 +1159,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c	2011-07-12 21:56:50.000000000 -0400
+--- ext/gherkin_lexer_de/gherkin_lexer_de.c.orig	2012-01-23 14:51:32.429402272 +0100
++++ ext/gherkin_lexer_de/gherkin_lexer_de.c	2012-01-23 14:51:51.118338256 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -8624,65 +8624,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
+-#line 87 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -692,7 +692,7 @@ static const int lexer_error = 0;
+@@ -842,7 +842,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -857,14 +857,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1007,14 +1007,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 861 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
+-#line 1011 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
      
--#line 868 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
+-#line 1018 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -938,7 +938,7 @@ _match:
+@@ -1088,7 +1088,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -946,20 +946,20 @@ _match:
+@@ -1096,20 +1096,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -8690,60 +8690,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -969,37 +969,37 @@ _match:
+@@ -1119,37 +1119,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1008,34 +1008,34 @@ _match:
+@@ -1158,34 +1158,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -8751,7 +8751,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -8759,7 +8759,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -8767,116 +8767,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1043,7 +1043,7 @@ _match:
+@@ -1193,7 +1193,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1052,13 +1052,13 @@ _match:
+@@ -1202,13 +1202,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1066,13 +1066,13 @@ _match:
+@@ -1216,13 +1216,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1088,13 +1088,13 @@ _match:
+@@ -1238,13 +1238,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1140,7 +1140,7 @@ _match:
+@@ -1290,7 +1290,7 @@ _match:
      }
    }
  	break;
--#line 1144 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
+-#line 1294 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
 +
  		}
  	}
  
-@@ -1157,7 +1157,7 @@ _again:
+@@ -1307,7 +1307,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1203,7 +1203,7 @@ _again:
+@@ -1353,7 +1353,7 @@ _again:
      }
    }
  	break;
--#line 1207 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
+-#line 1357 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
 +
  		}
  	}
  	}
-@@ -1211,7 +1211,7 @@ _again:
+@@ -1361,7 +1361,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c	2011-07-12 21:56:50.000000000 -0400
+--- ext/gherkin_lexer_lu/gherkin_lexer_lu.c.orig	2012-01-23 14:51:32.430402269 +0100
++++ ext/gherkin_lexer_lu/gherkin_lexer_lu.c	2012-01-23 14:51:51.121338246 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -8885,65 +8885,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
+-#line 87 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -692,7 +692,7 @@ static const int lexer_error = 0;
+@@ -814,7 +814,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -857,14 +857,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -979,14 +979,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 861 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
+-#line 983 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
      
--#line 868 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
+-#line 990 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -938,7 +938,7 @@ _match:
+@@ -1060,7 +1060,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -946,20 +946,20 @@ _match:
+@@ -1068,20 +1068,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -8951,60 +8951,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -969,37 +969,37 @@ _match:
+@@ -1091,37 +1091,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1008,34 +1008,34 @@ _match:
+@@ -1130,34 +1130,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -9012,7 +9012,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -9020,7 +9020,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -9028,116 +9028,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1043,7 +1043,7 @@ _match:
+@@ -1165,7 +1165,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1052,13 +1052,13 @@ _match:
+@@ -1174,13 +1174,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1066,13 +1066,13 @@ _match:
+@@ -1188,13 +1188,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1088,13 +1088,13 @@ _match:
+@@ -1210,13 +1210,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1140,7 +1140,7 @@ _match:
+@@ -1262,7 +1262,7 @@ _match:
      }
    }
  	break;
--#line 1144 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
+-#line 1266 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
 +
  		}
  	}
  
-@@ -1157,7 +1157,7 @@ _again:
+@@ -1279,7 +1279,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1203,7 +1203,7 @@ _again:
+@@ -1325,7 +1325,7 @@ _again:
      }
    }
  	break;
--#line 1207 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
+-#line 1329 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
 +
  		}
  	}
  	}
-@@ -1211,7 +1211,7 @@ _again:
+@@ -1333,7 +1333,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_en/gherkin_lexer_en.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_en/gherkin_lexer_en.c	2011-07-12 21:56:50.000000000 -0400
+--- ext/gherkin_lexer_ar/gherkin_lexer_ar.c.orig	2012-01-23 14:51:32.430402269 +0100
++++ ext/gherkin_lexer_ar/gherkin_lexer_ar.c	2012-01-23 14:51:51.124338236 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -9146,65 +9146,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
+-#line 87 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -692,7 +692,7 @@ static const int lexer_error = 0;
+@@ -856,7 +856,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -857,14 +857,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1021,14 +1021,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 861 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
+-#line 1025 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
      
--#line 868 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
+-#line 1032 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -938,7 +938,7 @@ _match:
+@@ -1102,7 +1102,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -946,20 +946,20 @@ _match:
+@@ -1110,20 +1110,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -9212,60 +9212,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -969,37 +969,37 @@ _match:
+@@ -1133,37 +1133,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1008,34 +1008,34 @@ _match:
+@@ -1172,34 +1172,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -9273,7 +9273,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -9281,7 +9281,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -9289,113 +9289,113 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1043,7 +1043,7 @@ _match:
+@@ -1207,7 +1207,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1052,13 +1052,13 @@ _match:
+@@ -1216,13 +1216,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1066,13 +1066,13 @@ _match:
+@@ -1230,13 +1230,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1088,13 +1088,13 @@ _match:
+@@ -1252,13 +1252,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1140,7 +1140,7 @@ _match:
+@@ -1304,7 +1304,7 @@ _match:
      }
    }
  	break;
--#line 1144 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
+-#line 1308 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
 +
  		}
  	}
  
-@@ -1157,7 +1157,7 @@ _again:
+@@ -1321,7 +1321,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1203,7 +1203,7 @@ _again:
+@@ -1367,7 +1367,7 @@ _again:
      }
    }
  	break;
--#line 1207 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
+-#line 1371 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
 +
  		}
  	}
  	}
-@@ -1211,7 +1211,7 @@ _again:
+@@ -1375,7 +1375,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_uz/gherkin_lexer_uz.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_uz/gherkin_lexer_uz.c	2011-07-12 21:56:50.000000000 -0400
+--- ext/gherkin_lexer_uz/gherkin_lexer_uz.c.orig	2012-01-23 14:51:32.430402269 +0100
++++ ext/gherkin_lexer_uz/gherkin_lexer_uz.c	2012-01-23 14:51:51.128338222 +0100
 @@ -1,5 +1,5 @@
  
 -#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
@@ -9655,11 +9655,11 @@
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_no/gherkin_lexer_no.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_no/gherkin_lexer_no.c	2011-07-12 21:56:50.000000000 -0400
+--- ext/gherkin_lexer_tr/gherkin_lexer_tr.c.orig	2012-01-23 14:51:32.430402269 +0100
++++ ext/gherkin_lexer_tr/gherkin_lexer_tr.c	2012-01-23 14:51:51.131338212 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -9668,65 +9668,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
+-#line 87 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -738,7 +738,7 @@ static const int lexer_error = 0;
+@@ -767,7 +767,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -903,14 +903,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -932,14 +932,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 907 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
+-#line 936 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
      
--#line 914 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
+-#line 943 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -984,7 +984,7 @@ _match:
+@@ -1013,7 +1013,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -992,20 +992,20 @@ _match:
+@@ -1021,20 +1021,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -9734,60 +9734,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1015,37 +1015,37 @@ _match:
+@@ -1044,37 +1044,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1054,34 +1054,34 @@ _match:
+@@ -1083,34 +1083,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -9795,7 +9795,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -9803,7 +9803,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -9811,116 +9811,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1089,7 +1089,7 @@ _match:
+@@ -1118,7 +1118,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1098,13 +1098,13 @@ _match:
+@@ -1127,13 +1127,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1112,13 +1112,13 @@ _match:
+@@ -1141,13 +1141,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1134,13 +1134,13 @@ _match:
+@@ -1163,13 +1163,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1186,7 +1186,7 @@ _match:
+@@ -1215,7 +1215,7 @@ _match:
      }
    }
  	break;
--#line 1190 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
+-#line 1219 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
 +
  		}
  	}
  
-@@ -1203,7 +1203,7 @@ _again:
+@@ -1232,7 +1232,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1249,7 +1249,7 @@ _again:
+@@ -1278,7 +1278,7 @@ _again:
      }
    }
  	break;
--#line 1253 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
+-#line 1282 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
 +
  		}
  	}
  	}
-@@ -1257,7 +1257,7 @@ _again:
+@@ -1286,7 +1286,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_lv/gherkin_lexer_lv.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_lv/gherkin_lexer_lv.c	2011-07-12 21:56:50.000000000 -0400
+--- ext/gherkin_lexer_ca/gherkin_lexer_ca.c.orig	2012-01-23 14:51:32.430402269 +0100
++++ ext/gherkin_lexer_ca/gherkin_lexer_ca.c	2012-01-23 14:51:51.134338202 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -9929,65 +9929,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
+-#line 87 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -852,7 +852,7 @@ static const int lexer_error = 0;
+@@ -1008,7 +1008,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1017,14 +1017,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1173,14 +1173,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1021 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
+-#line 1177 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
      
--#line 1028 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
+-#line 1184 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1098,7 +1098,7 @@ _match:
+@@ -1254,7 +1254,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1106,20 +1106,20 @@ _match:
+@@ -1262,20 +1262,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -9995,60 +9995,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1129,37 +1129,37 @@ _match:
+@@ -1285,37 +1285,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1168,34 +1168,34 @@ _match:
+@@ -1324,34 +1324,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -10056,7 +10056,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -10064,7 +10064,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -10072,116 +10072,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1203,7 +1203,7 @@ _match:
+@@ -1359,7 +1359,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1212,13 +1212,13 @@ _match:
+@@ -1368,13 +1368,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1226,13 +1226,13 @@ _match:
+@@ -1382,13 +1382,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1248,13 +1248,13 @@ _match:
+@@ -1404,13 +1404,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1300,7 +1300,7 @@ _match:
+@@ -1456,7 +1456,7 @@ _match:
      }
    }
  	break;
--#line 1304 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
+-#line 1460 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
 +
  		}
  	}
  
-@@ -1317,7 +1317,7 @@ _again:
+@@ -1473,7 +1473,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1363,7 +1363,7 @@ _again:
+@@ -1519,7 +1519,7 @@ _again:
      }
    }
  	break;
--#line 1367 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
+-#line 1523 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
 +
  		}
  	}
  	}
-@@ -1371,7 +1371,7 @@ _again:
+@@ -1527,7 +1527,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_es/gherkin_lexer_es.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_es/gherkin_lexer_es.c	2011-07-12 21:56:50.000000000 -0400
+--- ext/gherkin_lexer_pl/gherkin_lexer_pl.c.orig	2012-01-23 14:51:32.430402269 +0100
++++ ext/gherkin_lexer_pl/gherkin_lexer_pl.c	2012-01-23 14:51:51.137338191 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -10190,65 +10190,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
+-#line 87 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -805,7 +805,7 @@ static const int lexer_error = 0;
+@@ -904,7 +904,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -970,14 +970,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1069,14 +1069,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 974 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
+-#line 1073 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
      
--#line 981 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
+-#line 1080 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1051,7 +1051,7 @@ _match:
+@@ -1150,7 +1150,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1059,20 +1059,20 @@ _match:
+@@ -1158,20 +1158,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -10256,60 +10256,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1082,37 +1082,37 @@ _match:
+@@ -1181,37 +1181,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1121,34 +1121,34 @@ _match:
+@@ -1220,34 +1220,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -10317,7 +10317,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -10325,7 +10325,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -10333,116 +10333,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1156,7 +1156,7 @@ _match:
+@@ -1255,7 +1255,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1165,13 +1165,13 @@ _match:
+@@ -1264,13 +1264,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1179,13 +1179,13 @@ _match:
+@@ -1278,13 +1278,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1201,13 +1201,13 @@ _match:
+@@ -1300,13 +1300,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1253,7 +1253,7 @@ _match:
+@@ -1352,7 +1352,7 @@ _match:
      }
    }
  	break;
--#line 1257 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
+-#line 1356 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
 +
  		}
  	}
  
-@@ -1270,7 +1270,7 @@ _again:
+@@ -1369,7 +1369,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1316,7 +1316,7 @@ _again:
+@@ -1415,7 +1415,7 @@ _again:
      }
    }
  	break;
--#line 1320 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
+-#line 1419 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
 +
  		}
  	}
  	}
-@@ -1324,7 +1324,7 @@ _again:
+@@ -1423,7 +1423,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_ko/gherkin_lexer_ko.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_ko/gherkin_lexer_ko.c	2011-07-12 21:56:50.000000000 -0400
+--- ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c.orig	2012-01-23 14:51:32.431402266 +0100
++++ ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c	2012-01-23 14:51:51.140338180 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -10451,65 +10451,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
+-#line 87 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -787,7 +787,7 @@ static const int lexer_error = 0;
+@@ -692,7 +692,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -952,14 +952,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -857,14 +857,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 956 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
+-#line 861 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
      
--#line 963 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
+-#line 868 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1033,7 +1033,7 @@ _match:
+@@ -938,7 +938,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1041,20 +1041,20 @@ _match:
+@@ -946,20 +946,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -10517,60 +10517,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1064,37 +1064,37 @@ _match:
+@@ -969,37 +969,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1103,34 +1103,34 @@ _match:
+@@ -1008,34 +1008,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -10578,7 +10578,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -10586,7 +10586,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -10594,116 +10594,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1138,7 +1138,7 @@ _match:
+@@ -1043,7 +1043,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1147,13 +1147,13 @@ _match:
+@@ -1052,13 +1052,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1161,13 +1161,13 @@ _match:
+@@ -1066,13 +1066,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1183,13 +1183,13 @@ _match:
+@@ -1088,13 +1088,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1235,7 +1235,7 @@ _match:
+@@ -1140,7 +1140,7 @@ _match:
      }
    }
  	break;
--#line 1239 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
+-#line 1144 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
 +
  		}
  	}
  
-@@ -1252,7 +1252,7 @@ _again:
+@@ -1157,7 +1157,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1298,7 +1298,7 @@ _again:
+@@ -1203,7 +1203,7 @@ _again:
      }
    }
  	break;
--#line 1302 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
+-#line 1207 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
 +
  		}
  	}
  	}
-@@ -1306,7 +1306,7 @@ _again:
+@@ -1211,7 +1211,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_pl/gherkin_lexer_pl.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_pl/gherkin_lexer_pl.c	2011-07-12 21:56:50.000000000 -0400
+--- ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c.orig	2012-01-23 14:51:32.431402266 +0100
++++ ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c	2012-01-23 14:51:51.145338164 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -10712,65 +10712,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
+-#line 87 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -904,7 +904,7 @@ static const int lexer_error = 0;
+@@ -1537,7 +1537,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1069,14 +1069,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1702,14 +1702,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1073 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
+-#line 1706 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
      
--#line 1080 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
+-#line 1713 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1150,7 +1150,7 @@ _match:
+@@ -1783,7 +1783,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1158,20 +1158,20 @@ _match:
+@@ -1791,20 +1791,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -10778,60 +10778,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1181,37 +1181,37 @@ _match:
+@@ -1814,37 +1814,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1220,34 +1220,34 @@ _match:
+@@ -1853,34 +1853,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -10839,7 +10839,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -10847,7 +10847,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -10855,116 +10855,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1255,7 +1255,7 @@ _match:
+@@ -1888,7 +1888,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1264,13 +1264,13 @@ _match:
+@@ -1897,13 +1897,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1278,13 +1278,13 @@ _match:
+@@ -1911,13 +1911,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1300,13 +1300,13 @@ _match:
+@@ -1933,13 +1933,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1352,7 +1352,7 @@ _match:
+@@ -1985,7 +1985,7 @@ _match:
      }
    }
  	break;
--#line 1356 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
+-#line 1989 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
 +
  		}
  	}
  
-@@ -1369,7 +1369,7 @@ _again:
+@@ -2002,7 +2002,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1415,7 +1415,7 @@ _again:
+@@ -2048,7 +2048,7 @@ _again:
      }
    }
  	break;
--#line 1419 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
+-#line 2052 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
 +
  		}
  	}
  	}
-@@ -1423,7 +1423,7 @@ _again:
+@@ -2056,7 +2056,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_ar/gherkin_lexer_ar.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_ar/gherkin_lexer_ar.c	2011-07-12 21:56:50.000000000 -0400
+--- ext/gherkin_lexer_ro/gherkin_lexer_ro.c.orig	2012-01-23 14:51:32.431402266 +0100
++++ ext/gherkin_lexer_ro/gherkin_lexer_ro.c	2012-01-23 14:51:51.148338154 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -10973,65 +10973,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
+-#line 87 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -856,7 +856,7 @@ static const int lexer_error = 0;
+@@ -852,7 +852,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -1021,14 +1021,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1017,14 +1017,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 1025 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
+-#line 1021 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
      
--#line 1032 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
+-#line 1028 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -1102,7 +1102,7 @@ _match:
+@@ -1098,7 +1098,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -1110,20 +1110,20 @@ _match:
+@@ -1106,20 +1106,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -11039,60 +11039,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -1133,37 +1133,37 @@ _match:
+@@ -1129,37 +1129,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1172,34 +1172,34 @@ _match:
+@@ -1168,34 +1168,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -11100,7 +11100,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -11108,7 +11108,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -11116,116 +11116,116 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1207,7 +1207,7 @@ _match:
+@@ -1203,7 +1203,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1216,13 +1216,13 @@ _match:
+@@ -1212,13 +1212,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1230,13 +1230,13 @@ _match:
+@@ -1226,13 +1226,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1252,13 +1252,13 @@ _match:
+@@ -1248,13 +1248,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1304,7 +1304,7 @@ _match:
+@@ -1300,7 +1300,7 @@ _match:
      }
    }
  	break;
--#line 1308 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
+-#line 1304 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
 +
  		}
  	}
  
-@@ -1321,7 +1321,7 @@ _again:
+@@ -1317,7 +1317,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1367,7 +1367,7 @@ _again:
+@@ -1363,7 +1363,7 @@ _again:
      }
    }
  	break;
--#line 1371 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
+-#line 1367 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
 +
  		}
  	}
  	}
-@@ -1375,7 +1375,7 @@ _again:
+@@ -1371,7 +1371,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
      assert(lexer->content_start <= len && "content starts after data end");
---- gherkin-2.4.5/ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c.orig	2011-07-12 21:56:17.000000000 -0400
-+++ gherkin-2.4.5/ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c	2011-07-12 21:56:50.000000000 -0400
+--- ext/gherkin_lexer_cs/gherkin_lexer_cs.c.orig	2012-01-23 14:51:32.431402266 +0100
++++ ext/gherkin_lexer_cs/gherkin_lexer_cs.c	2012-01-23 14:51:51.151338143 +0100
 @@ -1,5 +1,5 @@
  
--#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  #include <assert.h>
  #include <ruby.h>
@@ -11234,65 +11234,65 @@
        lexer->line_number)
  
  
--#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 242 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  
  
  /** Data **/
  
--#line 87 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
+-#line 87 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
 +
  static const char _lexer_actions[] = {
  	0, 1, 0, 1, 1, 1, 2, 1, 
  	3, 1, 4, 1, 5, 1, 6, 1, 
-@@ -709,7 +709,7 @@ static const int lexer_error = 0;
+@@ -854,7 +854,7 @@ static const int lexer_error = 0;
  static const int lexer_en_main = 1;
  
  
--#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 246 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  
  static VALUE 
  unindent(VALUE con, int start_col)
-@@ -874,14 +874,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+@@ -1019,14 +1019,14 @@ static VALUE CLexer_scan(VALUE self, VAL
      assert(*pe == '\0' && "pointer does not end on NULL");
      
      
--#line 878 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
+-#line 1023 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
 +
  	{
  	cs = lexer_start;
  	}
  
--#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 410 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
      
--#line 885 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
+-#line 1030 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
 +
  	{
  	int _klen;
  	unsigned int _trans;
-@@ -955,7 +955,7 @@ _match:
+@@ -1100,7 +1100,7 @@ _match:
  		switch ( *_acts++ )
  		{
  	case 0:
--#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
  		MARK(content_start, p);
      lexer->current_line = lexer->line_number;
-@@ -963,20 +963,20 @@ _match:
+@@ -1108,20 +1108,20 @@ _match:
    }
  	break;
  	case 1:
--#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      MARK(content_start, p);
    }
  	break;
  	case 2:
--#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      lexer->current_line = lexer->line_number;
@@ -11300,60 +11300,60 @@
    }
  	break;
  	case 3:
--#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      int len = LEN(content_start, PTR_TO(final_newline));
  
-@@ -986,37 +986,37 @@ _match:
+@@ -1131,37 +1131,37 @@ _match:
    }
  	break;
  	case 4:
--#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      STORE_KW_END_CON(feature);
    }
  	break;
  	case 5:
--#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      STORE_KW_END_CON(background);
    }
  	break;
  	case 6:
--#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario);
    }
  	break;
  	case 7:
--#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      STORE_KW_END_CON(scenario_outline);
    }
  	break;
  	case 8:
--#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      STORE_KW_END_CON(examples);
    }
  	break;
  	case 9:
--#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      store_kw_con(listener, "step",
        PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
-@@ -1025,34 +1025,34 @@ _match:
+@@ -1170,34 +1170,34 @@ _match:
    }
  	break;
  	case 10:
--#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      STORE_ATTR(comment);
@@ -11361,7 +11361,7 @@
    }
  	break;
  	case 11:
--#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      STORE_ATTR(tag);
@@ -11369,7 +11369,7 @@
    }
  	break;
  	case 12:
--#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      lexer->line_number += 1;
@@ -11377,107 +11377,107 @@
    }
  	break;
  	case 13:
--#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      MARK(last_newline, p + 1);
    }
  	break;
  	case 14:
--#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      if (lexer->mark == 0) {
        MARK(mark, p);
-@@ -1060,7 +1060,7 @@ _match:
+@@ -1205,7 +1205,7 @@ _match:
    }
  	break;
  	case 15:
--#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      MARK(keyword_end, p);
      MARK(keyword_start, PTR_TO(mark));
-@@ -1069,13 +1069,13 @@ _match:
+@@ -1214,13 +1214,13 @@ _match:
    }
  	break;
  	case 16:
--#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      MARK(content_end, p);
    }
  	break;
  	case 17:
--#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      p = p - 1;
      lexer->current_line = lexer->line_number;
-@@ -1083,13 +1083,13 @@ _match:
+@@ -1228,13 +1228,13 @@ _match:
    }
  	break;
  	case 18:
--#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
  		MARK(content_start, p);
    }
  	break;
  	case 19:
--#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      VALUE re_pipe, re_newline, re_backslash;
      VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
-@@ -1105,13 +1105,13 @@ _match:
+@@ -1250,13 +1250,13 @@ _match:
    }
  	break;
  	case 20:
--#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 191 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
    }
  	break;
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1157,7 +1157,7 @@ _match:
+@@ -1302,7 +1302,7 @@ _match:
      }
    }
  	break;
--#line 1161 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
+-#line 1306 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
 +
  		}
  	}
  
-@@ -1174,7 +1174,7 @@ _again:
+@@ -1319,7 +1319,7 @@ _again:
  	while ( __nacts-- > 0 ) {
  		switch ( *__acts++ ) {
  	case 21:
--#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 195 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  	{
      int line;
      if (cs < lexer_first_final) {
-@@ -1220,7 +1220,7 @@ _again:
+@@ -1365,7 +1365,7 @@ _again:
      }
    }
  	break;
--#line 1224 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
+-#line 1369 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
 +
  		}
  	}
  	}
-@@ -1228,7 +1228,7 @@ _again:
+@@ -1373,7 +1373,7 @@ _again:
  	_out: {}
  	}
  
--#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+-#line 411 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
 +
  
      assert(p <= pe && "data overflow after parsing execute");
diff --git a/rubygem-gherkin.spec b/rubygem-gherkin.spec
index 192f2eb..53a998e 100644
--- a/rubygem-gherkin.spec
+++ b/rubygem-gherkin.spec
@@ -1,17 +1,14 @@
-%global ruby_sitearch %(ruby -rrbconfig -e 'puts Config::CONFIG["sitearchdir"] ')
-%global gemdir %(ruby -rubygems -e 'puts Gem::dir' 2>/dev/null)
-%global gemname gherkin
-%global geminstdir %{gemdir}/gems/%{gemname}-%{version}
-%global rubyabi 1.8
+%global gem_name gherkin
+%global rubyabi 1.9.1
 
 Summary: Fast Gherkin lexer/parser
-Name: rubygem-%{gemname}
+Name: rubygem-%{gem_name}
 Version: 2.4.5
-Release: 2%{?dist}
+Release: 3%{?dist}
 Group: Development/Languages
 License: MIT
 URL: http://github.com/aslakhellesoy/gherkin
-Source0: http://rubygems.org/gems/%{gemname}-%{version}.gem
+Source0: http://rubygems.org/gems/%{gem_name}-%{version}.gem
 
 # generated by running:
 # ruby -rfileutils Dir.glob("gherkin/gherkin-2.4.5/ext/gherkin_lexer_*/").each { |d| Dir.glob("#{d}*.c"){ |f| FileUtils.cp(f,  d + f.split('/').last + ".orig" ) }}
@@ -19,14 +16,12 @@ Source0: http://rubygems.org/gems/%{gemname}-%{version}.gem
 # ruby -rfileutils Dir.glob('gherkin/gherkin-2.4.5/ext/*/*.c').each { |f| puts `diff -sup #{f}.orig #{f}` }
 Patch1: gherkin-2.4.5-remove-hash-line.patch
 
-Patch2: gherkin-2.4.5-fix-gemspec.patch
-
 Requires: ruby(abi) = %{rubyabi}
-Requires: rubygems
+Requires: ruby(rubygems)
 Requires: rubygem(json)
-BuildRequires: ruby(rubygems)
+BuildRequires: rubygems-devel
 BuildRequires: ruby-devel
-Provides: rubygem(%{gemname}) = %{version}
+Provides: rubygem(%{gem_name}) = %{version}
 
 %package doc
 Summary: Documentation for %{name}
@@ -42,14 +37,16 @@ A fast Gherkin lexer/parser based on the Ragel State Machine Compiler.
 
 
 %prep
-%setup -q -c -T
-gem unpack %{SOURCE0}
-cd %{gemname}-%{version}
-%patch1 -p1
-%patch2 -p1
+mkdir -p .%{gem_dir}
+gem install --local --install-dir .%{gem_dir} \
+            --force -V --rdoc %{SOURCE0}
+
+pushd .%{gem_instdir}
+%patch1 -p0
+popd
 
 %build
-pushd %{_builddir}/%{name}-%{version}/%{gemname}-%{version}
+pushd .%{gem_instdir}
 pushd ext
 for lexer_dir in */ ; do
     pushd $lexer_dir
@@ -59,66 +56,54 @@ for lexer_dir in */ ; do
     popd
 done
 popd
-rdoc -o rdoc
-rdoc --ri -o ri
 
 %install
-mkdir -p %{buildroot}%{geminstdir}
-mkdir -p %{buildroot}%{gemdir}/cache
-mkdir -p %{buildroot}%{gemdir}/specifications
-mkdir -p %{buildroot}%{ruby_sitearch}
-mkdir -p %{buildroot}%{gemdir}/doc/%{gemname}-%{version}
-
-for file in Gemfile LICENSE build_native_gems.sh cucumber.yml gherkin.gemspec; do
-    cp %{_builddir}/%{name}-%{version}/%{gemname}-%{version}/$file %{buildroot}%{geminstdir}
-done
+mkdir -p %{buildroot}%{gem_dir}
+cp -a .%{gem_dir}/* \
+        %{buildroot}%{gem_dir}/
 
-# files for the main package
-cp %{SOURCE0} %{buildroot}%{gemdir}/cache/
-cp -a %{_builddir}/%{name}-%{version}/%{gemname}-%{version}/features %{buildroot}%{geminstdir}
-cp -a %{_builddir}/%{name}-%{version}/%{gemname}-%{version}/lib %{buildroot}%{geminstdir}
+mkdir -p %{buildroot}%{gem_extdir}/lib
 # the .so files go in the sitearch, so remove them from lib
-find %{buildroot}%{geminstdir} -iname '*.so' -exec rm -f {} \;
-cp -a %{_builddir}/%{name}-%{version}/%{gemname}-%{version}/ragel %{buildroot}%{geminstdir}
-cp -a %{_builddir}/%{name}-%{version}/%{gemname}-%{version}/spec %{buildroot}%{geminstdir}
-cp %{_builddir}/%{name}-%{version}/%{gemname}-%{version}/gherkin.gemspec %{buildroot}/%{gemdir}/specifications/%{gemname}-%{version}.gemspec
-
-find %{_builddir}/%{name}-%{version}/%{gemname}-%{version}/ext -iname '*.so' -exec cp {} %{buildroot}%{ruby_sitearch} \;
 
-# files for the -doc subpackage
-cp %{_builddir}/%{name}-%{version}/%{gemname}-%{version}/Rakefile %{buildroot}%{geminstdir}
-cp -a %{_builddir}/%{name}-%{version}/%{gemname}-%{version}/ext %{buildroot}%{geminstdir}
-cp -a %{_builddir}/%{name}-%{version}/%{gemname}-%{version}/tasks %{buildroot}%{geminstdir}
-cp -a %{_builddir}/%{name}-%{version}/%{gemname}-%{version}/rdoc %{buildroot}%{gemdir}/doc/%{gemname}-%{version}
-cp -a %{_builddir}/%{name}-%{version}/%{gemname}-%{version}/ri %{buildroot}%{gemdir}/doc/%{gemname}-%{version}
+find %{buildroot}%{gem_instdir}/ext -iname '*.so' -exec mv {} %{buildroot}%{gem_extdir}/lib \;
 
 # clean out any gitignore
 find %{buildroot} -iname '.gitignore' -exec rm -f {} \;
 
 %files
 %defattr(-, root, root, -)
-%dir %{geminstdir}
-%{ruby_sitearch}/%{gemname}_*.so
-%{geminstdir}/lib
-%{geminstdir}/ragel
-%{geminstdir}/build_native_gems.sh
-%doc %{geminstdir}/features
-%doc %{geminstdir}/spec
-%doc %{geminstdir}/LICENSE
-%doc %{geminstdir}/cucumber.yml
-%doc %{geminstdir}/Gemfile
-%{geminstdir}/%{gemname}.gemspec
-%{gemdir}/cache/%{gemname}-%{version}.gem
-%{gemdir}/specifications/%{gemname}-%{version}.gemspec
+%dir %{gem_instdir}
+%exclude %{gem_instdir}/.*
+%exclude %{gem_instdir}/Gemfile.lock
+%{gem_extdir}
+%{gem_libdir}
+%{gem_instdir}/java
+%{gem_instdir}/js
+%{gem_instdir}/ragel
+%{gem_instdir}/build_native_gems.sh
+%doc %{gem_instdir}/features
+%doc %{gem_instdir}/spec
+%doc %{gem_instdir}/LICENSE
+%doc %{gem_instdir}/cucumber.yml
+%doc %{gem_instdir}/Gemfile
+%{gem_instdir}/%{gem_name}.gemspec
+%{gem_cache}
+%{gem_spec}
 
 %files doc
 %defattr(-, root, root, -)
-%{geminstdir}/Rakefile
-%{geminstdir}/ext
-%{geminstdir}/tasks
-%{gemdir}/doc/%{gemname}-%{version}
+%{gem_instdir}/History.md
+%{gem_instdir}/README.md
+%{gem_instdir}/Rakefile
+%{gem_instdir}/ext
+%{gem_instdir}/tasks
+%{gem_docdir}
 
 %changelog
+* Mon Jan 23 2012 Bohuslav Kabrda <bkabrda at redhat.com> - 2.4.5-3
+- Rebuilt for Ruby 1.9.3.
+- Significantly simplified build process.
+
 * Sat Jan 14 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.4.5-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
 


More information about the scm-commits mailing list