Skip to content

Commit a7ec209

Browse files
committed
Update dependency io.cucumber:gherkin to v34.0.0
1 parent f844b86 commit a7ec209

File tree

6 files changed

+30
-45
lines changed

6 files changed

+30
-45
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1313
### Fixed
1414
- [Core] Format time in JUnit XML report as `xs:float` ([junit-xml-formatter/#83](https://github.com/cucumber/junit-xml-formatter/pull/83) M.P. Korstanje)
1515
- [Core] Replace concurrent hashmap with regular hashmap ([query/#89](https://github.com/cucumber/query/pull/89) M.P. Korstanje)
16+
- [Core] Fixed Afrikaans translation for "rule" ([gherkin/#428](https://github.com/cucumber/gherkin/pull/428))
17+
- [Java] Optimize `GherkinLine.substringTrimmed` ([#gherkin/444](https://github.com/cucumber/gherkin/pull/444))
18+
- [Java] Improve performance with a generated keyword matcher ([#gherkin/445](https://github.com/cucumber/gherkin/pull/445))
1619

1720
## [7.27.0] - 2025-07-27
1821
### Changed

cucumber-bom/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<properties>
1616
<ci-environment.version>10.0.1</ci-environment.version>
1717
<cucumber-expressions.version>18.0.1</cucumber-expressions.version>
18-
<gherkin.version>33.1.0</gherkin.version>
18+
<gherkin.version>34.0.0</gherkin.version>
1919
<html-formatter.version>21.13.0</html-formatter.version>
2020
<junit-xml-formatter.version>0.8.1</junit-xml-formatter.version>
2121
<messages.version>28.1.0</messages.version>

cucumber-core/src/main/java/io/cucumber/core/options/CommandlineOptionsParser.java

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import io.cucumber.datatable.DataTable;
88
import io.cucumber.datatable.DataTableFormatter;
99
import io.cucumber.gherkin.GherkinDialect;
10-
import io.cucumber.gherkin.GherkinDialectProvider;
10+
import io.cucumber.gherkin.GherkinDialects;
1111
import io.cucumber.tagexpressions.TagExpressionParser;
1212

1313
import java.io.BufferedReader;
@@ -18,10 +18,10 @@
1818
import java.net.URI;
1919
import java.util.ArrayList;
2020
import java.util.Arrays;
21+
import java.util.Collection;
2122
import java.util.List;
2223
import java.util.Optional;
2324
import java.util.ResourceBundle;
24-
import java.util.Set;
2525
import java.util.function.Function;
2626
import java.util.regex.Pattern;
2727
import java.util.stream.Collectors;
@@ -196,30 +196,23 @@ private String removeArgFor(String arg, List<String> args) {
196196
}
197197

198198
private byte printI18n(String language) {
199-
GherkinDialectProvider dialectProvider = new GherkinDialectProvider();
200-
Set<String> languages = dialectProvider.getLanguages();
201-
202199
if (language.equalsIgnoreCase("help")) {
203-
if (language.equalsIgnoreCase("help")) {
204-
List<GherkinDialect> dialects = languages.stream()
205-
.map(dialectProvider::getDialect)
206-
.filter(Optional::isPresent)
207-
.map(Optional::get)
208-
.collect(Collectors.toList());
209-
210-
int widestLanguage = findWidest(dialects, GherkinDialect::getLanguage);
211-
int widestName = findWidest(dialects, GherkinDialect::getName);
212-
int widestNativeName = findWidest(dialects, GherkinDialect::getNativeName);
213-
214-
for (GherkinDialect dialect : dialects) {
215-
printDialect(dialect, widestLanguage, widestName, widestNativeName);
216-
}
217-
return 0x0;
200+
Collection<GherkinDialect> dialects = GherkinDialects.getDialects();
201+
202+
int widestLanguage = findWidest(dialects, GherkinDialect::getLanguage);
203+
int widestName = findWidest(dialects, GherkinDialect::getName);
204+
int widestNativeName = findWidest(dialects, GherkinDialect::getNativeName);
205+
206+
for (GherkinDialect dialect : dialects) {
207+
printDialect(dialect, widestLanguage, widestName, widestNativeName);
218208
}
209+
return 0x0;
219210
}
220-
if (languages.contains(language)) {
221-
dialectProvider.getDialect(language)
222-
.ifPresent(this::printKeywordsFor);
211+
212+
Optional<GherkinDialect> dialect = GherkinDialects.getDialect(language);
213+
if (dialect.isPresent()) {
214+
printKeywordsFor(dialect.get());
215+
return 0x0;
223216
}
224217

225218
out.println("Unrecognised ISO language code");
@@ -236,7 +229,7 @@ private String loadUsageText() {
236229
}
237230
}
238231

239-
private int findWidest(List<GherkinDialect> dialects, Function<GherkinDialect, String> getNativeName) {
232+
private int findWidest(Collection<GherkinDialect> dialects, Function<GherkinDialect, String> getNativeName) {
240233
return dialects.stream()
241234
.map(getNativeName)
242235
.mapToInt(String::length)
@@ -252,7 +245,7 @@ private void printDialect(GherkinDialect dialect, int widestLanguage, int widest
252245
out.println(langCode + name + nativeName);
253246
}
254247

255-
private byte printKeywordsFor(GherkinDialect dialect) {
248+
private void printKeywordsFor(GherkinDialect dialect) {
256249
StringBuilder builder = new StringBuilder();
257250
List<List<String>> table = new ArrayList<>();
258251
addKeywordRow(table, "feature", dialect.getFeatureKeywords());
@@ -275,7 +268,6 @@ private byte printKeywordsFor(GherkinDialect dialect) {
275268
.build()
276269
.formatTo(DataTable.create(table), builder);
277270
out.println(builder);
278-
return 0x0;
279271
}
280272

281273
private String rightPad(String text, int maxWidth) {

cucumber-gherkin-messages/src/main/java/io/cucumber/core/gherkin/messages/GherkinMessagesFeatureParser.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import io.cucumber.core.gherkin.FeatureParserException;
66
import io.cucumber.core.gherkin.Pickle;
77
import io.cucumber.gherkin.GherkinDialect;
8-
import io.cucumber.gherkin.GherkinDialectProvider;
8+
import io.cucumber.gherkin.GherkinDialects;
99
import io.cucumber.gherkin.GherkinParser;
1010
import io.cucumber.messages.types.Envelope;
1111
import io.cucumber.messages.types.GherkinDocument;
@@ -67,9 +67,8 @@ public Optional<Feature> parse(URI path, InputStream source, Supplier<UUID> idGe
6767
.map(feature -> {
6868
CucumberQuery cucumberQuery = new CucumberQuery();
6969
cucumberQuery.update(feature);
70-
GherkinDialectProvider dialectProvider = new GherkinDialectProvider();
7170
String language = feature.getLanguage();
72-
GherkinDialect dialect = dialectProvider.getDialect(language)
71+
GherkinDialect dialect = GherkinDialects.getDialect(language)
7372
// Can't happen, we just parsed the feature.
7473
.orElseThrow(() -> new IllegalStateException(language + "was not a known gherkin Dialect"));
7574

cucumber-java/src/codegen/java/GenerateI18n.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import freemarker.template.TemplateException;
44
import freemarker.template.TemplateExceptionHandler;
55
import io.cucumber.gherkin.GherkinDialect;
6-
import io.cucumber.gherkin.GherkinDialectProvider;
6+
import io.cucumber.gherkin.GherkinDialects;
77

88
import java.io.IOException;
99
import java.nio.file.Files;
@@ -15,14 +15,13 @@
1515
import java.util.List;
1616
import java.util.Locale;
1717
import java.util.Map;
18-
import java.util.Optional;
1918

2019
import static java.nio.file.Files.newBufferedWriter;
2120
import static java.nio.file.StandardOpenOption.CREATE;
2221
import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING;
2322

2423
/* This class generates the cucumber-java Interfaces and package-info
25-
* based on the languages and keywords from the GherkinDialectProvider
24+
* based on the languages and keywords from the GherkinDialects
2625
* using the FreeMarker template engine and provided templates.
2726
*/
2827
public class GenerateI18n {
@@ -38,12 +37,8 @@ public static void main(String[] args) throws Exception {
3837
DialectWriter dialectWriter = new DialectWriter(args[0], args[1]);
3938

4039
// Generate annotation files for each dialect
41-
GherkinDialectProvider dialectProvider = new GherkinDialectProvider();
42-
dialectProvider.getLanguages()
40+
GherkinDialects.getDialects()
4341
.stream()
44-
.map(dialectProvider::getDialect)
45-
.filter(Optional::isPresent)
46-
.map(Optional::get)
4742
.filter(dialect -> !unsupported.contains(dialect.getLanguage()))
4843
.forEach(dialectWriter::writeDialect);
4944
}

cucumber-java8/src/codegen/java/GenerateI18n.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import freemarker.template.TemplateException;
44
import freemarker.template.TemplateExceptionHandler;
55
import io.cucumber.gherkin.GherkinDialect;
6-
import io.cucumber.gherkin.GherkinDialectProvider;
6+
import io.cucumber.gherkin.GherkinDialects;
77

88
import java.io.IOException;
99
import java.nio.file.Files;
@@ -23,7 +23,7 @@
2323
import static java.util.stream.Collectors.toList;
2424

2525
/* This class generates the cucumber-java Interfaces and package-info
26-
* based on the languages and keywords from the GherkinDialectProvider
26+
* based on the languages and keywords from the GherkinDialects
2727
* using the FreeMarker template engine and provided templates.
2828
*/
2929
public class GenerateI18n {
@@ -39,12 +39,8 @@ public static void main(String[] args) throws Exception {
3939
DialectWriter dialectWriter = new DialectWriter(args[0], args[1]);
4040

4141
// Generate annotation files for each dialect
42-
GherkinDialectProvider dialectProvider = new GherkinDialectProvider();
43-
dialectProvider.getLanguages()
42+
GherkinDialects.getDialects()
4443
.stream()
45-
.map(dialectProvider::getDialect)
46-
.filter(Optional::isPresent)
47-
.map(Optional::get)
4844
.filter(dialect -> !unsupported.contains(dialect.getLanguage()))
4945
.forEach(dialectWriter::writeDialect);
5046
}

0 commit comments

Comments
 (0)