gherkin 2.11.3 → 2.11.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.md +6 -0
- data/README.md +1 -1
- data/ext/gherkin_lexer_fa/extconf.rb +6 -0
- data/ext/gherkin_lexer_fa/gherkin_lexer_fa.c +1475 -0
- data/gherkin.gemspec +1 -1
- data/lib/gherkin/i18n.json +14 -0
- data/lib/gherkin/lexer/encoding.rb +34 -0
- data/lib/gherkin/native/therubyracer.rb +1 -0
- data/ragel/lexer.java.rl.erb +4 -4
- data/ragel/lexer.js.rl.erb +1 -1
- data/spec/gherkin/c_lexer_spec.rb +1 -1
- data/spec/gherkin/fixtures/iso-8859-1.feature +6 -0
- data/spec/gherkin/i18n_spec.rb +1 -0
- data/spec/gherkin/native_lexer_spec.rb +1 -1
- data/spec/gherkin/shared/encoding_group.rb +36 -0
- data/spec/spec_helper.rb +4 -2
- metadata +11 -21
- data/spec/gherkin/shared/bom_group.rb +0 -20
data/gherkin.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
# When both are building OK, do a `bundle exec rake install` in both cucumber and gherkin projects, revert the changes in the first 2 steps
|
16
16
|
# and release both projects. Do this for both ruby 1.8.7, ruby 1.9.3 and jruby.
|
17
17
|
#
|
18
|
-
s.version = "2.11.
|
18
|
+
s.version = "2.11.4"
|
19
19
|
s.authors = ["Mike Sassak", "Gregory Hnatiuk", "Aslak Hellesøy"]
|
20
20
|
s.description = "A fast Gherkin lexer/parser based on the Ragel State Machine Compiler."
|
21
21
|
s.summary = "#{s.name}-#{s.version}"
|
data/lib/gherkin/i18n.json
CHANGED
@@ -237,6 +237,20 @@
|
|
237
237
|
"and": "*|Ja",
|
238
238
|
"but": "*|Kuid"
|
239
239
|
},
|
240
|
+
"fa": {
|
241
|
+
"name": "Persian",
|
242
|
+
"native": "فارسی",
|
243
|
+
"feature": "وِیژگی",
|
244
|
+
"background": "زمینه",
|
245
|
+
"scenario": "سناریو",
|
246
|
+
"scenario_outline": "الگوی سناریو",
|
247
|
+
"examples": "نمونه ها",
|
248
|
+
"given": "*|با فرض",
|
249
|
+
"when": "*|هنگامی",
|
250
|
+
"then": "*|آنگاه",
|
251
|
+
"and": "*|و",
|
252
|
+
"but": "*|اما"
|
253
|
+
},
|
240
254
|
"fi": {
|
241
255
|
"name": "Finnish",
|
242
256
|
"native": "suomi",
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Gherkin
|
2
|
+
module Lexer
|
3
|
+
class Encoding
|
4
|
+
native_impl('gherkin')
|
5
|
+
|
6
|
+
COMMENT_OR_EMPTY_LINE_PATTERN = /^\s*#|^\s*$/
|
7
|
+
ENCODING_PATTERN = /^\s*#\s*encoding\s*:\s*([0-9a-zA-Z\-]+)/i #:nodoc:
|
8
|
+
|
9
|
+
def read_file(path)
|
10
|
+
source = File.new(path).read
|
11
|
+
enc = encoding(source)
|
12
|
+
if(enc != 'UTF-8')
|
13
|
+
# Read it again with different encoding
|
14
|
+
source = File.new(path, "r:#{enc}:UTF-8").read
|
15
|
+
end
|
16
|
+
source
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def encoding(source)
|
22
|
+
encoding = 'UTF-8'
|
23
|
+
source.each_line do |line|
|
24
|
+
break unless COMMENT_OR_EMPTY_LINE_PATTERN =~ line
|
25
|
+
if ENCODING_PATTERN =~ line
|
26
|
+
encoding = $1
|
27
|
+
break
|
28
|
+
end
|
29
|
+
end
|
30
|
+
encoding.upcase
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -5,6 +5,7 @@ class Class
|
|
5
5
|
class << self
|
6
6
|
def new(*args)
|
7
7
|
js = {
|
8
|
+
# Add more mappings here if needed. The mappings are only used by test code.
|
8
9
|
'Gherkin::Formatter::JSONFormatter' => 'js/lib/gherkin/formatter/json_formatter.js',
|
9
10
|
'Gherkin::Lexer::En' => 'js/lib/gherkin/lexer/en.js'
|
10
11
|
}[self.name]
|
data/ragel/lexer.java.rl.erb
CHANGED
@@ -39,7 +39,7 @@ public class <%= @i18n.underscored_iso_code.capitalize %> implements Lexer {
|
|
39
39
|
}
|
40
40
|
|
41
41
|
action store_docstring_content {
|
42
|
-
String con = unindent(startCol, substring(data, contentStart, nextKeywordStart-1).replaceFirst("(\\r?\\n)?([\\t ])*\\Z", "").
|
42
|
+
String con = unindent(startCol, substring(data, contentStart, nextKeywordStart-1).replaceFirst("(\\r?\\n)?([\\t ])*\\Z", "").replace("\\\"\\\"\\\"", "\"\"\""));
|
43
43
|
String conType = substring(data, docstringContentTypeStart, docstringContentTypeEnd).trim();
|
44
44
|
listener.docString(conType, con, currentLine);
|
45
45
|
}
|
@@ -127,9 +127,9 @@ public class <%= @i18n.underscored_iso_code.capitalize %> implements Lexer {
|
|
127
127
|
action store_cell_content {
|
128
128
|
String con = substring(data, contentStart, p).trim();
|
129
129
|
currentRow.add(con
|
130
|
-
.
|
131
|
-
.
|
132
|
-
.
|
130
|
+
.replace("\\|", "|")
|
131
|
+
.replace("\\n", "\n")
|
132
|
+
.replace("\\\\", "\\")
|
133
133
|
);
|
134
134
|
}
|
135
135
|
|
data/ragel/lexer.js.rl.erb
CHANGED
@@ -215,7 +215,7 @@ if(typeof module !== 'undefined') {
|
|
215
215
|
if (typeof define !== 'undefined') {
|
216
216
|
if(define.amd) {
|
217
217
|
define('gherkin/lexer/<%= @i18n.underscored_iso_code %>', [], function() {
|
218
|
-
return Lexer
|
218
|
+
return Lexer;
|
219
219
|
});
|
220
220
|
} else {
|
221
221
|
define('gherkin/lexer/<%= @i18n.underscored_iso_code %>', function(require, exports, module) {
|
@@ -15,7 +15,7 @@ module Gherkin
|
|
15
15
|
it_should_behave_like "a Gherkin lexer lexing tags"
|
16
16
|
it_should_behave_like "a Gherkin lexer lexing doc_strings"
|
17
17
|
it_should_behave_like "a Gherkin lexer lexing rows"
|
18
|
-
it_should_behave_like "
|
18
|
+
it_should_behave_like "encoding"
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
data/spec/gherkin/i18n_spec.rb
CHANGED
@@ -23,7 +23,7 @@ module Gherkin
|
|
23
23
|
it_should_behave_like "a Gherkin lexer lexing tags"
|
24
24
|
it_should_behave_like "a Gherkin lexer lexing doc_strings"
|
25
25
|
it_should_behave_like "a Gherkin lexer lexing rows"
|
26
|
-
it_should_behave_like "
|
26
|
+
it_should_behave_like "encoding" unless ENV['GHERKIN_JS_NATIVE']
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
module Gherkin
|
5
|
+
module Lexer
|
6
|
+
shared_examples_for "encoding" do
|
7
|
+
describe "with BOM" do
|
8
|
+
it "should work just fine" do
|
9
|
+
scan_file("with_bom.feature")
|
10
|
+
@listener.to_sexp.should == [
|
11
|
+
[:feature, "Feature", "Feature Text", "", 1],
|
12
|
+
[:scenario, "Scenario", "Reading a Scenario", "", 2],
|
13
|
+
[:step, "Given ", "there is a step", 3],
|
14
|
+
[:eof]
|
15
|
+
]
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "with ISO-8859-1 encoding" do
|
19
|
+
it "should work just fine" do
|
20
|
+
@lexer = Gherkin::Lexer::I18nLexer.new(@listener)
|
21
|
+
scan_file("iso-8859-1.feature")
|
22
|
+
@listener.to_sexp.should == [
|
23
|
+
[:comment, "# language: no", 1],
|
24
|
+
[:comment, "# encoding: iSo-8859-1", 2],
|
25
|
+
[:feature, "Egenskap", "ISO-8859-1", "", 3],
|
26
|
+
[:scenario, "Scenario", "ÆØÅ", "", 4],
|
27
|
+
[:step, "Når ", "this is encoded as Latin-1", 5],
|
28
|
+
[:step, "Så ", "everything should parse", 6],
|
29
|
+
[:eof]
|
30
|
+
]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -12,11 +12,12 @@ require 'gherkin'
|
|
12
12
|
require 'stringio'
|
13
13
|
require 'gherkin/sexp_recorder'
|
14
14
|
require 'gherkin/output_stream_string_io'
|
15
|
-
require 'gherkin/shared/
|
15
|
+
require 'gherkin/shared/encoding_group'
|
16
16
|
require 'gherkin/shared/lexer_group'
|
17
17
|
require 'gherkin/shared/tags_group'
|
18
18
|
require 'gherkin/shared/doc_string_group'
|
19
19
|
require 'gherkin/shared/row_group'
|
20
|
+
require 'gherkin/lexer/encoding'
|
20
21
|
$:.unshift(File.dirname(__FILE__))
|
21
22
|
|
22
23
|
module GherkinSpecHelper
|
@@ -25,7 +26,8 @@ module GherkinSpecHelper
|
|
25
26
|
end
|
26
27
|
|
27
28
|
def fixture(file)
|
28
|
-
|
29
|
+
encoding = Gherkin::Lexer::Encoding.new
|
30
|
+
source = encoding.read_file(File.dirname(__FILE__) + "/gherkin/fixtures/" + file)
|
29
31
|
end
|
30
32
|
|
31
33
|
def rubify_hash(hash)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gherkin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.11.
|
4
|
+
version: 2.11.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-10-
|
14
|
+
date: 2012-10-09 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rake-compiler
|
@@ -125,22 +125,6 @@ dependencies:
|
|
125
125
|
- - ! '>='
|
126
126
|
- !ruby/object:Gem::Version
|
127
127
|
version: 0.9.9
|
128
|
-
- !ruby/object:Gem::Dependency
|
129
|
-
name: therubyracer
|
130
|
-
requirement: !ruby/object:Gem::Requirement
|
131
|
-
none: false
|
132
|
-
requirements:
|
133
|
-
- - ! '>='
|
134
|
-
- !ruby/object:Gem::Version
|
135
|
-
version: 0.10.2
|
136
|
-
type: :development
|
137
|
-
prerelease: false
|
138
|
-
version_requirements: !ruby/object:Gem::Requirement
|
139
|
-
none: false
|
140
|
-
requirements:
|
141
|
-
- - ! '>='
|
142
|
-
- !ruby/object:Gem::Version
|
143
|
-
version: 0.10.2
|
144
128
|
- !ruby/object:Gem::Dependency
|
145
129
|
name: yard
|
146
130
|
requirement: !ruby/object:Gem::Requirement
|
@@ -226,6 +210,7 @@ extensions:
|
|
226
210
|
- ext/gherkin_lexer_eo/extconf.rb
|
227
211
|
- ext/gherkin_lexer_es/extconf.rb
|
228
212
|
- ext/gherkin_lexer_et/extconf.rb
|
213
|
+
- ext/gherkin_lexer_fa/extconf.rb
|
229
214
|
- ext/gherkin_lexer_fi/extconf.rb
|
230
215
|
- ext/gherkin_lexer_fr/extconf.rb
|
231
216
|
- ext/gherkin_lexer_he/extconf.rb
|
@@ -310,6 +295,7 @@ files:
|
|
310
295
|
- lib/gherkin/i18n.json
|
311
296
|
- lib/gherkin/i18n.rb
|
312
297
|
- lib/gherkin/json_parser.rb
|
298
|
+
- lib/gherkin/lexer/encoding.rb
|
313
299
|
- lib/gherkin/lexer/i18n_lexer.rb
|
314
300
|
- lib/gherkin/listener/event.rb
|
315
301
|
- lib/gherkin/listener/formatter_listener.rb
|
@@ -346,6 +332,7 @@ files:
|
|
346
332
|
- spec/gherkin/fixtures/i18n_pt3.feature
|
347
333
|
- spec/gherkin/fixtures/i18n_pt4.feature
|
348
334
|
- spec/gherkin/fixtures/i18n_zh-CN.feature
|
335
|
+
- spec/gherkin/fixtures/iso-8859-1.feature
|
349
336
|
- spec/gherkin/fixtures/issue_145.feature
|
350
337
|
- spec/gherkin/fixtures/scenario_outline_with_tags.feature
|
351
338
|
- spec/gherkin/fixtures/scenario_without_steps.feature
|
@@ -369,8 +356,8 @@ files:
|
|
369
356
|
- spec/gherkin/output_stream_string_io.rb
|
370
357
|
- spec/gherkin/parser/parser_spec.rb
|
371
358
|
- spec/gherkin/sexp_recorder.rb
|
372
|
-
- spec/gherkin/shared/bom_group.rb
|
373
359
|
- spec/gherkin/shared/doc_string_group.rb
|
360
|
+
- spec/gherkin/shared/encoding_group.rb
|
374
361
|
- spec/gherkin/shared/lexer_group.rb
|
375
362
|
- spec/gherkin/shared/row_group.rb
|
376
363
|
- spec/gherkin/shared/tags_group.rb
|
@@ -411,6 +398,7 @@ files:
|
|
411
398
|
- ext/gherkin_lexer_eo/gherkin_lexer_eo.c
|
412
399
|
- ext/gherkin_lexer_es/gherkin_lexer_es.c
|
413
400
|
- ext/gherkin_lexer_et/gherkin_lexer_et.c
|
401
|
+
- ext/gherkin_lexer_fa/gherkin_lexer_fa.c
|
414
402
|
- ext/gherkin_lexer_fi/gherkin_lexer_fi.c
|
415
403
|
- ext/gherkin_lexer_fr/gherkin_lexer_fr.c
|
416
404
|
- ext/gherkin_lexer_he/gherkin_lexer_he.c
|
@@ -457,6 +445,7 @@ files:
|
|
457
445
|
- ext/gherkin_lexer_eo/extconf.rb
|
458
446
|
- ext/gherkin_lexer_es/extconf.rb
|
459
447
|
- ext/gherkin_lexer_et/extconf.rb
|
448
|
+
- ext/gherkin_lexer_fa/extconf.rb
|
460
449
|
- ext/gherkin_lexer_fi/extconf.rb
|
461
450
|
- ext/gherkin_lexer_fr/extconf.rb
|
462
451
|
- ext/gherkin_lexer_he/extconf.rb
|
@@ -510,7 +499,7 @@ rubyforge_project:
|
|
510
499
|
rubygems_version: 1.8.24
|
511
500
|
signing_key:
|
512
501
|
specification_version: 3
|
513
|
-
summary: gherkin-2.11.
|
502
|
+
summary: gherkin-2.11.4
|
514
503
|
test_files:
|
515
504
|
- features/escaped_pipes.feature
|
516
505
|
- features/feature_parser.feature
|
@@ -544,6 +533,7 @@ test_files:
|
|
544
533
|
- spec/gherkin/fixtures/i18n_pt3.feature
|
545
534
|
- spec/gherkin/fixtures/i18n_pt4.feature
|
546
535
|
- spec/gherkin/fixtures/i18n_zh-CN.feature
|
536
|
+
- spec/gherkin/fixtures/iso-8859-1.feature
|
547
537
|
- spec/gherkin/fixtures/issue_145.feature
|
548
538
|
- spec/gherkin/fixtures/scenario_outline_with_tags.feature
|
549
539
|
- spec/gherkin/fixtures/scenario_without_steps.feature
|
@@ -567,8 +557,8 @@ test_files:
|
|
567
557
|
- spec/gherkin/output_stream_string_io.rb
|
568
558
|
- spec/gherkin/parser/parser_spec.rb
|
569
559
|
- spec/gherkin/sexp_recorder.rb
|
570
|
-
- spec/gherkin/shared/bom_group.rb
|
571
560
|
- spec/gherkin/shared/doc_string_group.rb
|
561
|
+
- spec/gherkin/shared/encoding_group.rb
|
572
562
|
- spec/gherkin/shared/lexer_group.rb
|
573
563
|
- spec/gherkin/shared/row_group.rb
|
574
564
|
- spec/gherkin/shared/tags_group.rb
|
@@ -1,20 +0,0 @@
|
|
1
|
-
#encoding: utf-8
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
module Gherkin
|
5
|
-
module Lexer
|
6
|
-
shared_examples_for "parsing windows files" do
|
7
|
-
describe "with BOM" do
|
8
|
-
it "should work just fine" do
|
9
|
-
scan_file("with_bom.feature")
|
10
|
-
@listener.to_sexp.should == [
|
11
|
-
[:feature, "Feature", "Feature Text", "", 1],
|
12
|
-
[:scenario, "Scenario", "Reading a Scenario", "", 2],
|
13
|
-
[:step, "Given ", "there is a step", 3],
|
14
|
-
[:eof]
|
15
|
-
]
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|