mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Add language groups
This commit is contained in:
@@ -197,6 +197,21 @@ module Linguist
|
||||
@popular = attributes.key?(:popular) ? attributes[:popular] : false
|
||||
@common = attributes.key?(:common) ? attributes[:common] : false
|
||||
@searchable = attributes.key?(:searchable) ? attributes[:searchable] : true
|
||||
|
||||
# If group name is set, save the name so we can lazy load it later
|
||||
if attributes[:group_name]
|
||||
if common?
|
||||
warn "#{name} is a major langauage, it should not be grouped with #{attributes[:group_name]}"
|
||||
end
|
||||
|
||||
@group = nil
|
||||
@group_name = attributes[:group_name]
|
||||
|
||||
# Otherwise we can set it to self now
|
||||
else
|
||||
@group = self
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# Public: Get proper name
|
||||
@@ -261,6 +276,19 @@ module Linguist
|
||||
name.downcase.gsub(/\s/, '-')
|
||||
end
|
||||
|
||||
# Public: Get Language group
|
||||
#
|
||||
# Minor languages maybe grouped with major languages for
|
||||
# accounting purposes. For an example, JSP files are grouped as
|
||||
# Java.
|
||||
#
|
||||
# For major languages, group should always return self.
|
||||
#
|
||||
# Returns a Language
|
||||
def group
|
||||
@group ||= Language.find_by_name(@group_name)
|
||||
end
|
||||
|
||||
# Public: Is it popular?
|
||||
#
|
||||
# Returns true or false
|
||||
@@ -337,6 +365,7 @@ module Linguist
|
||||
:name => name,
|
||||
:aliases => options['aliases'],
|
||||
:lexer => options['lexer'],
|
||||
:group_name => options['group'],
|
||||
:searchable => options.key?('searchable') ? options['searchable'] : true,
|
||||
:search_term => options['search_term'],
|
||||
:extensions => options['extensions'],
|
||||
|
||||
@@ -65,6 +65,7 @@ Assembly:
|
||||
- .asm
|
||||
|
||||
Batchfile:
|
||||
group: Shell
|
||||
search_term: bat
|
||||
aliases:
|
||||
- bat
|
||||
@@ -88,6 +89,7 @@ Brainfuck:
|
||||
extensions:
|
||||
- .b
|
||||
- .bf
|
||||
|
||||
C:
|
||||
extensions:
|
||||
- .c
|
||||
@@ -169,6 +171,7 @@ Cucumber:
|
||||
- .feature
|
||||
|
||||
Cython:
|
||||
group: Python
|
||||
extensions:
|
||||
- .pyx
|
||||
- .pxd
|
||||
@@ -244,6 +247,7 @@ Factor:
|
||||
- .factor
|
||||
|
||||
GAS:
|
||||
group: Assembly
|
||||
extensions:
|
||||
- .s
|
||||
- .S
|
||||
@@ -253,11 +257,13 @@ Genshi:
|
||||
- .kid
|
||||
|
||||
Gentoo Ebuild:
|
||||
group: Shell
|
||||
lexer: Bash
|
||||
extensions:
|
||||
- .ebuild
|
||||
|
||||
Gentoo Eclass:
|
||||
group: Shell
|
||||
lexer: Bash
|
||||
extensions:
|
||||
- .eclass
|
||||
@@ -299,17 +305,20 @@ HTML:
|
||||
- .xslt
|
||||
|
||||
HTML+Django:
|
||||
group: HTML
|
||||
lexer: HTML+Django/Jinja
|
||||
extensions:
|
||||
- .mustache
|
||||
|
||||
HTML+ERB:
|
||||
group: HTML
|
||||
lexer: RHTML
|
||||
extensions:
|
||||
- .erb
|
||||
- .html.erb
|
||||
|
||||
HTML+PHP:
|
||||
group: HTML
|
||||
extensions:
|
||||
- .phtml
|
||||
|
||||
@@ -350,6 +359,7 @@ Io:
|
||||
- .io
|
||||
|
||||
JSON:
|
||||
group: JavaScript
|
||||
lexer: JavaScript
|
||||
search_term: javascript
|
||||
extensions:
|
||||
@@ -361,6 +371,7 @@ Java:
|
||||
- .pde
|
||||
|
||||
Java Server Pages:
|
||||
group: Java
|
||||
lexer: Java Server Page
|
||||
search_term: jsp
|
||||
aliases:
|
||||
@@ -387,6 +398,7 @@ LLVM:
|
||||
- .ll
|
||||
|
||||
Literate Haskell:
|
||||
group: Haskell
|
||||
search_term: lhs
|
||||
aliases:
|
||||
- lhs
|
||||
@@ -460,6 +472,7 @@ Nu:
|
||||
- Nukefile
|
||||
|
||||
NumPy:
|
||||
group: Python
|
||||
extensions:
|
||||
- .numpy
|
||||
- .numsc
|
||||
@@ -488,6 +501,7 @@ Objective-J:
|
||||
- .sj
|
||||
|
||||
OpenCL:
|
||||
group: C
|
||||
lexer: C
|
||||
extensions:
|
||||
- .cl
|
||||
@@ -532,6 +546,7 @@ Python:
|
||||
- .pyw
|
||||
|
||||
Python traceback:
|
||||
group: Python
|
||||
lexer: Python Traceback
|
||||
search_term: pytb
|
||||
aliases:
|
||||
@@ -546,6 +561,7 @@ R:
|
||||
- .R
|
||||
|
||||
RHTML:
|
||||
group: HTML
|
||||
extensions:
|
||||
- .rhtml
|
||||
|
||||
|
||||
@@ -196,6 +196,28 @@ class TestLanguage < Test::Unit::TestCase
|
||||
assert_equal Language['reStructuredText'], Language.find_by_alias('rst')
|
||||
end
|
||||
|
||||
def test_common_groups
|
||||
Language.all.each do |language|
|
||||
if language.common?
|
||||
assert_equal language, language.group
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_groups
|
||||
assert_equal Language['Assembly'], Language['GAS'].group
|
||||
assert_equal Language['C'], Language['OpenCL'].group
|
||||
assert_equal Language['Haskell'], Language['Literate Haskell'].group
|
||||
assert_equal Language['Java'], Language['Java Server Pages'].group
|
||||
assert_equal Language['JavaScript'], Language['JSON'].group
|
||||
assert_equal Language['Python'], Language['Cython'].group
|
||||
assert_equal Language['Python'], Language['NumPy'].group
|
||||
assert_equal Language['Python'], Language['Python traceback'].group
|
||||
assert_equal Language['Shell'], Language['Batchfile'].group
|
||||
assert_equal Language['Shell'], Language['Gentoo Ebuild'].group
|
||||
assert_equal Language['Shell'], Language['Gentoo Eclass'].group
|
||||
end
|
||||
|
||||
# Used for code search indexing. Changing any of these values may
|
||||
# require reindexing repositories.
|
||||
def test_search_term
|
||||
|
||||
Reference in New Issue
Block a user