gherkin 2.11.2 → 2.11.3
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/.travis.yml +1 -0
- data/History.md +9 -0
- data/README.md +2 -1
- data/ext/gherkin_lexer_ar/gherkin_lexer_ar.c +8 -8
- data/ext/gherkin_lexer_bg/gherkin_lexer_bg.c +8 -8
- data/ext/gherkin_lexer_bm/gherkin_lexer_bm.c +8 -8
- data/ext/gherkin_lexer_ca/gherkin_lexer_ca.c +8 -8
- data/ext/gherkin_lexer_cs/gherkin_lexer_cs.c +8 -8
- data/ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c +8 -8
- data/ext/gherkin_lexer_da/gherkin_lexer_da.c +8 -8
- data/ext/gherkin_lexer_de/gherkin_lexer_de.c +8 -8
- data/ext/gherkin_lexer_en/gherkin_lexer_en.c +8 -8
- data/ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c +915 -373
- data/ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c +8 -8
- data/ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c +8 -8
- data/ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c +8 -8
- data/ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c +8 -8
- data/ext/gherkin_lexer_eo/gherkin_lexer_eo.c +8 -8
- data/ext/gherkin_lexer_es/gherkin_lexer_es.c +8 -8
- data/ext/gherkin_lexer_et/gherkin_lexer_et.c +8 -8
- data/ext/gherkin_lexer_fi/gherkin_lexer_fi.c +8 -8
- data/ext/gherkin_lexer_fr/gherkin_lexer_fr.c +8 -8
- data/ext/gherkin_lexer_he/gherkin_lexer_he.c +8 -8
- data/ext/gherkin_lexer_hr/gherkin_lexer_hr.c +8 -8
- data/ext/gherkin_lexer_hu/gherkin_lexer_hu.c +8 -8
- data/ext/gherkin_lexer_id/gherkin_lexer_id.c +8 -8
- data/ext/gherkin_lexer_is/gherkin_lexer_is.c +8 -8
- data/ext/gherkin_lexer_it/gherkin_lexer_it.c +8 -8
- data/ext/gherkin_lexer_ja/gherkin_lexer_ja.c +8 -8
- data/ext/gherkin_lexer_ko/gherkin_lexer_ko.c +8 -8
- data/ext/gherkin_lexer_lt/gherkin_lexer_lt.c +8 -8
- data/ext/gherkin_lexer_lu/gherkin_lexer_lu.c +8 -8
- data/ext/gherkin_lexer_lv/gherkin_lexer_lv.c +8 -8
- data/ext/gherkin_lexer_nl/gherkin_lexer_nl.c +8 -8
- data/ext/gherkin_lexer_no/gherkin_lexer_no.c +8 -8
- data/ext/gherkin_lexer_pl/gherkin_lexer_pl.c +8 -8
- data/ext/gherkin_lexer_pt/gherkin_lexer_pt.c +8 -8
- data/ext/gherkin_lexer_ro/gherkin_lexer_ro.c +8 -8
- data/ext/gherkin_lexer_ru/gherkin_lexer_ru.c +8 -8
- data/ext/gherkin_lexer_sk/gherkin_lexer_sk.c +8 -8
- data/ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c +8 -8
- data/ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c +8 -8
- data/ext/gherkin_lexer_sv/gherkin_lexer_sv.c +8 -8
- data/ext/gherkin_lexer_tr/gherkin_lexer_tr.c +8 -8
- data/ext/gherkin_lexer_uk/gherkin_lexer_uk.c +8 -8
- data/ext/gherkin_lexer_uz/gherkin_lexer_uz.c +8 -8
- data/ext/gherkin_lexer_vi/gherkin_lexer_vi.c +8 -8
- data/ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c +8 -8
- data/ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c +8 -8
- data/gherkin.gemspec +4 -4
- data/lib/gherkin/i18n.json +10 -10
- data/lib/gherkin/i18n.rb +1 -1
- data/ragel/lexer.c.rl.erb +5 -5
- data/tasks/apidoc.rake +32 -0
- data/tasks/ikvm.rake +1 -1
- data/tasks/ragel_task.rb +1 -0
- data/tasks/release.rake +1 -19
- metadata +10 -10
- data/tasks/yard.rake +0 -7
data/.travis.yml
CHANGED
data/History.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## [2.11.3](https://github.com/cucumber/gherkin/compare/v2.11.2...v2.11.3)
|
2
|
+
|
3
|
+
* [.NET] Upgraded IKVM from 0.46.0.1 to 7.1.4532.2 - quite a version bump! (Aslak Hellesøy)
|
4
|
+
* [JavaScript] Added a README to prevent npm warnings. (Aslak Hellesøy)
|
5
|
+
* [Ruby] Don't use C++ style comments. ([#191](https://github.com/cucumber/gherkin/pull/191) Sam Goldman)
|
6
|
+
* [Core] Fix for Australian language support ([#196](https://github.com/cucumber/gherkin/pull/196) hogfish)
|
7
|
+
* [Ruby] Add encoding option to IO.read ([#190](https://github.com/cucumber/gherkin/pull/190), [#192](https://github.com/cucumber/gherkin/issues/192) [#194](https://github.com/cucumber/gherkin/pull/194) HUANG Wei, Levin Alexander)
|
8
|
+
* [JavaScript] Can't run on IE because of `const` keyword ([#186](https://github.com/cucumber/gherkin/issues/186) Aslak Hellesøy)
|
9
|
+
|
1
10
|
## [2.11.2](https://github.com/cucumber/gherkin/compare/v2.11.1...v2.11.2)
|
2
11
|
|
3
12
|
* [Java] Depend on an external gherkin-jvm-deps jar with repackaged dependencies (Aslak Hellesøy, Rex Hoffman)
|
data/README.md
CHANGED
@@ -54,7 +54,7 @@ The jar file is in the central Maven repo.
|
|
54
54
|
<dependency>
|
55
55
|
<groupId>info.cukes</groupId>
|
56
56
|
<artifactId>gherkin</artifactId>
|
57
|
-
<version>2.11.
|
57
|
+
<version>2.11.3</version>
|
58
58
|
</dependency>
|
59
59
|
|
60
60
|
You can get it manually from [Maven Central](http://search.maven.org/#browse%7C-2073395818)
|
@@ -251,6 +251,7 @@ Now we can release:
|
|
251
251
|
* gherkin.gemspec
|
252
252
|
* java/pom.xml
|
253
253
|
* js/package.json
|
254
|
+
* History.md
|
254
255
|
* Run `bundle update`, so Gemfile.lock gets updated with the changes.
|
255
256
|
* Commit changes, otherwise you will get an error at the end when a tag is made.
|
256
257
|
* Run `bundle exec rake gems:prepare && ./build_native_gems.sh && bundle exec rake release:ALL`
|
@@ -870,7 +870,7 @@ static VALUE
|
|
870
870
|
unindent(VALUE con, int start_col)
|
871
871
|
{
|
872
872
|
VALUE re;
|
873
|
-
|
873
|
+
/* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
|
874
874
|
char pat[32];
|
875
875
|
snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
|
876
876
|
re = rb_reg_regcomp(rb_str_new2(pat));
|
@@ -1301,14 +1301,14 @@ _match:
|
|
1301
1301
|
buff = data;
|
1302
1302
|
}
|
1303
1303
|
|
1304
|
-
|
1304
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1305
1305
|
newstr_val = rb_str_new(buff, len);
|
1306
1306
|
newstr = RSTRING_PTR(newstr_val);
|
1307
1307
|
|
1308
1308
|
|
1309
1309
|
for (count = 0; count < len; count++) {
|
1310
1310
|
if(buff[count] == 10) {
|
1311
|
-
newstr[newstr_count] = '\0';
|
1311
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1312
1312
|
break;
|
1313
1313
|
} else {
|
1314
1314
|
if (buff[count] == '%') {
|
@@ -1322,7 +1322,7 @@ _match:
|
|
1322
1322
|
}
|
1323
1323
|
|
1324
1324
|
line = lexer->line_number;
|
1325
|
-
lexer_init(lexer);
|
1325
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1326
1326
|
raise_lexer_error(newstr, line);
|
1327
1327
|
} else {
|
1328
1328
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1364,14 +1364,14 @@ _again:
|
|
1364
1364
|
buff = data;
|
1365
1365
|
}
|
1366
1366
|
|
1367
|
-
|
1367
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1368
1368
|
newstr_val = rb_str_new(buff, len);
|
1369
1369
|
newstr = RSTRING_PTR(newstr_val);
|
1370
1370
|
|
1371
1371
|
|
1372
1372
|
for (count = 0; count < len; count++) {
|
1373
1373
|
if(buff[count] == 10) {
|
1374
|
-
newstr[newstr_count] = '\0';
|
1374
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1375
1375
|
break;
|
1376
1376
|
} else {
|
1377
1377
|
if (buff[count] == '%') {
|
@@ -1385,7 +1385,7 @@ _again:
|
|
1385
1385
|
}
|
1386
1386
|
|
1387
1387
|
line = lexer->line_number;
|
1388
|
-
lexer_init(lexer);
|
1388
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1389
1389
|
raise_lexer_error(newstr, line);
|
1390
1390
|
} else {
|
1391
1391
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1406,7 +1406,7 @@ _again:
|
|
1406
1406
|
assert(lexer->content_start <= len && "content starts after data end");
|
1407
1407
|
assert(lexer->mark < len && "mark is after data end");
|
1408
1408
|
|
1409
|
-
|
1409
|
+
/* Reset lexer by re-initializing the whole thing */
|
1410
1410
|
lexer_init(lexer);
|
1411
1411
|
|
1412
1412
|
if (cs == lexer_error) {
|
@@ -1093,7 +1093,7 @@ static VALUE
|
|
1093
1093
|
unindent(VALUE con, int start_col)
|
1094
1094
|
{
|
1095
1095
|
VALUE re;
|
1096
|
-
|
1096
|
+
/* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
|
1097
1097
|
char pat[32];
|
1098
1098
|
snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
|
1099
1099
|
re = rb_reg_regcomp(rb_str_new2(pat));
|
@@ -1524,14 +1524,14 @@ _match:
|
|
1524
1524
|
buff = data;
|
1525
1525
|
}
|
1526
1526
|
|
1527
|
-
|
1527
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1528
1528
|
newstr_val = rb_str_new(buff, len);
|
1529
1529
|
newstr = RSTRING_PTR(newstr_val);
|
1530
1530
|
|
1531
1531
|
|
1532
1532
|
for (count = 0; count < len; count++) {
|
1533
1533
|
if(buff[count] == 10) {
|
1534
|
-
newstr[newstr_count] = '\0';
|
1534
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1535
1535
|
break;
|
1536
1536
|
} else {
|
1537
1537
|
if (buff[count] == '%') {
|
@@ -1545,7 +1545,7 @@ _match:
|
|
1545
1545
|
}
|
1546
1546
|
|
1547
1547
|
line = lexer->line_number;
|
1548
|
-
lexer_init(lexer);
|
1548
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1549
1549
|
raise_lexer_error(newstr, line);
|
1550
1550
|
} else {
|
1551
1551
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1587,14 +1587,14 @@ _again:
|
|
1587
1587
|
buff = data;
|
1588
1588
|
}
|
1589
1589
|
|
1590
|
-
|
1590
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1591
1591
|
newstr_val = rb_str_new(buff, len);
|
1592
1592
|
newstr = RSTRING_PTR(newstr_val);
|
1593
1593
|
|
1594
1594
|
|
1595
1595
|
for (count = 0; count < len; count++) {
|
1596
1596
|
if(buff[count] == 10) {
|
1597
|
-
newstr[newstr_count] = '\0';
|
1597
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1598
1598
|
break;
|
1599
1599
|
} else {
|
1600
1600
|
if (buff[count] == '%') {
|
@@ -1608,7 +1608,7 @@ _again:
|
|
1608
1608
|
}
|
1609
1609
|
|
1610
1610
|
line = lexer->line_number;
|
1611
|
-
lexer_init(lexer);
|
1611
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1612
1612
|
raise_lexer_error(newstr, line);
|
1613
1613
|
} else {
|
1614
1614
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1629,7 +1629,7 @@ _again:
|
|
1629
1629
|
assert(lexer->content_start <= len && "content starts after data end");
|
1630
1630
|
assert(lexer->mark < len && "mark is after data end");
|
1631
1631
|
|
1632
|
-
|
1632
|
+
/* Reset lexer by re-initializing the whole thing */
|
1633
1633
|
lexer_init(lexer);
|
1634
1634
|
|
1635
1635
|
if (cs == lexer_error) {
|
@@ -814,7 +814,7 @@ static VALUE
|
|
814
814
|
unindent(VALUE con, int start_col)
|
815
815
|
{
|
816
816
|
VALUE re;
|
817
|
-
|
817
|
+
/* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
|
818
818
|
char pat[32];
|
819
819
|
snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
|
820
820
|
re = rb_reg_regcomp(rb_str_new2(pat));
|
@@ -1245,14 +1245,14 @@ _match:
|
|
1245
1245
|
buff = data;
|
1246
1246
|
}
|
1247
1247
|
|
1248
|
-
|
1248
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1249
1249
|
newstr_val = rb_str_new(buff, len);
|
1250
1250
|
newstr = RSTRING_PTR(newstr_val);
|
1251
1251
|
|
1252
1252
|
|
1253
1253
|
for (count = 0; count < len; count++) {
|
1254
1254
|
if(buff[count] == 10) {
|
1255
|
-
newstr[newstr_count] = '\0';
|
1255
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1256
1256
|
break;
|
1257
1257
|
} else {
|
1258
1258
|
if (buff[count] == '%') {
|
@@ -1266,7 +1266,7 @@ _match:
|
|
1266
1266
|
}
|
1267
1267
|
|
1268
1268
|
line = lexer->line_number;
|
1269
|
-
lexer_init(lexer);
|
1269
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1270
1270
|
raise_lexer_error(newstr, line);
|
1271
1271
|
} else {
|
1272
1272
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1308,14 +1308,14 @@ _again:
|
|
1308
1308
|
buff = data;
|
1309
1309
|
}
|
1310
1310
|
|
1311
|
-
|
1311
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1312
1312
|
newstr_val = rb_str_new(buff, len);
|
1313
1313
|
newstr = RSTRING_PTR(newstr_val);
|
1314
1314
|
|
1315
1315
|
|
1316
1316
|
for (count = 0; count < len; count++) {
|
1317
1317
|
if(buff[count] == 10) {
|
1318
|
-
newstr[newstr_count] = '\0';
|
1318
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1319
1319
|
break;
|
1320
1320
|
} else {
|
1321
1321
|
if (buff[count] == '%') {
|
@@ -1329,7 +1329,7 @@ _again:
|
|
1329
1329
|
}
|
1330
1330
|
|
1331
1331
|
line = lexer->line_number;
|
1332
|
-
lexer_init(lexer);
|
1332
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1333
1333
|
raise_lexer_error(newstr, line);
|
1334
1334
|
} else {
|
1335
1335
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1350,7 +1350,7 @@ _again:
|
|
1350
1350
|
assert(lexer->content_start <= len && "content starts after data end");
|
1351
1351
|
assert(lexer->mark < len && "mark is after data end");
|
1352
1352
|
|
1353
|
-
|
1353
|
+
/* Reset lexer by re-initializing the whole thing */
|
1354
1354
|
lexer_init(lexer);
|
1355
1355
|
|
1356
1356
|
if (cs == lexer_error) {
|
@@ -1019,7 +1019,7 @@ static VALUE
|
|
1019
1019
|
unindent(VALUE con, int start_col)
|
1020
1020
|
{
|
1021
1021
|
VALUE re;
|
1022
|
-
|
1022
|
+
/* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
|
1023
1023
|
char pat[32];
|
1024
1024
|
snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
|
1025
1025
|
re = rb_reg_regcomp(rb_str_new2(pat));
|
@@ -1450,14 +1450,14 @@ _match:
|
|
1450
1450
|
buff = data;
|
1451
1451
|
}
|
1452
1452
|
|
1453
|
-
|
1453
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1454
1454
|
newstr_val = rb_str_new(buff, len);
|
1455
1455
|
newstr = RSTRING_PTR(newstr_val);
|
1456
1456
|
|
1457
1457
|
|
1458
1458
|
for (count = 0; count < len; count++) {
|
1459
1459
|
if(buff[count] == 10) {
|
1460
|
-
newstr[newstr_count] = '\0';
|
1460
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1461
1461
|
break;
|
1462
1462
|
} else {
|
1463
1463
|
if (buff[count] == '%') {
|
@@ -1471,7 +1471,7 @@ _match:
|
|
1471
1471
|
}
|
1472
1472
|
|
1473
1473
|
line = lexer->line_number;
|
1474
|
-
lexer_init(lexer);
|
1474
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1475
1475
|
raise_lexer_error(newstr, line);
|
1476
1476
|
} else {
|
1477
1477
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1513,14 +1513,14 @@ _again:
|
|
1513
1513
|
buff = data;
|
1514
1514
|
}
|
1515
1515
|
|
1516
|
-
|
1516
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1517
1517
|
newstr_val = rb_str_new(buff, len);
|
1518
1518
|
newstr = RSTRING_PTR(newstr_val);
|
1519
1519
|
|
1520
1520
|
|
1521
1521
|
for (count = 0; count < len; count++) {
|
1522
1522
|
if(buff[count] == 10) {
|
1523
|
-
newstr[newstr_count] = '\0';
|
1523
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1524
1524
|
break;
|
1525
1525
|
} else {
|
1526
1526
|
if (buff[count] == '%') {
|
@@ -1534,7 +1534,7 @@ _again:
|
|
1534
1534
|
}
|
1535
1535
|
|
1536
1536
|
line = lexer->line_number;
|
1537
|
-
lexer_init(lexer);
|
1537
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1538
1538
|
raise_lexer_error(newstr, line);
|
1539
1539
|
} else {
|
1540
1540
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1555,7 +1555,7 @@ _again:
|
|
1555
1555
|
assert(lexer->content_start <= len && "content starts after data end");
|
1556
1556
|
assert(lexer->mark < len && "mark is after data end");
|
1557
1557
|
|
1558
|
-
|
1558
|
+
/* Reset lexer by re-initializing the whole thing */
|
1559
1559
|
lexer_init(lexer);
|
1560
1560
|
|
1561
1561
|
if (cs == lexer_error) {
|
@@ -865,7 +865,7 @@ static VALUE
|
|
865
865
|
unindent(VALUE con, int start_col)
|
866
866
|
{
|
867
867
|
VALUE re;
|
868
|
-
|
868
|
+
/* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
|
869
869
|
char pat[32];
|
870
870
|
snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
|
871
871
|
re = rb_reg_regcomp(rb_str_new2(pat));
|
@@ -1296,14 +1296,14 @@ _match:
|
|
1296
1296
|
buff = data;
|
1297
1297
|
}
|
1298
1298
|
|
1299
|
-
|
1299
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1300
1300
|
newstr_val = rb_str_new(buff, len);
|
1301
1301
|
newstr = RSTRING_PTR(newstr_val);
|
1302
1302
|
|
1303
1303
|
|
1304
1304
|
for (count = 0; count < len; count++) {
|
1305
1305
|
if(buff[count] == 10) {
|
1306
|
-
newstr[newstr_count] = '\0';
|
1306
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1307
1307
|
break;
|
1308
1308
|
} else {
|
1309
1309
|
if (buff[count] == '%') {
|
@@ -1317,7 +1317,7 @@ _match:
|
|
1317
1317
|
}
|
1318
1318
|
|
1319
1319
|
line = lexer->line_number;
|
1320
|
-
lexer_init(lexer);
|
1320
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1321
1321
|
raise_lexer_error(newstr, line);
|
1322
1322
|
} else {
|
1323
1323
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1359,14 +1359,14 @@ _again:
|
|
1359
1359
|
buff = data;
|
1360
1360
|
}
|
1361
1361
|
|
1362
|
-
|
1362
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1363
1363
|
newstr_val = rb_str_new(buff, len);
|
1364
1364
|
newstr = RSTRING_PTR(newstr_val);
|
1365
1365
|
|
1366
1366
|
|
1367
1367
|
for (count = 0; count < len; count++) {
|
1368
1368
|
if(buff[count] == 10) {
|
1369
|
-
newstr[newstr_count] = '\0';
|
1369
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1370
1370
|
break;
|
1371
1371
|
} else {
|
1372
1372
|
if (buff[count] == '%') {
|
@@ -1380,7 +1380,7 @@ _again:
|
|
1380
1380
|
}
|
1381
1381
|
|
1382
1382
|
line = lexer->line_number;
|
1383
|
-
lexer_init(lexer);
|
1383
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1384
1384
|
raise_lexer_error(newstr, line);
|
1385
1385
|
} else {
|
1386
1386
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1401,7 +1401,7 @@ _again:
|
|
1401
1401
|
assert(lexer->content_start <= len && "content starts after data end");
|
1402
1402
|
assert(lexer->mark < len && "mark is after data end");
|
1403
1403
|
|
1404
|
-
|
1404
|
+
/* Reset lexer by re-initializing the whole thing */
|
1405
1405
|
lexer_init(lexer);
|
1406
1406
|
|
1407
1407
|
if (cs == lexer_error) {
|
@@ -720,7 +720,7 @@ static VALUE
|
|
720
720
|
unindent(VALUE con, int start_col)
|
721
721
|
{
|
722
722
|
VALUE re;
|
723
|
-
|
723
|
+
/* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
|
724
724
|
char pat[32];
|
725
725
|
snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
|
726
726
|
re = rb_reg_regcomp(rb_str_new2(pat));
|
@@ -1151,14 +1151,14 @@ _match:
|
|
1151
1151
|
buff = data;
|
1152
1152
|
}
|
1153
1153
|
|
1154
|
-
|
1154
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1155
1155
|
newstr_val = rb_str_new(buff, len);
|
1156
1156
|
newstr = RSTRING_PTR(newstr_val);
|
1157
1157
|
|
1158
1158
|
|
1159
1159
|
for (count = 0; count < len; count++) {
|
1160
1160
|
if(buff[count] == 10) {
|
1161
|
-
newstr[newstr_count] = '\0';
|
1161
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1162
1162
|
break;
|
1163
1163
|
} else {
|
1164
1164
|
if (buff[count] == '%') {
|
@@ -1172,7 +1172,7 @@ _match:
|
|
1172
1172
|
}
|
1173
1173
|
|
1174
1174
|
line = lexer->line_number;
|
1175
|
-
lexer_init(lexer);
|
1175
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1176
1176
|
raise_lexer_error(newstr, line);
|
1177
1177
|
} else {
|
1178
1178
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1214,14 +1214,14 @@ _again:
|
|
1214
1214
|
buff = data;
|
1215
1215
|
}
|
1216
1216
|
|
1217
|
-
|
1217
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1218
1218
|
newstr_val = rb_str_new(buff, len);
|
1219
1219
|
newstr = RSTRING_PTR(newstr_val);
|
1220
1220
|
|
1221
1221
|
|
1222
1222
|
for (count = 0; count < len; count++) {
|
1223
1223
|
if(buff[count] == 10) {
|
1224
|
-
newstr[newstr_count] = '\0';
|
1224
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1225
1225
|
break;
|
1226
1226
|
} else {
|
1227
1227
|
if (buff[count] == '%') {
|
@@ -1235,7 +1235,7 @@ _again:
|
|
1235
1235
|
}
|
1236
1236
|
|
1237
1237
|
line = lexer->line_number;
|
1238
|
-
lexer_init(lexer);
|
1238
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1239
1239
|
raise_lexer_error(newstr, line);
|
1240
1240
|
} else {
|
1241
1241
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1256,7 +1256,7 @@ _again:
|
|
1256
1256
|
assert(lexer->content_start <= len && "content starts after data end");
|
1257
1257
|
assert(lexer->mark < len && "mark is after data end");
|
1258
1258
|
|
1259
|
-
|
1259
|
+
/* Reset lexer by re-initializing the whole thing */
|
1260
1260
|
lexer_init(lexer);
|
1261
1261
|
|
1262
1262
|
if (cs == lexer_error) {
|
@@ -736,7 +736,7 @@ static VALUE
|
|
736
736
|
unindent(VALUE con, int start_col)
|
737
737
|
{
|
738
738
|
VALUE re;
|
739
|
-
|
739
|
+
/* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
|
740
740
|
char pat[32];
|
741
741
|
snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
|
742
742
|
re = rb_reg_regcomp(rb_str_new2(pat));
|
@@ -1167,14 +1167,14 @@ _match:
|
|
1167
1167
|
buff = data;
|
1168
1168
|
}
|
1169
1169
|
|
1170
|
-
|
1170
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1171
1171
|
newstr_val = rb_str_new(buff, len);
|
1172
1172
|
newstr = RSTRING_PTR(newstr_val);
|
1173
1173
|
|
1174
1174
|
|
1175
1175
|
for (count = 0; count < len; count++) {
|
1176
1176
|
if(buff[count] == 10) {
|
1177
|
-
newstr[newstr_count] = '\0';
|
1177
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1178
1178
|
break;
|
1179
1179
|
} else {
|
1180
1180
|
if (buff[count] == '%') {
|
@@ -1188,7 +1188,7 @@ _match:
|
|
1188
1188
|
}
|
1189
1189
|
|
1190
1190
|
line = lexer->line_number;
|
1191
|
-
lexer_init(lexer);
|
1191
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1192
1192
|
raise_lexer_error(newstr, line);
|
1193
1193
|
} else {
|
1194
1194
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1230,14 +1230,14 @@ _again:
|
|
1230
1230
|
buff = data;
|
1231
1231
|
}
|
1232
1232
|
|
1233
|
-
|
1233
|
+
/* Allocate as a ruby string so that it gets cleaned up by GC */
|
1234
1234
|
newstr_val = rb_str_new(buff, len);
|
1235
1235
|
newstr = RSTRING_PTR(newstr_val);
|
1236
1236
|
|
1237
1237
|
|
1238
1238
|
for (count = 0; count < len; count++) {
|
1239
1239
|
if(buff[count] == 10) {
|
1240
|
-
newstr[newstr_count] = '\0';
|
1240
|
+
newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
|
1241
1241
|
break;
|
1242
1242
|
} else {
|
1243
1243
|
if (buff[count] == '%') {
|
@@ -1251,7 +1251,7 @@ _again:
|
|
1251
1251
|
}
|
1252
1252
|
|
1253
1253
|
line = lexer->line_number;
|
1254
|
-
lexer_init(lexer);
|
1254
|
+
lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
|
1255
1255
|
raise_lexer_error(newstr, line);
|
1256
1256
|
} else {
|
1257
1257
|
rb_funcall(listener, rb_intern("eof"), 0);
|
@@ -1272,7 +1272,7 @@ _again:
|
|
1272
1272
|
assert(lexer->content_start <= len && "content starts after data end");
|
1273
1273
|
assert(lexer->mark < len && "mark is after data end");
|
1274
1274
|
|
1275
|
-
|
1275
|
+
/* Reset lexer by re-initializing the whole thing */
|
1276
1276
|
lexer_init(lexer);
|
1277
1277
|
|
1278
1278
|
if (cs == lexer_error) {
|