Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add an explicit method to retrieve supported languages. #210

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

MischaTheEvil
Copy link

The current way of retrieving a list of supported languages from CodeRay (using CodeRay::Scanners.list, see eg. the Stack Overflow question 'Getting the list of available languages') has two drawbacks/limitations:

  1. it includes "internal" scanners which aren't representing actual languages (debug, raydebug, scanner and potentially the default alias);
  2. it does not include language aliases.

I can think of multiple use-cases where one wants to retrieve a list of supported languages, excluding the "internal" scanners and/or including the aliases. One is for example reported as #194.

Recently, Redmine introduced a change where such a list is needed too (revisions r16501 and r16502). While it is pretty easy to "generate" it downstream (redmine.org issues #25634 and #26055), it requires CodeRay integrators to reinvent the wheel over-and-over again. As such I think it would be handy if this functionality is provided by the CodeRay API itself.

I extracted a new, generalized class method (CodeRay.supported_languages) from the Redmine core, ported it to CodeRay and added some basic test coverage. The method has two optional arguments:

  1. include_aliases (default to true);
  2. include_internals (default to false).

These defaults are taken from Redmine's use-case and, as such, may not suit everyone's needs.

@MischaTheEvil
Copy link
Author

I was caught by the fact that CodeRay still supports Ruby 1.8. I have fixed the incompatibilities in the tests.

Ruby 1.8 (using Test::Unit) doesn't provide:
* the assert_includes method;
* the refute_includes method;
* the refute method.
@MischaTheEvil MischaTheEvil force-pushed the add_supported_languages_method branch from 830c176 to b75ca18 Compare June 16, 2017 02:54
@korny korny self-assigned this Jul 7, 2017
@korny korny added the Scanners label Jul 7, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants