tomokinakamaru/silverchain

View on GitHub
src/test/java/validator/Utility.java

Summary

Maintainability
A
55 mins
Test Coverage
package validator;

import java.io.IOException;
import java.io.InputStream;
import org.antlr.v4.runtime.RecognitionException;
import silverchain.Validator;
import silverchain.diagram.Diagram;
import silverchain.diagram.Diagrams;
import silverchain.parser.AgParser;
import silverchain.parser.Grammar;
import silverchain.parser.Input;
import silverchain.parser.adapter.Parser;

final class Utility {

  static void validateJava(InputStream stream) {
    new Validator(compile(stream)).validate();
  }

  private static Diagrams compile(InputStream stream) {
    Diagrams diagrams = new Diagrams();
    Input input = parse(stream);
    for (Grammar grammar : input.grammars()) {
      Diagram diagram = grammar.diagram(input.importMap());
      diagram.compile();
      diagrams.add(diagram);
    }
    return diagrams;
  }

  private static Input parse(InputStream stream) {
    try {
      return (Input) new Parser(stream).parse(AgParser::input);
    } catch (RecognitionException | IOException e) {
      throw new RuntimeException(e);
    }
  }
}