From bf11900bc9ba1e62f936f468413efded9d31d252 Mon Sep 17 00:00:00 2001 From: Charlie Somerville Date: Wed, 4 Dec 2013 15:58:34 +1100 Subject: [PATCH] prefer to load from languages.json if it exists --- Rakefile | 9 +++++++++ lib/linguist/language.rb | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 08ce419b..0b3d16a4 100644 --- a/Rakefile +++ b/Rakefile @@ -1,5 +1,7 @@ require 'rake/clean' require 'rake/testtask' +require 'yaml' +require 'json' task :default => :test @@ -13,6 +15,13 @@ task :samples do File.open('lib/linguist/samples.json', 'w') { |io| io.write json } end +task :build_gem do + languages = YAML.load_file("lib/linguist/languages.yml") + File.write("lib/linguist/languages.json", JSON.dump(languages)) + `gem build github-linguist.gemspec` + File.delete("lib/linguist/languages.json") +end + namespace :classifier do LIMIT = 1_000 diff --git a/lib/linguist/language.rb b/lib/linguist/language.rb index a8dc8f9f..69d20bc0 100644 --- a/lib/linguist/language.rb +++ b/lib/linguist/language.rb @@ -1,6 +1,10 @@ require 'escape_utils' require 'pygments' require 'yaml' +begin + require 'json' +rescue LoadError +end require 'linguist/classifier' require 'linguist/samples' @@ -455,7 +459,16 @@ module Linguist filenames = Samples::DATA['filenames'] popular = YAML.load_file(File.expand_path("../popular.yml", __FILE__)) - YAML.load_file(File.expand_path("../languages.yml", __FILE__)).each do |name, options| + languages_yml = File.expand_path("../languages.yml", __FILE__) + languages_json = File.expand_path("../languages.json", __FILE__) + + if File.exist?(languages_json) && defined?(JSON) + languages = JSON.load(File.read(languages_json)) + else + languages = YAML.load_file(languages_yml) + end + + languages.each do |name, options| options['extensions'] ||= [] options['filenames'] ||= []