Search in sources :

Example 1 with GherkinDialectProvider

use of io.cucumber.gherkin.GherkinDialectProvider in project cucumber-jvm by cucumber.

the class CommandlineOptionsParser method printI18n.

private byte printI18n(String language) {
    IGherkinDialectProvider dialectProvider = new GherkinDialectProvider();
    List<String> languages = dialectProvider.getLanguages();
    if (language.equalsIgnoreCase("help")) {
        if (language.equalsIgnoreCase("help")) {
            List<GherkinDialect> dialects = new ArrayList<>();
            for (String code : languages) {
                GherkinDialect dialect = dialectProvider.getDialect(code, null);
                dialects.add(dialect);
            }
            int widestLanguage = findWidest(dialects, GherkinDialect::getLanguage);
            int widestName = findWidest(dialects, GherkinDialect::getName);
            int widestNativeName = findWidest(dialects, GherkinDialect::getNativeName);
            for (GherkinDialect dialect : dialects) {
                printDialect(dialect, widestLanguage, widestName, widestNativeName);
            }
            return 0x0;
        }
    }
    if (languages.contains(language)) {
        return printKeywordsFor(dialectProvider.getDialect(language, null));
    }
    out.println("Unrecognised ISO language code");
    return 0x1;
}
Also used : ArrayList(java.util.ArrayList) IGherkinDialectProvider(io.cucumber.gherkin.IGherkinDialectProvider) GherkinDialectProvider(io.cucumber.gherkin.GherkinDialectProvider) IGherkinDialectProvider(io.cucumber.gherkin.IGherkinDialectProvider) GherkinDialect(io.cucumber.gherkin.GherkinDialect)

Example 2 with GherkinDialectProvider

use of io.cucumber.gherkin.GherkinDialectProvider in project cucumber-jvm by cucumber.

the class GherkinMessagesFeatureParser method parse.

@Override
public Optional<Feature> parse(URI path, String source, Supplier<UUID> idGenerator) {
    List<Envelope> sources = singletonList(makeSourceEnvelope(source, path.toString()));
    List<Envelope> envelopes = Gherkin.fromSources(sources, true, true, true, () -> idGenerator.get().toString()).collect(toList());
    GherkinDocument gherkinDocument = envelopes.stream().map(Envelope::getGherkinDocument).filter(Objects::nonNull).findFirst().orElse(null);
    if (gherkinDocument == null || gherkinDocument.getFeature() == null) {
        List<String> errors = envelopes.stream().map(Envelope::getParseError).filter(Objects::nonNull).map(ParseError::getMessage).collect(toList());
        if (!errors.isEmpty()) {
            throw new FeatureParserException("Failed to parse resource at: " + path + "\n" + String.join("\n", errors));
        }
        return Optional.empty();
    }
    CucumberQuery cucumberQuery = new CucumberQuery();
    cucumberQuery.update(gherkinDocument);
    GherkinDialectProvider dialectProvider = new GherkinDialectProvider();
    io.cucumber.messages.types.Feature feature = gherkinDocument.getFeature();
    String language = feature.getLanguage();
    GherkinDialect dialect = dialectProvider.getDialect(language, null);
    List<io.cucumber.messages.types.Pickle> pickleMessages = envelopes.stream().map(Envelope::getPickle).filter(Objects::nonNull).collect(toList());
    List<Pickle> pickles = pickleMessages.stream().map(pickle -> new GherkinMessagesPickle(pickle, path, dialect, cucumberQuery)).collect(toList());
    GherkinMessagesFeature messagesFeature = new GherkinMessagesFeature(feature, path, source, pickles, envelopes);
    return Optional.of(messagesFeature);
}
Also used : Pickle(io.cucumber.core.gherkin.Pickle) FeatureParser(io.cucumber.core.gherkin.FeatureParser) GherkinDialect(io.cucumber.gherkin.GherkinDialect) Envelope(io.cucumber.messages.types.Envelope) Gherkin(io.cucumber.gherkin.Gherkin) UUID(java.util.UUID) Gherkin.makeSourceEnvelope(io.cucumber.gherkin.Gherkin.makeSourceEnvelope) Supplier(java.util.function.Supplier) Collections.singletonList(java.util.Collections.singletonList) Objects(java.util.Objects) GherkinDocument(io.cucumber.messages.types.GherkinDocument) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) Feature(io.cucumber.core.gherkin.Feature) FeatureParserException(io.cucumber.core.gherkin.FeatureParserException) Optional(java.util.Optional) ParseError(io.cucumber.messages.types.ParseError) URI(java.net.URI) GherkinDialectProvider(io.cucumber.gherkin.GherkinDialectProvider) Pickle(io.cucumber.core.gherkin.Pickle) FeatureParserException(io.cucumber.core.gherkin.FeatureParserException) GherkinDialectProvider(io.cucumber.gherkin.GherkinDialectProvider) GherkinDialect(io.cucumber.gherkin.GherkinDialect) GherkinDocument(io.cucumber.messages.types.GherkinDocument) Envelope(io.cucumber.messages.types.Envelope) Gherkin.makeSourceEnvelope(io.cucumber.gherkin.Gherkin.makeSourceEnvelope) Objects(java.util.Objects)

Aggregations

GherkinDialect (io.cucumber.gherkin.GherkinDialect)2 GherkinDialectProvider (io.cucumber.gherkin.GherkinDialectProvider)2 Feature (io.cucumber.core.gherkin.Feature)1 FeatureParser (io.cucumber.core.gherkin.FeatureParser)1 FeatureParserException (io.cucumber.core.gherkin.FeatureParserException)1 Pickle (io.cucumber.core.gherkin.Pickle)1 Gherkin (io.cucumber.gherkin.Gherkin)1 Gherkin.makeSourceEnvelope (io.cucumber.gherkin.Gherkin.makeSourceEnvelope)1 IGherkinDialectProvider (io.cucumber.gherkin.IGherkinDialectProvider)1 Envelope (io.cucumber.messages.types.Envelope)1 GherkinDocument (io.cucumber.messages.types.GherkinDocument)1 ParseError (io.cucumber.messages.types.ParseError)1 URI (java.net.URI)1 ArrayList (java.util.ArrayList)1 Collections.singletonList (java.util.Collections.singletonList)1 List (java.util.List)1 Objects (java.util.Objects)1 Optional (java.util.Optional)1 UUID (java.util.UUID)1 Supplier (java.util.function.Supplier)1