Language.java 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package de.jplag.rlang;
  2. import java.io.File;
  3. import org.kohsuke.MetaInfServices;
  4. import de.jplag.ErrorConsumer;
  5. import de.jplag.TokenList;
  6. /**
  7. * This represents the R language as a language supported by JPlag.
  8. */
  9. @MetaInfServices(de.jplag.Language.class)
  10. public class Language implements de.jplag.Language {
  11. private static final String NAME = "R Parser";
  12. public static final String SHORT_NAME = "rlang";
  13. private static final int DEFAULT_MIN_TOKEN_MATCH = 8;
  14. private static final String[] FILE_EXTENSION = {".R", ".r"};
  15. private final RParserAdapter parserAdapter;
  16. /**
  17. * Prototype Constructor for {@link MetaInfServices}.
  18. */
  19. public Language() {
  20. this.parserAdapter = null;
  21. }
  22. Language(ErrorConsumer consumer) {
  23. this.parserAdapter = new RParserAdapter(consumer);
  24. }
  25. @Override
  26. public de.jplag.Language createInitializedLanguage(ErrorConsumer errorConsumer) {
  27. return new Language(errorConsumer);
  28. }
  29. @Override
  30. public String[] suffixes() {
  31. return FILE_EXTENSION;
  32. }
  33. @Override
  34. public String getName() {
  35. return NAME;
  36. }
  37. @Override
  38. public String getShortName() {
  39. return SHORT_NAME;
  40. }
  41. @Override
  42. public int minimumTokenMatch() {
  43. return DEFAULT_MIN_TOKEN_MATCH;
  44. }
  45. @Override
  46. public TokenList parse(File directory, String[] files) {
  47. return parserAdapter.parse(directory, files);
  48. }
  49. @Override
  50. public boolean hasErrors() {
  51. return parserAdapter.hasErrors();
  52. }
  53. @Override
  54. public boolean supportsColumns() {
  55. return true;
  56. }
  57. @Override
  58. public boolean isPreformatted() {
  59. return true;
  60. }
  61. @Override
  62. public boolean usesIndex() {
  63. return false;
  64. }
  65. @Override
  66. public int numberOfTokens() {
  67. return RTokenConstants.NUM_DIFF_TOKENS;
  68. }
  69. }