Require explicit primary_extension

This commit is contained in:
Joshua Peek
2012-07-20 16:54:49 -05:00
parent a775b00d9d
commit 144655f2c5
3 changed files with 109 additions and 11 deletions

View File

@@ -239,7 +239,9 @@ module Linguist
@overrides = attributes[:overrides] || [] @overrides = attributes[:overrides] || []
@filenames = attributes[:filenames] || [] @filenames = attributes[:filenames] || []
@primary_extension = attributes[:primary_extension] || default_primary_extension || extensions.first unless @primary_extension = attributes[:primary_extension]
raise ArgumentError, "#{@name} is missing primary extension"
end
# Prepend primary extension unless its already included # Prepend primary extension unless its already included
if primary_extension && !extensions.include?(primary_extension) if primary_extension && !extensions.include?(primary_extension)
@@ -376,13 +378,6 @@ module Linguist
name.downcase.gsub(/\s/, '-') name.downcase.gsub(/\s/, '-')
end end
# Internal: Get default primary extension.
#
# Returns the extension String.
def default_primary_extension
extensions.first
end
# Public: Get Language group # Public: Get Language group
# #
# Returns a Language # Returns a Language

View File

@@ -12,8 +12,9 @@
# ace_mode - A String name of Ace Mode (if available) # ace_mode - A String name of Ace Mode (if available)
# extension - An Array of associated extensions # extension - An Array of associated extensions
# primary_extension - A String for the main extension associated with # primary_extension - A String for the main extension associated with
# the langauge. (defaults to extensions.first). # the language. Must be unique. Used when a Language is picked
# Must be unique. # from a dropdown and we need to automatically choose an
# extension.
# overrides - An Array of extensions that takes precedence over conflicts # overrides - An Array of extensions that takes precedence over conflicts
# searchable - Boolean flag to enable searching (defaults to true) # searchable - Boolean flag to enable searching (defaults to true)
# search_term - Deprecated: Some languages maybe indexed under a # search_term - Deprecated: Some languages maybe indexed under a
@@ -50,12 +51,14 @@ ActionScript:
search_term: as3 search_term: as3
aliases: aliases:
- as3 - as3
primary_extension: .as
extensions: extensions:
- .as - .as
Ada: Ada:
type: programming type: programming
color: "#02f88c" color: "#02f88c"
primary_extension: .adb
extensions: extensions:
- .adb - .adb
- .ads - .ads
@@ -81,6 +84,7 @@ Arc:
type: programming type: programming
color: "#ca2afe" color: "#ca2afe"
lexer: Text only lexer: Text only
primary_extension: .arc
extensions: extensions:
- .arc - .arc
@@ -88,6 +92,7 @@ Arduino:
type: programming type: programming
color: "#bd79d1" color: "#bd79d1"
lexer: C++ lexer: C++
primary_extension: .ino
extensions: extensions:
- .ino - .ino
@@ -98,11 +103,13 @@ Assembly:
search_term: nasm search_term: nasm
aliases: aliases:
- nasm - nasm
primary_extension: .asm
extensions: extensions:
- .asm - .asm
Augeas: Augeas:
type: programming type: programming
primary_extension: .aug
extensions: extensions:
- .aug - .aug
@@ -112,6 +119,7 @@ AutoHotkey:
color: "#6594b9" color: "#6594b9"
aliases: aliases:
- ahk - ahk
primary_extension: .ahk
extensions: extensions:
- .ahk - .ahk
@@ -127,26 +135,31 @@ Batchfile:
- .cmd - .cmd
Befunge: Befunge:
primary_extension: .befunge
extensions: extensions:
- .befunge - .befunge
BlitzMax: BlitzMax:
primary_extension: .bmx
extensions: extensions:
- .bmx - .bmx
Boo: Boo:
type: programming type: programming
color: "#d4bec1" color: "#d4bec1"
primary_extension: .boo
extensions: extensions:
- .boo - .boo
Brainfuck: Brainfuck:
primary_extension: .b
extensions: extensions:
- .b - .b
- .bf - .bf
Bro: Bro:
type: programming type: programming
primary_extension: .bro
extensions: extensions:
- .bro - .bro
@@ -168,6 +181,7 @@ C#:
color: "#5a25a2" color: "#5a25a2"
aliases: aliases:
- csharp - csharp
primary_extension: .cs
extensions: extensions:
- .cs - .cs
@@ -195,6 +209,7 @@ C++:
C-ObjDump: C-ObjDump:
type: data type: data
lexer: c-objdump lexer: c-objdump
primary_extension: .c-objdump
extensions: extensions:
- .c-objdump - .c-objdump
@@ -204,10 +219,12 @@ C2hs Haskell:
group: Haskell group: Haskell
aliases: aliases:
- c2hs - c2hs
primary_extension: .chs
extensions: extensions:
- .chs - .chs
CMake: CMake:
primary_extension: .cmake
extensions: extensions:
- .cmake - .cmake
- .cmake.in - .cmake.in
@@ -216,6 +233,7 @@ CMake:
CSS: CSS:
ace_mode: css ace_mode: css
primary_extension: .css
extensions: extensions:
- .css - .css
@@ -223,11 +241,13 @@ Ceylon:
type: programming type: programming
lexer: Text only lexer: Text only
primary_extension: .ceylon primary_extension: .ceylon
primary_extension: .ceylon
extensions: extensions:
- .ceylon - .ceylon
ChucK: ChucK:
lexer: Java lexer: Java
primary_extension: .ck
extensions: extensions:
- .ck - .ck
@@ -285,6 +305,7 @@ Coq:
Cpp-ObjDump: Cpp-ObjDump:
type: data type: data
lexer: cpp-objdump lexer: cpp-objdump
primary_extension: .cppobjdump
extensions: extensions:
- .cppobjdump - .cppobjdump
- .c++objdump - .c++objdump
@@ -292,6 +313,7 @@ Cpp-ObjDump:
Cucumber: Cucumber:
lexer: Gherkin lexer: Gherkin
primary_extension: .feature
extensions: extensions:
- .feature - .feature
@@ -307,6 +329,7 @@ Cython:
D: D:
type: programming type: programming
color: "#fcd46d" color: "#fcd46d"
primary_extension: .d
extensions: extensions:
- .d - .d
- .di - .di
@@ -314,6 +337,7 @@ D:
D-ObjDump: D-ObjDump:
type: data type: data
lexer: d-objdump lexer: d-objdump
primary_extension: .d-objdump
extensions: extensions:
- .d-objdump - .d-objdump
@@ -321,12 +345,14 @@ Darcs Patch:
search_term: dpatch search_term: dpatch
aliases: aliases:
- dpatch - dpatch
primary_extension: .darcspatch
extensions: extensions:
- .darcspatch - .darcspatch
- .dpatch - .dpatch
Dart: Dart:
type: programming type: programming
primary_extension: .dart
extensions: extensions:
- .dart - .dart
@@ -350,6 +376,7 @@ DCPU-16 ASM:
- dasm16 - dasm16
Diff: Diff:
primary_extension: .diff
extensions: extensions:
- .diff - .diff
- .patch - .patch
@@ -357,6 +384,7 @@ Diff:
Dylan: Dylan:
type: programming type: programming
color: "#3ebc27" color: "#3ebc27"
primary_extension: .dylan
extensions: extensions:
- .dylan - .dylan
@@ -364,6 +392,7 @@ Ecere Projects:
type: data type: data
group: JavaScript group: JavaScript
lexer: JSON lexer: JSON
primary_extension: .epj
extensions: extensions:
- .epj - .epj
@@ -371,6 +400,7 @@ Eiffel:
type: programming type: programming
lexer: Text only lexer: Text only
color: "#946d57" color: "#946d57"
primary_extension: .e
extensions: extensions:
- .e - .e
@@ -407,6 +437,7 @@ F#:
lexer: FSharp lexer: FSharp
color: "#b845fc" color: "#b845fc"
search_term: ocaml search_term: ocaml
primary_extension: .fs
extensions: extensions:
- .fs - .fs
- .fsi - .fsi
@@ -438,6 +469,7 @@ FORTRAN:
Factor: Factor:
type: programming type: programming
color: "#636746" color: "#636746"
primary_extension: .factor
extensions: extensions:
- .factor - .factor
@@ -454,6 +486,7 @@ Fancy:
Fantom: Fantom:
type: programming type: programming
color: "#dbded5" color: "#dbded5"
primary_extension: .fan
extensions: extensions:
- .fan - .fan
@@ -466,18 +499,21 @@ GAS:
- .s - .s
Genshi: Genshi:
primary_extension: .kid
extensions: extensions:
- .kid - .kid
Gentoo Ebuild: Gentoo Ebuild:
group: Shell group: Shell
lexer: Bash lexer: Bash
primary_extension: .ebuild
extensions: extensions:
- .ebuild - .ebuild
Gentoo Eclass: Gentoo Eclass:
group: Shell group: Shell
lexer: Bash lexer: Bash
primary_extension: .eclass
extensions: extensions:
- .eclass - .eclass
@@ -486,6 +522,7 @@ Gettext Catalog:
searchable: false searchable: false
aliases: aliases:
- pot - pot
primary_extension: .po
extensions: extensions:
- .po - .po
- .pot - .pot
@@ -493,6 +530,7 @@ Gettext Catalog:
Go: Go:
type: programming type: programming
color: "#8d04eb" color: "#8d04eb"
primary_extension: .go
extensions: extensions:
- .go - .go
@@ -535,6 +573,7 @@ Groovy Server Pages:
- .gsp - .gsp
aliases: aliases:
- gsp - gsp
primary_extension: .gsp
extensions: extensions:
- .gsp - .gsp
@@ -551,6 +590,7 @@ HTML+Django:
type: markup type: markup
group: HTML group: HTML
lexer: HTML+Django/Jinja lexer: HTML+Django/Jinja
primary_extension: .mustache # TODO: This is incorrect
extensions: extensions:
- .mustache - .mustache
@@ -566,6 +606,7 @@ HTML+ERB:
HTML+PHP: HTML+PHP:
type: markup type: markup
group: HTML group: HTML
primary_extension: .phtml
extensions: extensions:
- .phtml - .phtml
@@ -574,6 +615,7 @@ HaXe:
lexer: haXe lexer: haXe
ace_mode: haxe ace_mode: haxe
color: "#346d51" color: "#346d51"
primary_extension: .hx
extensions: extensions:
- .hx - .hx
- .hxml - .hxml
@@ -582,12 +624,14 @@ HaXe:
Haml: Haml:
group: HTML group: HTML
type: markup type: markup
primary_extension: .haml
extensions: extensions:
- .haml - .haml
Haskell: Haskell:
type: programming type: programming
color: "#29b544" color: "#29b544"
primary_extension: .hs
extensions: extensions:
- .hs - .hs
- .hsc - .hsc
@@ -599,6 +643,7 @@ INI:
- .ini - .ini
- .prefs - .prefs
- .properties - .properties
primary_extension: .ini
filenames: filenames:
- .gitconfig - .gitconfig
@@ -607,18 +652,21 @@ IRC log:
search_term: irc search_term: irc
aliases: aliases:
- irc - irc
primary_extension: .irclog
extensions: extensions:
- .weechatlog - .weechatlog
Io: Io:
type: programming type: programming
color: "#a9188d" color: "#a9188d"
primary_extension: .io
extensions: extensions:
- .io - .io
Ioke: Ioke:
type: programming type: programming
color: "#078193" color: "#078193"
primary_extension: .ik
extensions: extensions:
- .ik - .ik
@@ -627,6 +675,7 @@ JSON:
group: JavaScript group: JavaScript
ace_mode: json ace_mode: json
searchable: false searchable: false
primary_extension: .json
extensions: extensions:
- .json - .json
@@ -634,6 +683,7 @@ Java:
type: programming type: programming
ace_mode: java ace_mode: java
color: "#b07219" color: "#b07219"
primary_extension: .java
extensions: extensions:
- .java - .java
- .pde - .pde
@@ -644,6 +694,7 @@ Java Server Pages:
search_term: jsp search_term: jsp
aliases: aliases:
- jsp - jsp
primary_extension: .jsp
extensions: extensions:
- .jsp - .jsp
@@ -672,17 +723,20 @@ JavaScript:
Julia: Julia:
type: programming type: programming
primary_extension: .jl
extensions: extensions:
- .jl - .jl
Kotlin: Kotlin:
type: programming type: programming
primary_extension: .kt
extensions: extensions:
- .kt - .kt
- .ktm - .ktm
- .kts - .kts
LLVM: LLVM:
primary_extension: .ll
extensions: extensions:
- .ll - .ll
@@ -699,11 +753,13 @@ Literate Haskell:
search_term: lhs search_term: lhs
aliases: aliases:
- lhs - lhs
primary_extension: .lhs
extensions: extensions:
- .lhs - .lhs
Logtalk: Logtalk:
type: programming type: programming
primary_extension: .lgt
extensions: extensions:
- .lgt - .lgt
@@ -711,6 +767,7 @@ Lua:
type: programming type: programming
ace_mode: lua ace_mode: lua
color: "#fa1fa1" color: "#fa1fa1"
primary_extension: .lua
extensions: extensions:
- .lua - .lua
- .nse - .nse
@@ -719,12 +776,14 @@ Makefile:
extensions: extensions:
- .mak - .mak
- .mk - .mk
primary_extension: .mak
filenames: filenames:
- makefile - makefile
- Makefile - Makefile
- GNUmakefile - GNUmakefile
Mako: Mako:
primary_extension: .mako
extensions: extensions:
- .mako - .mako
- .mao - .mao
@@ -753,6 +812,7 @@ Max/MSP:
type: programming type: programming
color: "#ce279c" color: "#ce279c"
lexer: Text only lexer: Text only
primary_extension: .mxt
extensions: extensions:
- .mxt - .mxt
@@ -765,6 +825,7 @@ Mirah:
lexer: Ruby lexer: Ruby
search_term: ruby search_term: ruby
color: "#c7a938" color: "#c7a938"
primary_extension: .druby
extensions: extensions:
- .duby - .duby
- .mir - .mir
@@ -772,22 +833,26 @@ Mirah:
Moocode: Moocode:
lexer: MOOCode lexer: MOOCode
primary_extension: .moo
extensions: extensions:
- .moo - .moo
Myghty: Myghty:
primary_extension: .myt
extensions: extensions:
- .myt - .myt
Nemerle: Nemerle:
type: programming type: programming
color: "#0d3c6e" color: "#0d3c6e"
primary_extension: .n
extensions: extensions:
- .n - .n
Nimrod: Nimrod:
type: programming type: programming
color: "#37775b" color: "#37775b"
primary_extension: .nim
extensions: extensions:
- .nim - .nim
- .nimrod - .nimrod
@@ -798,6 +863,7 @@ Nu:
color: "#c9df40" color: "#c9df40"
aliases: aliases:
- nush - nush
primary_extension: .nu
extensions: extensions:
- .nu - .nu
filenames: filenames:
@@ -825,6 +891,7 @@ OCaml:
ObjDump: ObjDump:
type: data type: data
lexer: objdump lexer: objdump
primary_extension: .objdump
extensions: extensions:
- .objdump - .objdump
@@ -842,12 +909,14 @@ Objective-C:
Objective-J: Objective-J:
type: programming type: programming
color: "#ff0c5a" color: "#ff0c5a"
primary_extension: .j
extensions: extensions:
- .j - .j
- .sj - .sj
Opa: Opa:
type: programming type: programming
primary_extension: .opa
extensions: extensions:
- .opa - .opa
@@ -855,6 +924,7 @@ OpenCL:
type: programming type: programming
group: C group: C
lexer: C lexer: C
primary_extension: .cl
extensions: extensions:
- .cl - .cl
@@ -873,6 +943,7 @@ PHP:
type: programming type: programming
ace_mode: php ace_mode: php
color: "#6e03c1" color: "#6e03c1"
primary_extension: .php
extensions: extensions:
- .aw - .aw
- .ctp - .ctp
@@ -897,6 +968,7 @@ Parrot Internal Representation:
lexer: Text only lexer: Text only
aliases: aliases:
- pir - pir
primary_extension: .pir
extensions: extensions:
- .pir - .pir
@@ -906,6 +978,7 @@ Parrot Assembly:
lexer: Text only lexer: Text only
aliases: aliases:
- pasm - pasm
primary_extension: .pasm
extensions: extensions:
- .pasm - .pasm
@@ -933,6 +1006,7 @@ PowerShell:
ace_mode: powershell ace_mode: powershell
aliases: aliases:
- posh - posh
primary_extension: .ps1
extensions: extensions:
- .ps1 - .ps1
- .psm1 - .psm1
@@ -949,6 +1023,7 @@ Prolog:
Puppet: Puppet:
type: programming type: programming
color: "#cc5555" color: "#cc5555"
primary_extension: .pp
extensions: extensions:
- .pp - .pp
filenames: filenames:
@@ -958,6 +1033,7 @@ Pure Data:
type: programming type: programming
color: "#91de79" color: "#91de79"
lexer: Text only lexer: Text only
primary_extension: .pd
extensions: extensions:
- .pd - .pd
@@ -979,6 +1055,7 @@ Python traceback:
group: Python group: Python
lexer: Python Traceback lexer: Python Traceback
searchable: false searchable: false
primary_extension: .pytb
extensions: extensions:
- .pytb - .pytb
@@ -996,6 +1073,7 @@ R:
RHTML: RHTML:
type: markup type: markup
group: HTML group: HTML
primary_extension: .rhtml
extensions: extensions:
- .rhtml - .rhtml
@@ -1014,6 +1092,7 @@ Raw token data:
search_term: raw search_term: raw
aliases: aliases:
- raw - raw
primary_extension: .raw
extensions: extensions:
- .raw - .raw
@@ -1029,6 +1108,7 @@ Rebol:
- .rebol - .rebol
Redcode: Redcode:
primary_extension: .cw
extensions: extensions:
- .cw - .cw
@@ -1070,6 +1150,7 @@ Rust:
type: programming type: programming
color: "#dea584" color: "#dea584"
lexer: Text only lexer: Text only
primary_extension: .rs
extensions: extensions:
- .rs - .rs
@@ -1077,6 +1158,7 @@ SCSS:
type: markup type: markup
group: CSS group: CSS
ace_mode: scss ace_mode: scss
primary_extension: .scss
extensions: extensions:
- .scss - .scss
@@ -1084,6 +1166,7 @@ SQL:
type: data type: data
ace_mode: sql ace_mode: sql
searchable: false searchable: false
primary_extension: .sql
extensions: extensions:
- .sql - .sql
@@ -1091,12 +1174,14 @@ Sage:
type: programming type: programming
lexer: Python lexer: Python
group: Python group: Python
primary_extension: .sage
extensions: extensions:
- .sage - .sage
Sass: Sass:
type: markup type: markup
group: CSS group: CSS
primary_extension: .sass
extensions: extensions:
- .sass - .sass
@@ -1130,6 +1215,7 @@ Self:
type: programming type: programming
color: "#0579aa" color: "#0579aa"
lexer: Text only lexer: Text only
primary_extension: .self
extensions: extensions:
- .self - .self
@@ -1161,10 +1247,12 @@ Shell:
Smalltalk: Smalltalk:
type: programming type: programming
color: "#596706" color: "#596706"
primary_extension: .st
extensions: extensions:
- .st - .st
Smarty: Smarty:
primary_extension: .tpl
extensions: extensions:
- .tpl - .tpl
@@ -1182,12 +1270,14 @@ SuperCollider:
type: programming type: programming
color: "#46390b" color: "#46390b"
lexer: Text only lexer: Text only
primary_extension: .sc
extensions: extensions:
- .sc - .sc
Tcl: Tcl:
type: programming type: programming
color: "#e4cc98" color: "#e4cc98"
primary_extension: .tcl
extensions: extensions:
- .tcl - .tcl
@@ -1215,6 +1305,7 @@ TeX:
Tea: Tea:
type: markup type: markup
primary_extension: .tea
extensions: extensions:
- .tea - .tea
@@ -1222,6 +1313,7 @@ Text:
type: data type: data
lexer: Text only lexer: Text only
ace_mode: text ace_mode: text
primary_extension: .txt
extensions: extensions:
- .txt - .txt
@@ -1229,6 +1321,7 @@ Textile:
type: markup type: markup
lexer: Text only lexer: Text only
ace_mode: textile ace_mode: textile
primary_extension: .textile
extensions: extensions:
- .textile - .textile
@@ -1247,6 +1340,7 @@ Twig:
type: markup type: markup
group: PHP group: PHP
lexer: HTML+Django/Jinja lexer: HTML+Django/Jinja
primary_extension: .twig
extensions: extensions:
- .twig - .twig
@@ -1254,6 +1348,7 @@ VHDL:
type: programming type: programming
lexer: vhdl lexer: vhdl
color: "#543978" color: "#543978"
primary_extension: .vhdl
extensions: extensions:
- .vhd - .vhd
- .vhdl - .vhdl
@@ -1261,6 +1356,7 @@ VHDL:
Vala: Vala:
type: programming type: programming
color: "#ee7d06" color: "#ee7d06"
primary_extension: .vala
extensions: extensions:
- .vala - .vala
- .vapi - .vapi
@@ -1271,6 +1367,7 @@ Verilog:
color: "#848bf3" color: "#848bf3"
overrides: overrides:
- .v - .v
primary_extension: .v
extensions: extensions:
- .v - .v
@@ -1280,6 +1377,7 @@ VimL:
search_term: vim search_term: vim
aliases: aliases:
- vim - vim
primary_extension: .vim
extensions: extensions:
- .vim - .vim
filenames: filenames:
@@ -1331,6 +1429,7 @@ XML:
XQuery: XQuery:
type: programming type: programming
color: "#2700e2" color: "#2700e2"
primary_extension: .xquery
extensions: extensions:
- .xq - .xq
- .xqm - .xqm
@@ -1339,12 +1438,14 @@ XQuery:
XS: XS:
lexer: C lexer: C
primary_extension: .xs
extensions: extensions:
- .xs - .xs
XSLT: XSLT:
type: markup type: markup
group: XML group: XML
primary_extension: .xslt
extensions: extensions:
- .xslt - .xslt
@@ -1367,6 +1468,7 @@ eC:
mupad: mupad:
lexer: MuPAD lexer: MuPAD
primary_extension: .mu
extensions: extensions:
- .mu - .mu
@@ -1374,6 +1476,7 @@ ooc:
type: programming type: programming
lexer: Ooc lexer: Ooc
color: "#b0b77e" color: "#b0b77e"
primary_extension: .ooc
extensions: extensions:
- .ooc - .ooc
@@ -1382,6 +1485,7 @@ reStructuredText:
search_term: rst search_term: rst
aliases: aliases:
- rst - rst
primary_extension: .rst
extensions: extensions:
- .rst - .rst
- .rest - .rest

View File

@@ -369,7 +369,6 @@ class TestLanguage < Test::Unit::TestCase
def test_eql def test_eql
assert Language['Ruby'].eql?(Language['Ruby']) assert Language['Ruby'].eql?(Language['Ruby'])
assert !Language['Ruby'].eql?(Language['Python']) assert !Language['Ruby'].eql?(Language['Python'])
assert !Language['Ruby'].eql?(Language.new(:name => 'Ruby'))
end end