diff --git a/github-linguist.gemspec b/github-linguist.gemspec index 8f3fe075..3f3a0853 100644 --- a/github-linguist.gemspec +++ b/github-linguist.gemspec @@ -23,4 +23,5 @@ Gem::Specification.new do |s| s.add_development_dependency 'pry' s.add_development_dependency 'rake' s.add_development_dependency 'yajl-ruby' + s.add_development_dependency 'color-proximity', '~> 0.2.1' end diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index cf005dfe..01606b9e 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -46,7 +46,7 @@ AGS Script: AMPL: type: programming - color: "#00008B" + color: "#E6EFBB" extensions: - .ampl tm_scope: source.ampl @@ -61,7 +61,7 @@ ANTLR: APL: type: programming - color: "#8a0707" + color: "#5A8164" extensions: - .apl - .dyalog @@ -101,7 +101,7 @@ ATS: ActionScript: type: programming tm_scope: source.actionscript.3 - color: "#e3491a" + color: "#882B0F" search_term: as3 aliases: - actionscript 3 @@ -125,7 +125,7 @@ Ada: Agda: type: programming - color: "#467C91" + color: "#315665" extensions: - .agda ace_mode: text @@ -175,7 +175,7 @@ AppleScript: Arc: type: programming - color: "#ca2afe" + color: "#aa2afe" extensions: - .arc tm_scope: none @@ -201,7 +201,7 @@ AsciiDoc: AspectJ: type: programming - color: "#1957b0" + color: "#a957b0" extensions: - .aj tm_scope: none @@ -240,7 +240,7 @@ AutoHotkey: AutoIt: type: programming - color: "#36699B" + color: "#1C3552" aliases: - au3 - AutoIt3 @@ -498,14 +498,14 @@ ChucK: Cirru: type: programming - color: "#aaaaff" + color: "#ccccff" ace_mode: cirru extensions: - .cirru Clean: type: programming - color: "#3a81ad" + color: "#3F85AF" extensions: - .icl - .dcl @@ -645,7 +645,7 @@ Creole: Crystal: type: programming - color: "#76EEF5" + color: "#776791" extensions: - .cr ace_mode: ruby @@ -705,7 +705,7 @@ D-ObjDump: DM: type: programming - color: "#075ff1" + color: "#447265" extensions: - .dm aliases: @@ -737,7 +737,7 @@ Darcs Patch: Dart: type: programming - color: "#98BAD6" + color: "#00B4AB" extensions: - .dart ace_mode: dart @@ -772,7 +772,7 @@ Dogescript: Dylan: type: programming - color: "#3ebc27" + color: "#6c616e" extensions: - .dylan - .dyl @@ -799,7 +799,7 @@ ECL: Eagle: type: markup - color: "#3994bc" + color: "#814C05" extensions: - .sch - .brd @@ -857,7 +857,7 @@ Emacs Lisp: EmberScript: type: programming - color: "#f64e3e" + color: "#FFF4F3" extensions: - .em - .emberscript @@ -866,7 +866,7 @@ EmberScript: Erlang: type: programming - color: "#0faf8d" + color: "#B83998" extensions: - .erl - .es @@ -895,7 +895,7 @@ F#: FLUX: type: programming - color: "#33CCFF" + color: "#88ccff" extensions: - .fx - .flux @@ -1045,7 +1045,7 @@ GLSL: Game Maker Language: type: programming - color: "#8ad353" + color: "#8fb200" extensions: - .gml tm_scope: source.c++ @@ -1119,7 +1119,7 @@ Go: Golo: type: programming - color: "#f6a51f" + color: "#88562A" extensions: - .golo tm_scope: source.golo @@ -1158,7 +1158,7 @@ Grammatical Framework: extensions: - .gf searchable: true - color: "#ff0000" + color: "#79aa7a" tm_scope: source.haskell ace_mode: haskell @@ -1326,7 +1326,7 @@ Haxe: Hy: type: programming ace_mode: text - color: "#7891b1" + color: "#7790B2" extensions: - .hy aliases: @@ -1335,7 +1335,7 @@ Hy: IDL: type: programming - color: "#e3592c" + color: "#a3522f" extensions: - .pro - .dlm @@ -1420,7 +1420,7 @@ Ioke: Isabelle: type: programming - color: "#fdcd00" + color: "#FEFE00" extensions: - .thy tm_scope: source.isabelle.theory @@ -1428,7 +1428,7 @@ Isabelle: J: type: programming - color: "#2d8abd" + color: "#9EEDFF" extensions: - .ijs tm_scope: source.j @@ -1556,7 +1556,7 @@ Julia: KRL: type: programming - color: "#f5c800" + color: "#28431f" extensions: - .krl tm_scope: none @@ -1627,7 +1627,7 @@ LabVIEW: Lasso: type: programming - color: "#2584c3" + color: "#999999" extensions: - .lasso - .las @@ -1787,7 +1787,7 @@ M: MTML: type: markup - color: "#0095d9" + color: "#b7e1f4" extensions: - .mtml tm_scope: text.html.basic @@ -1882,7 +1882,7 @@ Maven POM: Max: type: programming - color: "#ce279c" + color: "#c4a79c" aliases: - max/msp - maxmsp @@ -1906,7 +1906,7 @@ MediaWiki: Mercury: type: programming - color: "#abcdef" + color: "#ff2b2b" ace_mode: prolog interpreters: - mmi @@ -1987,14 +1987,14 @@ NSIS: Nemerle: type: programming - color: "#0d3c6e" + color: "#3d3c6e" extensions: - .n ace_mode: text NetLinx: type: programming - color: "#0000ff" + color: "#0aa0ff" extensions: - .axs - .axi @@ -2003,7 +2003,7 @@ NetLinx: NetLinx+ERB: type: programming - color: "#407fff" + color: "#747faa" extensions: - .axs.erb - .axi.erb @@ -2012,7 +2012,7 @@ NetLinx+ERB: NetLogo: type: programming - color: "#ff2b2b" + color: "#ff6375" extensions: - .nlogo tm_scope: source.lisp @@ -2021,7 +2021,7 @@ NetLogo: NewLisp: type: programming lexer: NewLisp - color: "#eedd66" + color: "#87AED7" extensions: - .nl - .lisp @@ -2058,7 +2058,7 @@ Ninja: Nit: type: programming - color: "#0d8921" + color: "#009917" extensions: - .nit tm_scope: source.nit @@ -2066,7 +2066,7 @@ Nit: Nix: type: programming - color: "#7070ff" + color: "#7e7eff" extensions: - .nix aliases: @@ -2138,7 +2138,7 @@ Objective-C: Objective-C++: type: programming tm_scope: source.objc++ - color: "#4886FC" + color: "#6866fb" aliases: - obj-c++ - objc++ @@ -2229,7 +2229,7 @@ Ox: Oxygene: type: programming - color: "#5a63a3" + color: "#cdd0e3" extensions: - .oxygene tm_scope: none @@ -2237,7 +2237,7 @@ Oxygene: Oz: type: programming - color: "#fcaf3e" + color: "#fab738" extensions: - .oz tm_scope: source.oz @@ -2373,7 +2373,7 @@ Perl: Perl6: type: programming - color: "#0298c3" + color: "#0000fb" extensions: - .6pl - .6pm @@ -2403,7 +2403,7 @@ PigLatin: Pike: type: programming - color: "#066ab2" + color: "#005390" extensions: - .pike - .pmod @@ -2449,7 +2449,7 @@ PowerShell: Processing: type: programming - color: "#2779ab" + color: "#0096D8" extensions: - .pde ace_mode: text @@ -2468,7 +2468,7 @@ Prolog: Propeller Spin: type: programming - color: "#2b446d" + color: "#7fa2a7" extensions: - .spin tm_scope: source.spin @@ -2494,7 +2494,7 @@ Public Key: Puppet: type: programming - color: "#cc5555" + color: "#332A77" extensions: - .pp filenames: @@ -2520,7 +2520,7 @@ PureBasic: PureScript: type: programming - color: "#bcdc53" + color: "#1D222D" extensions: - .purs tm_scope: source.haskell @@ -2529,7 +2529,7 @@ PureScript: Python: type: programming ace_mode: python - color: "#3581ba" + color: "#3572A5" extensions: - .py - .cgi @@ -2647,7 +2647,7 @@ RMarkdown: Racket: type: programming - color: "#ae17ff" + color: "#22228f" extensions: - .rkt - .rktd @@ -2660,7 +2660,7 @@ Racket: Ragel in Ruby Host: type: programming - color: "#ff9c2e" + color: "#e17600" extensions: - .rl aliases: @@ -2791,7 +2791,7 @@ Rust: SAS: type: programming - color: "#1E90FF" + color: "#B34936" extensions: - .sas tm_scope: source.sas @@ -2815,7 +2815,7 @@ SPARQL: SQF: type: programming - color: "#FFCB1F" + color: "#3F3F3F" extensions: - .sqf - .hqf @@ -2992,7 +2992,7 @@ Slash: Slim: group: HTML type: markup - color: "#ff8877" + color: "#ff8f77" extensions: - .slim ace_mode: text @@ -3015,7 +3015,7 @@ Smarty: SourcePawn: type: programming - color: "#f69e1d" + color: "#5c7611" aliases: - sourcemod extensions: @@ -3083,7 +3083,7 @@ Swift: SystemVerilog: type: programming - color: "#343761" + color: "#DAE1C2" extensions: - .sv - .svh @@ -3208,7 +3208,7 @@ Twig: TypeScript: type: programming - color: "#31859c" + color: "#2b7489" aliases: - ts extensions: @@ -3220,7 +3220,7 @@ Unified Parallel C: type: programming group: C ace_mode: c_cpp - color: "#755223" + color: "#4e3617" extensions: - .upc tm_scope: source.c @@ -3234,8 +3234,8 @@ UnrealScript: ace_mode: java VCL: + group: Perl type: programming - color: "#0298c3" extensions: - .vcl tm_scope: source.varnish.vcl @@ -3243,7 +3243,7 @@ VCL: VHDL: type: programming - color: "#543978" + color: "#adb2cb" extensions: - .vhdl - .vhd @@ -3257,7 +3257,7 @@ VHDL: Vala: type: programming - color: "#ee7d06" + color: "#fbe5cd" extensions: - .vala - .vapi @@ -3265,7 +3265,7 @@ Vala: Verilog: type: programming - color: "#848bf3" + color: "#b2b7f8" extensions: - .v - .veo @@ -3273,7 +3273,7 @@ Verilog: VimL: type: programming - color: "#199c4b" + color: "#199f4b" search_term: vim aliases: - vim @@ -3309,7 +3309,7 @@ Visual Basic: Volt: type: programming - color: "#0098db" + color: "#1F1F1F" extensions: - .volt tm_scope: source.d @@ -3317,7 +3317,7 @@ Volt: Web Ontology Language: type: markup - color: "#3994bc" + color: "#9cc9dd" extensions: - .owl tm_scope: text.xml @@ -3433,7 +3433,7 @@ XProc: XQuery: type: programming - color: "#2700e2" + color: "#5232e7" extensions: - .xquery - .xq @@ -3516,7 +3516,7 @@ desktop: eC: type: programming - color: "#4A4773" + color: "#913960" search_term: ec extensions: - .ec @@ -3548,7 +3548,7 @@ mupad: nesC: type: programming - color: "#ffce3b" + color: "#94B0C7" extensions: - .nc ace_mode: text @@ -3581,7 +3581,7 @@ wisp: xBase: type: programming - color: "#3a4040" + color: "#403a40" extensions: - .prg tm_scope: none diff --git a/test/helper.rb b/test/helper.rb index a6a03672..ab3cc8fa 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -2,6 +2,7 @@ require "bundler/setup" require "minitest/autorun" require "mocha/setup" require "linguist" +require 'color-proximity' def fixtures_path File.expand_path("../fixtures", __FILE__) diff --git a/test/test_color_proximity.rb b/test/test_color_proximity.rb new file mode 100644 index 00000000..2356e74a --- /dev/null +++ b/test/test_color_proximity.rb @@ -0,0 +1,23 @@ +require_relative "./helper" + +class TestColorProximity < Minitest::Test + include Linguist + + def cut_hash(color) + color[1..-1] if color.start_with?('#') + end + + def test_color_proximity + langs_with_colors = Language.all.reject { |language| language.color.nil? } + cp = ColorProximity.new(0.05, langs_with_colors.map { |lang| cut_hash(lang.color) }) + failing_threshold = langs_with_colors.map do |lang| + state = cp.past_threshold?(cut_hash(lang.color)) + if !state.first && lang.color != "##{state.last.first}" + "- #{lang} (#{lang.color}) is too close to #{state.last}" + end + end.compact + message = "The following #{failing_threshold.length} languages have failing color thresholds. Please modify the hex color.\n#{failing_threshold.join("\n")}" + + assert failing_threshold.empty?, message + end +end diff --git a/test/test_language.rb b/test/test_language.rb index 32eb4341..04525399 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -286,9 +286,9 @@ class TestLanguage < Minitest::Test def test_color assert_equal '#701516', Language['Ruby'].color - assert_equal '#3581ba', Language['Python'].color + assert_equal '#3572A5', Language['Python'].color assert_equal '#f1e05a', Language['JavaScript'].color - assert_equal '#31859c', Language['TypeScript'].color + assert_equal '#2b7489', Language['TypeScript'].color assert_equal '#3d9970', Language['LSL'].color end