diff --git a/Rakefile b/Rakefile index 08186e27..9ac6189d 100644 --- a/Rakefile +++ b/Rakefile @@ -1,7 +1,7 @@ -require 'json' require 'rake/clean' require 'rake/testtask' require 'yaml' +require 'yajl' task :default => :test @@ -19,15 +19,13 @@ end task :samples do require 'linguist/samples' - require 'yajl' - data = Linguist::Samples.data - json = Yajl::Encoder.encode(data, :pretty => true) - File.open('lib/linguist/samples.json', 'w') { |io| io.write json } + json = Yajl.dump(Linguist::Samples.data, :pretty => true) + File.write 'lib/linguist/samples.json', json end task :build_gem => :samples do languages = YAML.load_file("lib/linguist/languages.yml") - File.write("lib/linguist/languages.json", JSON.dump(languages)) + File.write("lib/linguist/languages.json", Yajl.dump(languages)) `gem build github-linguist.gemspec` File.delete("lib/linguist/languages.json") end @@ -71,11 +69,11 @@ namespace :benchmark do reference_file = ENV["REFERENCE"] candidate_file = ENV["CANDIDATE"] - reference = JSON.parse(File.read(reference_file)) + reference = Yajl.load(File.read(reference_file)) reference_counts = Hash.new(0) reference.each { |filename, language| reference_counts[language] += 1 } - candidate = JSON.parse(File.read(candidate_file)) + candidate = Yajl.load(File.read(candidate_file)) candidate_counts = Hash.new(0) candidate.each { |filename, language| candidate_counts[language] += 1 } @@ -125,14 +123,12 @@ namespace :classifier do def each_public_gist require 'open-uri' - require 'json' - url = "https://api.github.com/gists/public" loop do resp = open(url) url = resp.meta['link'][/<([^>]+)>; rel="next"/, 1] - gists = JSON.parse(resp.read) + gists = Yajl.load(resp.read) for gist in gists for filename, attrs in gist['files'] diff --git a/github-linguist.gemspec b/github-linguist.gemspec index ff086b04..6f3317f3 100644 --- a/github-linguist.gemspec +++ b/github-linguist.gemspec @@ -18,7 +18,6 @@ Gem::Specification.new do |s| s.add_dependency 'mime-types', '~> 1.19' s.add_dependency 'pygments.rb', '~> 0.6.0' - s.add_development_dependency 'json' s.add_development_dependency 'mocha' s.add_development_dependency 'pry' s.add_development_dependency 'rake' diff --git a/lib/linguist/language.rb b/lib/linguist/language.rb index 666c75df..49c4a6be 100644 --- a/lib/linguist/language.rb +++ b/lib/linguist/language.rb @@ -2,7 +2,7 @@ require 'escape_utils' require 'pygments' require 'yaml' begin - require 'json' + require 'yajl' rescue LoadError end @@ -533,8 +533,8 @@ module Linguist 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)) + if File.exist?(languages_json) && defined?(Yajl) + languages = Yajl.load(File.read(languages_json)) else languages = YAML.load_file(languages_yml) end diff --git a/lib/linguist/samples.rb b/lib/linguist/samples.rb index 920bb87e..82c011b1 100644 --- a/lib/linguist/samples.rb +++ b/lib/linguist/samples.rb @@ -1,5 +1,5 @@ begin - require 'json' + require 'yajl' rescue LoadError require 'yaml' end @@ -19,7 +19,7 @@ module Linguist # Hash of serialized samples object def self.cache @cache ||= begin - serializer = defined?(JSON) ? JSON : YAML + serializer = defined?(Yajl) ? Yajl : YAML serializer.load(File.read(PATH)) end end diff --git a/test/test_samples.rb b/test/test_samples.rb index 899992dd..992618cf 100644 --- a/test/test_samples.rb +++ b/test/test_samples.rb @@ -16,11 +16,11 @@ class TestSamples < Test::Unit::TestCase warn "Samples database is out of date. Run `bundle exec rake samples`." expected = Tempfile.new('expected.json') - expected.write Yajl::Encoder.encode(serialized, :pretty => true) + expected.write Yajl.dump(serialized, :pretty => true) expected.close actual = Tempfile.new('actual.json') - actual.write Yajl::Encoder.encode(latest, :pretty => true) + actual.write Yajl.dump(latest, :pretty => true) actual.close expected.unlink