Language.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package de.jplag.R;
  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. public static final String NAME = "R Parser";
  12. public static final String SHORT_NAME = "R";
  13. public static final int DEFAULT_MIN_TOKEN_MATCH = 8;
  14. private final RParserAdapter parserAdapter;
  15. /**
  16. * Prototype Constructor for {@link MetaInfServices}.
  17. */
  18. public Language() {
  19. this.parserAdapter = null;
  20. }
  21. Language(ErrorConsumer consumer) {
  22. this.parserAdapter = new RParserAdapter(consumer);
  23. }
  24. @Override
  25. public de.jplag.Language createInitializedLanguage(ErrorConsumer errorConsumer) {
  26. return new Language(errorConsumer);
  27. }
  28. @Override
  29. public String[] suffixes() {
  30. return new String[] {".R", ".r"};
  31. }
  32. @Override
  33. public String getName() {
  34. return NAME;
  35. }
  36. @Override
  37. public String getShortName() {
  38. return SHORT_NAME;
  39. }
  40. @Override
  41. public int minimumTokenMatch() {
  42. return DEFAULT_MIN_TOKEN_MATCH;
  43. }
  44. @Override
  45. public TokenList parse(File directory, String[] files) {
  46. return parserAdapter.parse(directory, files);
  47. }
  48. @Override
  49. public boolean hasErrors() {
  50. return parserAdapter.hasErrors();
  51. }
  52. @Override
  53. public boolean supportsColumns() {
  54. return true;
  55. }
  56. @Override
  57. public boolean isPreformatted() {
  58. return true;
  59. }
  60. @Override
  61. public boolean usesIndex() {
  62. return false;
  63. }
  64. @Override
  65. public int numberOfTokens() {
  66. return RTokenConstants.NUM_DIFF_TOKENS;
  67. }
  68. }