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:
it includes "internal" scanners which aren't representing actual languages (debug, raydebug, scanner and potentially the default alias);
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:
include_aliases (default to true);
include_internals (default to false).
These defaults are taken from Redmine's use-case and, as such, may not suit everyone's needs.
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:debug
,raydebug
,scanner
and potentially thedefault
alias);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:include_aliases
(default totrue
);include_internals
(default tofalse
).These defaults are taken from Redmine's use-case and, as such, may not suit everyone's needs.