This commit is contained in:
Joshua Peek
2012-04-19 17:25:16 -05:00
parent dd6285164d
commit c3d6fc5af8
3 changed files with 101 additions and 0 deletions

View File

@@ -194,6 +194,13 @@ module Linguist
@unpopular ||= all.select(&:unpopular?).sort_by { |lang| lang.name.downcase } @unpopular ||= all.select(&:unpopular?).sort_by { |lang| lang.name.downcase }
end end
# Public: A List of languages with assigned colors.
#
# Returns an Array of Languages.
def self.colors
@colors ||= all.select(&:color).sort_by { |lang| lang.name.downcase }
end
# Public: A List of languages compatible with Ace. # Public: A List of languages compatible with Ace.
# #
# Returns an Array of Languages. # Returns an Array of Languages.
@@ -214,6 +221,8 @@ module Linguist
raise ArgumentError, "invalid type: #{@type}" raise ArgumentError, "invalid type: #{@type}"
end end
@color = attributes[:color]
# Set aliases # Set aliases
@aliases = [default_alias_name] + (attributes[:aliases] || []) @aliases = [default_alias_name] + (attributes[:aliases] || [])
@@ -269,6 +278,11 @@ module Linguist
# Returns a type Symbol or nil. # Returns a type Symbol or nil.
attr_reader :type attr_reader :type
# Public: Get color.
#
# Returns a hex color String.
attr_reader :color
# Public: Get aliases # Public: Get aliases
# #
# Examples # Examples
@@ -434,6 +448,7 @@ module Linguist
YAML.load_file(File.expand_path("../languages.yml", __FILE__)).each do |name, options| YAML.load_file(File.expand_path("../languages.yml", __FILE__)).each do |name, options|
Language.create( Language.create(
:name => name, :name => name,
:color => options['color'],
:type => options['type'], :type => options['type'],
:aliases => options['aliases'], :aliases => options['aliases'],
:lexer => options['lexer'], :lexer => options['lexer'],

View File

@@ -17,6 +17,7 @@
# 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
# different alias. Avoid defining new exceptions. # different alias. Avoid defining new exceptions.
# color - CSS hex color to represent the language.
# #
# Any additions or modifications (even trivial) should have corresponding # Any additions or modifications (even trivial) should have corresponding
# test change in `test/test_blob.rb`. # test change in `test/test_blob.rb`.
@@ -25,6 +26,7 @@
ASP: ASP:
type: programming type: programming
color: "#6a40fd"
lexer: aspx-vb lexer: aspx-vb
search_term: aspx-vb search_term: aspx-vb
aliases: aliases:
@@ -43,6 +45,7 @@ ASP:
ActionScript: ActionScript:
type: programming type: programming
lexer: ActionScript 3 lexer: ActionScript 3
color: "#e3491a"
search_term: as3 search_term: as3
aliases: aliases:
- as3 - as3
@@ -51,6 +54,7 @@ ActionScript:
Ada: Ada:
type: programming type: programming
color: "#02f88c"
extensions: extensions:
- .adb - .adb
- .ads - .ads
@@ -71,12 +75,14 @@ AppleScript:
Arc: Arc:
type: programming type: programming
color: "#ca2afe"
lexer: Text only lexer: Text only
extensions: extensions:
- .arc - .arc
Arduino: Arduino:
type: programming type: programming
color: "#bd79d1"
lexer: C++ lexer: C++
extensions: extensions:
- .ino - .ino
@@ -84,6 +90,7 @@ Arduino:
Assembly: Assembly:
type: programming type: programming
lexer: NASM lexer: NASM
color: "#a67219"
search_term: nasm search_term: nasm
aliases: aliases:
- nasm - nasm
@@ -98,6 +105,7 @@ Augeas:
AutoHotkey: AutoHotkey:
type: programming type: programming
lexer: autohotkey lexer: autohotkey
color: "#6594b9"
aliases: aliases:
- ahk - ahk
extensions: extensions:
@@ -124,6 +132,7 @@ BlitzMax:
Boo: Boo:
type: programming type: programming
color: "#d4bec1"
extensions: extensions:
- .boo - .boo
@@ -139,6 +148,7 @@ Bro:
C: C:
type: programming type: programming
color: "#555"
overrides: overrides:
- .h - .h
primary_extension: .c primary_extension: .c
@@ -151,6 +161,7 @@ C#:
type: programming type: programming
ace_mode: csharp ace_mode: csharp
search_term: csharp search_term: csharp
color: "#5a25a2"
aliases: aliases:
- csharp - csharp
extensions: extensions:
@@ -160,6 +171,7 @@ C++:
type: programming type: programming
ace_mode: c_cpp ace_mode: c_cpp
search_term: cpp search_term: cpp
color: "#f34b7d"
aliases: aliases:
- cpp - cpp
primary_extension: .cpp primary_extension: .cpp
@@ -211,6 +223,7 @@ ChucK:
Clojure: Clojure:
type: programming type: programming
ace_mode: clojure ace_mode: clojure
color: "#db5855"
primary_extension: .clj primary_extension: .clj
extensions: extensions:
- .clj - .clj
@@ -219,6 +232,7 @@ Clojure:
CoffeeScript: CoffeeScript:
type: programming type: programming
ace_mode: coffee ace_mode: coffee
color: "#244776"
aliases: aliases:
- coffee - coffee
extensions: extensions:
@@ -230,6 +244,7 @@ ColdFusion:
type: programming type: programming
lexer: Coldfusion HTML lexer: Coldfusion HTML
ace_mode: coldfusion ace_mode: coldfusion
color: "#ed2cd6"
search_term: cfm search_term: cfm
aliases: aliases:
- cfm - cfm
@@ -240,6 +255,7 @@ ColdFusion:
Common Lisp: Common Lisp:
type: programming type: programming
color: "#3fb68b"
aliases: aliases:
- lisp - lisp
primary_extension: .lisp primary_extension: .lisp
@@ -277,6 +293,7 @@ Cython:
D: D:
type: programming type: programming
color: "#fcd46d"
extensions: extensions:
- .d - .d
- .di - .di
@@ -302,6 +319,7 @@ Dart:
Delphi: Delphi:
type: programming type: programming
color: "#b0ce4e"
primary_extension: .pas primary_extension: .pas
extensions: extensions:
- .dpr - .dpr
@@ -325,6 +343,7 @@ Diff:
Dylan: Dylan:
type: programming type: programming
color: "#3ebc27"
extensions: extensions:
- .dylan - .dylan
@@ -338,11 +357,13 @@ Ecere Projects:
Eiffel: Eiffel:
type: programming type: programming
lexer: Text only lexer: Text only
color: "#946d57"
extensions: extensions:
- .e - .e
Elixir: Elixir:
type: programming type: programming
color: "#6e4a7e"
primary_extension: .ex primary_extension: .ex
extensions: extensions:
- .ex - .ex
@@ -351,6 +372,7 @@ Elixir:
Emacs Lisp: Emacs Lisp:
type: programming type: programming
lexer: Scheme lexer: Scheme
color: "#c065db"
aliases: aliases:
- elisp - elisp
- emacs - emacs
@@ -361,6 +383,7 @@ Emacs Lisp:
Erlang: Erlang:
type: programming type: programming
color: "#949e0e"
primary_extension: .erl primary_extension: .erl
extensions: extensions:
- .erl - .erl
@@ -369,6 +392,7 @@ Erlang:
F#: F#:
type: programming type: programming
lexer: FSharp lexer: FSharp
color: "#b845fc"
search_term: ocaml search_term: ocaml
extensions: extensions:
- .fs - .fs
@@ -378,6 +402,7 @@ F#:
FORTRAN: FORTRAN:
type: programming type: programming
lexer: Fortran lexer: Fortran
color: "#4d41b1"
primary_extension: .f90 primary_extension: .f90
extensions: extensions:
- .F - .F
@@ -399,11 +424,13 @@ FORTRAN:
Factor: Factor:
type: programming type: programming
color: "#636746"
extensions: extensions:
- .factor - .factor
Fancy: Fancy:
type: programming type: programming
color: "#7b9db4"
primary_extension: .fy primary_extension: .fy
extensions: extensions:
- .fancypack - .fancypack
@@ -411,6 +438,7 @@ Fancy:
Fantom: Fantom:
type: programming type: programming
color: "#dbded5"
extensions: extensions:
- .fan - .fan
@@ -449,11 +477,13 @@ Gettext Catalog:
Go: Go:
type: programming type: programming
color: "#8d04eb"
extensions: extensions:
- .go - .go
Gosu: Gosu:
type: programming type: programming
color: "#82937f"
primary_extension: .gs primary_extension: .gs
extensions: extensions:
- .gs - .gs
@@ -477,6 +507,7 @@ Groff:
Groovy: Groovy:
type: programming type: programming
ace_mode: groovy ace_mode: groovy
color: "#e69f56"
primary_extension: .groovy primary_extension: .groovy
extensions: extensions:
- .gradle - .gradle
@@ -528,6 +559,7 @@ HaXe:
type: programming type: programming
lexer: haXe lexer: haXe
ace_mode: haxe ace_mode: haxe
color: "#346d51"
extensions: extensions:
- .hx - .hx
- .hxml - .hxml
@@ -541,6 +573,7 @@ Haml:
Haskell: Haskell:
type: programming type: programming
color: "#29b544"
extensions: extensions:
- .hs - .hs
- .hsc - .hsc
@@ -565,11 +598,13 @@ IRC log:
Io: Io:
type: programming type: programming
color: "#a9188d"
extensions: extensions:
- .io - .io
Ioke: Ioke:
type: programming type: programming
color: "#078193"
extensions: extensions:
- .ik - .ik
@@ -584,6 +619,7 @@ JSON:
Java: Java:
type: programming type: programming
ace_mode: java ace_mode: java
color: "#b07219"
extensions: extensions:
- .java - .java
- .pde - .pde
@@ -600,6 +636,7 @@ Java Server Pages:
JavaScript: JavaScript:
type: programming type: programming
ace_mode: javascript ace_mode: javascript
color: "#f15501"
aliases: aliases:
- js - js
- node - node
@@ -658,6 +695,7 @@ Logtalk:
Lua: Lua:
type: programming type: programming
ace_mode: lua ace_mode: lua
color: "#fa1fa1"
extensions: extensions:
- .lua - .lua
- .nse - .nse
@@ -690,6 +728,7 @@ Markdown:
Matlab: Matlab:
type: programming type: programming
color: "#bb92ac"
primary_extension: .matlab primary_extension: .matlab
extensions: extensions:
- .m - .m
@@ -697,6 +736,7 @@ Matlab:
Max/MSP: Max/MSP:
type: programming type: programming
color: "#ce279c"
lexer: Text only lexer: Text only
extensions: extensions:
- .mxt - .mxt
@@ -709,6 +749,7 @@ Mirah:
type: programming type: programming
lexer: Ruby lexer: Ruby
search_term: ruby search_term: ruby
color: "#c7a938"
extensions: extensions:
- .duby - .duby
- .mir - .mir
@@ -725,11 +766,13 @@ Myghty:
Nemerle: Nemerle:
type: programming type: programming
color: "#0d3c6e"
extensions: extensions:
- .n - .n
Nimrod: Nimrod:
type: programming type: programming
color: "#37775b"
extensions: extensions:
- .nim - .nim
- .nimrod - .nimrod
@@ -737,6 +780,7 @@ Nimrod:
Nu: Nu:
type: programming type: programming
lexer: Scheme lexer: Scheme
color: "#c9df40"
aliases: aliases:
- nush - nush
extensions: extensions:
@@ -755,6 +799,7 @@ NumPy:
OCaml: OCaml:
type: programming type: programming
ace_mode: ocaml ace_mode: ocaml
color: "#3be133"
primary_extension: .ml primary_extension: .ml
extensions: extensions:
- .ml - .ml
@@ -770,6 +815,7 @@ ObjDump:
Objective-C: Objective-C:
type: programming type: programming
color: "#438eff"
overrides: overrides:
- .m - .m
primary_extension: .m primary_extension: .m
@@ -780,6 +826,7 @@ Objective-C:
Objective-J: Objective-J:
type: programming type: programming
color: "#ff0c5a"
extensions: extensions:
- .j - .j
- .sj - .sj
@@ -810,6 +857,7 @@ OpenEdge ABL:
PHP: PHP:
type: programming type: programming
ace_mode: php ace_mode: php
color: "#6e03c1"
extensions: extensions:
- .aw - .aw
- .ctp - .ctp
@@ -823,6 +871,7 @@ PHP:
Parrot: Parrot:
type: programming type: programming
color: "#f3ca0a"
lexer: Text only lexer: Text only
primary_extension: .parrot # Dummy extension primary_extension: .parrot # Dummy extension
@@ -847,6 +896,7 @@ Parrot Assembly:
Perl: Perl:
type: programming type: programming
ace_mode: perl ace_mode: perl
color: "#0298c3"
overrides: overrides:
- .pl - .pl
- .t - .t
@@ -873,6 +923,7 @@ PowerShell:
Prolog: Prolog:
type: programming type: programming
color: "#74283c"
extensions: extensions:
- .pl - .pl
- .pro - .pro
@@ -880,6 +931,7 @@ Prolog:
Puppet: Puppet:
type: programming type: programming
color: "#cc5555"
extensions: extensions:
- .pp - .pp
filenames: filenames:
@@ -887,6 +939,7 @@ Puppet:
Pure Data: Pure Data:
type: programming type: programming
color: "#91de79"
lexer: Text only lexer: Text only
extensions: extensions:
- .pd - .pd
@@ -894,6 +947,7 @@ Pure Data:
Python: Python:
type: programming type: programming
ace_mode: python ace_mode: python
color: "#3581ba"
primary_extension: .py primary_extension: .py
extensions: extensions:
- .py - .py
@@ -911,6 +965,7 @@ Python traceback:
R: R:
type: programming type: programming
color: "#198ce7"
lexer: S lexer: S
overrides: overrides:
- .r - .r
@@ -928,6 +983,7 @@ RHTML:
Racket: Racket:
type: programming type: programming
lexer: Scheme lexer: Scheme
color: "#ae17ff"
primary_extension: .rkt primary_extension: .rkt
extensions: extensions:
- .rkt - .rkt
@@ -945,6 +1001,7 @@ Raw token data:
Rebol: Rebol:
type: programming type: programming
lexer: REBOL lexer: REBOL
color: "#358a5b"
extensions: extensions:
- .r - .r
- .r2 - .r2
@@ -958,6 +1015,7 @@ Redcode:
Ruby: Ruby:
type: programming type: programming
ace_mode: ruby ace_mode: ruby
color: "#701516"
aliases: aliases:
- jruby - jruby
- macruby - macruby
@@ -990,6 +1048,7 @@ Ruby:
Rust: Rust:
type: programming type: programming
color: "#dea584"
lexer: Text only lexer: Text only
extensions: extensions:
- .rs - .rs
@@ -1024,6 +1083,7 @@ Sass:
Scala: Scala:
type: programming type: programming
ace_mode: scala ace_mode: scala
color: "#7dd3b0"
primary_extension: .scala primary_extension: .scala
extensions: extensions:
- .sbt - .sbt
@@ -1031,6 +1091,7 @@ Scala:
Scheme: Scheme:
type: programming type: programming
color: "#1e4aec"
primary_extension: .scm primary_extension: .scm
extensions: extensions:
- .scm - .scm
@@ -1047,6 +1108,7 @@ Scilab:
Self: Self:
type: programming type: programming
color: "#0579aa"
lexer: Text only lexer: Text only
extensions: extensions:
- .self - .self
@@ -1055,6 +1117,7 @@ Shell:
type: programming type: programming
lexer: Bash lexer: Bash
search_term: bash search_term: bash
color: "#5861ce"
aliases: aliases:
- sh - sh
- bash - bash
@@ -1076,6 +1139,7 @@ Shell:
Smalltalk: Smalltalk:
type: programming type: programming
color: "#596706"
extensions: extensions:
- .st - .st
@@ -1085,6 +1149,7 @@ Smarty:
Standard ML: Standard ML:
type: programming type: programming
color: "#dc566d"
aliases: aliases:
- sml - sml
primary_extension: .sml primary_extension: .sml
@@ -1094,12 +1159,14 @@ Standard ML:
SuperCollider: SuperCollider:
type: programming type: programming
color: "#46390b"
lexer: Text only lexer: Text only
extensions: extensions:
- .sc - .sc
Tcl: Tcl:
type: programming type: programming
color: "#e4cc98"
extensions: extensions:
- .tcl - .tcl
@@ -1148,6 +1215,7 @@ Textile:
Turing: Turing:
type: programming type: programming
color: "#45f715"
lexer: Text only lexer: Text only
extensions: extensions:
- .t - .t
@@ -1163,12 +1231,14 @@ Twig:
VHDL: VHDL:
type: programming type: programming
lexer: vhdl lexer: vhdl
color: "#543978"
extensions: extensions:
- .vhd - .vhd
- .vhdl - .vhdl
Vala: Vala:
type: programming type: programming
color: "#ee7d06"
extensions: extensions:
- .vala - .vala
- .vapi - .vapi
@@ -1176,6 +1246,7 @@ Vala:
Verilog: Verilog:
type: programming type: programming
lexer: verilog lexer: verilog
color: "#848bf3"
overrides: overrides:
- .v - .v
extensions: extensions:
@@ -1183,6 +1254,7 @@ Verilog:
VimL: VimL:
type: programming type: programming
color: "#199c4b"
search_term: vim search_term: vim
aliases: aliases:
- vim - vim
@@ -1197,6 +1269,7 @@ VimL:
Visual Basic: Visual Basic:
type: programming type: programming
lexer: VB.net lexer: VB.net
color: "#945db7"
primary_extension: .vb primary_extension: .vb
extensions: extensions:
- .bas - .bas
@@ -1234,6 +1307,7 @@ XML:
XQuery: XQuery:
type: programming type: programming
color: "#2700e2"
extensions: extensions:
- .xq - .xq
- .xqm - .xqm
@@ -1270,6 +1344,7 @@ mupad:
ooc: ooc:
type: programming type: programming
lexer: Ooc lexer: Ooc
color: "#b0b77e"
extensions: extensions:
- .ooc - .ooc

View File

@@ -309,6 +309,17 @@ class TestLanguage < Test::Unit::TestCase
end end
end end
def test_color
assert_equal '#701516', Language['Ruby'].color
assert_equal '#3581ba', Language['Python'].color
assert_equal '#f15501', Language['JavaScript'].color
end
def test_colors
assert Language.colors.include?(Language['Ruby'])
assert Language.colors.include?(Language['Python'])
end
def test_ace_mode def test_ace_mode
assert_equal 'c_cpp', Language['C++'].ace_mode assert_equal 'c_cpp', Language['C++'].ace_mode
assert_equal 'coffee', Language['CoffeeScript'].ace_mode assert_equal 'coffee', Language['CoffeeScript'].ace_mode