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
|
@popular = attributes.key?(:popular) ? attributes[:popular] : false
|
||||||
@common = attributes.key?(:common) ? attributes[:common] : false
|
@common = attributes.key?(:common) ? attributes[:common] : false
|
||||||
@searchable = attributes.key?(:searchable) ? attributes[:searchable] : true
|
@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
|
end
|
||||||
|
|
||||||
# Public: Get proper name
|
# Public: Get proper name
|
||||||
@@ -261,6 +276,19 @@ module Linguist
|
|||||||
name.downcase.gsub(/\s/, '-')
|
name.downcase.gsub(/\s/, '-')
|
||||||
end
|
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?
|
# Public: Is it popular?
|
||||||
#
|
#
|
||||||
# Returns true or false
|
# Returns true or false
|
||||||
@@ -337,6 +365,7 @@ module Linguist
|
|||||||
:name => name,
|
:name => name,
|
||||||
:aliases => options['aliases'],
|
:aliases => options['aliases'],
|
||||||
:lexer => options['lexer'],
|
:lexer => options['lexer'],
|
||||||
|
:group_name => options['group'],
|
||||||
:searchable => options.key?('searchable') ? options['searchable'] : true,
|
:searchable => options.key?('searchable') ? options['searchable'] : true,
|
||||||
:search_term => options['search_term'],
|
:search_term => options['search_term'],
|
||||||
:extensions => options['extensions'],
|
:extensions => options['extensions'],
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ Assembly:
|
|||||||
- .asm
|
- .asm
|
||||||
|
|
||||||
Batchfile:
|
Batchfile:
|
||||||
|
group: Shell
|
||||||
search_term: bat
|
search_term: bat
|
||||||
aliases:
|
aliases:
|
||||||
- bat
|
- bat
|
||||||
@@ -88,6 +89,7 @@ Brainfuck:
|
|||||||
extensions:
|
extensions:
|
||||||
- .b
|
- .b
|
||||||
- .bf
|
- .bf
|
||||||
|
|
||||||
C:
|
C:
|
||||||
extensions:
|
extensions:
|
||||||
- .c
|
- .c
|
||||||
@@ -169,6 +171,7 @@ Cucumber:
|
|||||||
- .feature
|
- .feature
|
||||||
|
|
||||||
Cython:
|
Cython:
|
||||||
|
group: Python
|
||||||
extensions:
|
extensions:
|
||||||
- .pyx
|
- .pyx
|
||||||
- .pxd
|
- .pxd
|
||||||
@@ -244,6 +247,7 @@ Factor:
|
|||||||
- .factor
|
- .factor
|
||||||
|
|
||||||
GAS:
|
GAS:
|
||||||
|
group: Assembly
|
||||||
extensions:
|
extensions:
|
||||||
- .s
|
- .s
|
||||||
- .S
|
- .S
|
||||||
@@ -253,11 +257,13 @@ Genshi:
|
|||||||
- .kid
|
- .kid
|
||||||
|
|
||||||
Gentoo Ebuild:
|
Gentoo Ebuild:
|
||||||
|
group: Shell
|
||||||
lexer: Bash
|
lexer: Bash
|
||||||
extensions:
|
extensions:
|
||||||
- .ebuild
|
- .ebuild
|
||||||
|
|
||||||
Gentoo Eclass:
|
Gentoo Eclass:
|
||||||
|
group: Shell
|
||||||
lexer: Bash
|
lexer: Bash
|
||||||
extensions:
|
extensions:
|
||||||
- .eclass
|
- .eclass
|
||||||
@@ -299,17 +305,20 @@ HTML:
|
|||||||
- .xslt
|
- .xslt
|
||||||
|
|
||||||
HTML+Django:
|
HTML+Django:
|
||||||
|
group: HTML
|
||||||
lexer: HTML+Django/Jinja
|
lexer: HTML+Django/Jinja
|
||||||
extensions:
|
extensions:
|
||||||
- .mustache
|
- .mustache
|
||||||
|
|
||||||
HTML+ERB:
|
HTML+ERB:
|
||||||
|
group: HTML
|
||||||
lexer: RHTML
|
lexer: RHTML
|
||||||
extensions:
|
extensions:
|
||||||
- .erb
|
- .erb
|
||||||
- .html.erb
|
- .html.erb
|
||||||
|
|
||||||
HTML+PHP:
|
HTML+PHP:
|
||||||
|
group: HTML
|
||||||
extensions:
|
extensions:
|
||||||
- .phtml
|
- .phtml
|
||||||
|
|
||||||
@@ -350,6 +359,7 @@ Io:
|
|||||||
- .io
|
- .io
|
||||||
|
|
||||||
JSON:
|
JSON:
|
||||||
|
group: JavaScript
|
||||||
lexer: JavaScript
|
lexer: JavaScript
|
||||||
search_term: javascript
|
search_term: javascript
|
||||||
extensions:
|
extensions:
|
||||||
@@ -361,6 +371,7 @@ Java:
|
|||||||
- .pde
|
- .pde
|
||||||
|
|
||||||
Java Server Pages:
|
Java Server Pages:
|
||||||
|
group: Java
|
||||||
lexer: Java Server Page
|
lexer: Java Server Page
|
||||||
search_term: jsp
|
search_term: jsp
|
||||||
aliases:
|
aliases:
|
||||||
@@ -387,6 +398,7 @@ LLVM:
|
|||||||
- .ll
|
- .ll
|
||||||
|
|
||||||
Literate Haskell:
|
Literate Haskell:
|
||||||
|
group: Haskell
|
||||||
search_term: lhs
|
search_term: lhs
|
||||||
aliases:
|
aliases:
|
||||||
- lhs
|
- lhs
|
||||||
@@ -460,6 +472,7 @@ Nu:
|
|||||||
- Nukefile
|
- Nukefile
|
||||||
|
|
||||||
NumPy:
|
NumPy:
|
||||||
|
group: Python
|
||||||
extensions:
|
extensions:
|
||||||
- .numpy
|
- .numpy
|
||||||
- .numsc
|
- .numsc
|
||||||
@@ -488,6 +501,7 @@ Objective-J:
|
|||||||
- .sj
|
- .sj
|
||||||
|
|
||||||
OpenCL:
|
OpenCL:
|
||||||
|
group: C
|
||||||
lexer: C
|
lexer: C
|
||||||
extensions:
|
extensions:
|
||||||
- .cl
|
- .cl
|
||||||
@@ -532,6 +546,7 @@ Python:
|
|||||||
- .pyw
|
- .pyw
|
||||||
|
|
||||||
Python traceback:
|
Python traceback:
|
||||||
|
group: Python
|
||||||
lexer: Python Traceback
|
lexer: Python Traceback
|
||||||
search_term: pytb
|
search_term: pytb
|
||||||
aliases:
|
aliases:
|
||||||
@@ -546,6 +561,7 @@ R:
|
|||||||
- .R
|
- .R
|
||||||
|
|
||||||
RHTML:
|
RHTML:
|
||||||
|
group: HTML
|
||||||
extensions:
|
extensions:
|
||||||
- .rhtml
|
- .rhtml
|
||||||
|
|
||||||
|
|||||||
@@ -196,6 +196,28 @@ class TestLanguage < Test::Unit::TestCase
|
|||||||
assert_equal Language['reStructuredText'], Language.find_by_alias('rst')
|
assert_equal Language['reStructuredText'], Language.find_by_alias('rst')
|
||||||
end
|
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
|
# Used for code search indexing. Changing any of these values may
|
||||||
# require reindexing repositories.
|
# require reindexing repositories.
|
||||||
def test_search_term
|
def test_search_term
|
||||||
|
|||||||
Reference in New Issue
Block a user