Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also .

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also .
base repository: octocat/linguist
Choose a Base Repository
github/linguist
octocat/linguist
1974kpkpkp/linguist
22sadewa22/linguist
6un9-h0-Dan/linguist
Acidburn0zzz/linguist
Aktrc/linguist
AsherBond/linguist
Blueprint-Marketing/linguist
Bluscream/linguist
Bostonncity/linguist
ChingTi/linguist
CyberShadow/linguist
DalavanCloud/linguist
DerekV/linguist
Epictetus/linguist
Erls-Corporation/linguist
Frostman/linguist
JT0407/linguist
Lavrend/linguist
LoLi-Lang/linguist
LunarMother/linguist
MeirKriheli/linguist
Mellbabe/linguist
MissSheyni/linguist
Musicantma/linguist
Ocramius/linguist
Open-Turing-Project/linguist
Peterkingalex1972/linguist
PhoenixPeca/linguist
REAS/linguist
SRI-CSL/linguist
Sen/linguist
StoneCypher/linguist
SuiyunCloud/linguist
Thompsons/linguist
TimHansen/linguist
UniversityOfRidiculousMythologies/linguist
Wildfoxx007/linguist
XVilka/linguist
Yardanico/linguist
Zlender/linguist
aaroncompaniados26/linguist
ab5tract/linguist
abarrachina/linguist
abevoelker/linguist
adamyi/linguist
adiputra6/linguist
adjob/linguist
agentultra/linguist
ahrokib/linguist
akshayblevel/linguist
alokmenghrajani/linguist
ananthrk/linguist
androidrob/linguist
andyklock/linguist
andylamp/linguist
ayoubserti/linguist
bakkdoor/linguist
beckje01/linguist
bkerley/linguist
bofeiw/linguist
borgified/linguist
bratish/linguist
brynary/linguist
btd/scala-linguist
burningTyger/linguist
c-lipka/linguist
chiraag/linguist
cmhokej/linguist
codeclimate/linguist
cooljeanius/linguist
corollari/linguist
cpatni/linguist
crabmusket/linguist
cybernet14/linguist
dals/linguist
david-waltermire-nist/linguist
deadkniferecords/linguist
devinus/linguist
dineshkummarc/linguist
dom96/linguist
donma/linguist
doubleotoo/linguist
dtrapezoid/linguist
ealliaume/linguist
earl/linguist
egisatoshi/linguist
elikrumova/linguist
euclio/linguist
evil-probablycorey/linguist
flaviusb/linguist
gitlabhq/linguist
gosu-tools/linguist
grosser/language_sniffer
hamiiiiid/linguist
heelhook/linguist
hinoryu/linguist
hoquality/linguist
igrigorik/linguist
ilyes14/linguist
iorixxx/linguist
jaeg131194/linguist
jason1978-repository1/linguist
jaxzin/linguist
jettero/linguist
jimywork/linguist
johan/linguist
johanneskoester/linguist
johnsir/linguist
jongalloway/linguist
jpcs/linguist
jsiwek/linguist
jstrachan/linguist
justzx2011/linguist
jwilkins/linguist
kassi/linguist
keikubo/linguist
kennknowles/linguist
kepstin/linguist
keshan/linguist
kess2006/linguist
kevinsawicki/linguist
kkaefer/linguist
kprevas/linguist
kspalaiologos/linguist
leafo/linguist
lethaldose/linguist
leto/linguist
lparenteau/linguist
maieul/linguist
manveru/linguist
matiasinsaurralde/linguist
mattn/linguist
mazharul-miraz/linguist
mcanthony/linguist
mcobrien/linguist
mgdm/linguist
mhenirecord/linguist
mislav/linguist
mistydemeo/linguist
miyomi/linguist
mleinart/linguist
mmullis/linguist
mojombo/linguist
moskvin/linguist
nibalizer/linguist
niilante/linguist
noelnamai/linguist
nolta/linguist
pao/linguist
pavel-the-fucked-up-bastard/linguist
pchaigno/linguist
peterkinalex/linguist
pmoura/linguist
pombredanne/linguist
protohub/linguist
rankida/linguist
remi/linguist
rkh/linguist
rlsosborne/linguist
rnagrodzki/linguist
robbrit/linguist
robnewman/linguist
robsimmons/linguist
ruelbargo/linguist
sahildua2305/linguist
samerkadem/linguist
sander99999/linguist
sarahhodne/linguist
sbisbee/linguist
sdressler/linguist
sebgod/linguist
sevgimiz-fm/linguist
simonoff/linguist
sj26/linguist
skoon/linguist
smola/linguist
softprops/linguist
stof/linguist
strangewarp/linguist
sunaku/linguist
svenefftinge/linguist
t0919170301/linguist
tautologico/linguist
tbohlender/linguist
tnm/linguist
toothrot/linguist
ttimz1313/linguist
txdywy/linguist
uleewang/linguist
utkarshkukreti/linguist
vadimkagusev/linguist
valscion/linguist
vedo73/linguist
wildmichael/linguist
wkentaro/linguist
yyx990803/linguist
zhensydow/linguist
zoohansever/linguist
Nothing to show
base: v2.2.0
head repository: octocat/linguist
Choose a Head Repository
github/linguist
octocat/linguist
1974kpkpkp/linguist
22sadewa22/linguist
6un9-h0-Dan/linguist
Acidburn0zzz/linguist
Aktrc/linguist
AsherBond/linguist
Blueprint-Marketing/linguist
Bluscream/linguist
Bostonncity/linguist
ChingTi/linguist
CyberShadow/linguist
DalavanCloud/linguist
DerekV/linguist
Epictetus/linguist
Erls-Corporation/linguist
Frostman/linguist
JT0407/linguist
Lavrend/linguist
LoLi-Lang/linguist
LunarMother/linguist
MeirKriheli/linguist
Mellbabe/linguist
MissSheyni/linguist
Musicantma/linguist
Ocramius/linguist
Open-Turing-Project/linguist
Peterkingalex1972/linguist
PhoenixPeca/linguist
REAS/linguist
SRI-CSL/linguist
Sen/linguist
StoneCypher/linguist
SuiyunCloud/linguist
Thompsons/linguist
TimHansen/linguist
UniversityOfRidiculousMythologies/linguist
Wildfoxx007/linguist
XVilka/linguist
Yardanico/linguist
Zlender/linguist
aaroncompaniados26/linguist
ab5tract/linguist
abarrachina/linguist
abevoelker/linguist
adamyi/linguist
adiputra6/linguist
adjob/linguist
agentultra/linguist
ahrokib/linguist
akshayblevel/linguist
alokmenghrajani/linguist
ananthrk/linguist
androidrob/linguist
andyklock/linguist
andylamp/linguist
ayoubserti/linguist
bakkdoor/linguist
beckje01/linguist
bkerley/linguist
bofeiw/linguist
borgified/linguist
bratish/linguist
brynary/linguist
btd/scala-linguist
burningTyger/linguist
c-lipka/linguist
chiraag/linguist
cmhokej/linguist
codeclimate/linguist
cooljeanius/linguist
corollari/linguist
cpatni/linguist
crabmusket/linguist
cybernet14/linguist
dals/linguist
david-waltermire-nist/linguist
deadkniferecords/linguist
devinus/linguist
dineshkummarc/linguist
dom96/linguist
donma/linguist
doubleotoo/linguist
dtrapezoid/linguist
ealliaume/linguist
earl/linguist
egisatoshi/linguist
elikrumova/linguist
euclio/linguist
evil-probablycorey/linguist
flaviusb/linguist
gitlabhq/linguist
gosu-tools/linguist
grosser/language_sniffer
hamiiiiid/linguist
heelhook/linguist
hinoryu/linguist
hoquality/linguist
igrigorik/linguist
ilyes14/linguist
iorixxx/linguist
jaeg131194/linguist
jason1978-repository1/linguist
jaxzin/linguist
jettero/linguist
jimywork/linguist
johan/linguist
johanneskoester/linguist
johnsir/linguist
jongalloway/linguist
jpcs/linguist
jsiwek/linguist
jstrachan/linguist
justzx2011/linguist
jwilkins/linguist
kassi/linguist
keikubo/linguist
kennknowles/linguist
kepstin/linguist
keshan/linguist
kess2006/linguist
kevinsawicki/linguist
kkaefer/linguist
kprevas/linguist
kspalaiologos/linguist
leafo/linguist
lethaldose/linguist
leto/linguist
lparenteau/linguist
maieul/linguist
manveru/linguist
matiasinsaurralde/linguist
mattn/linguist
mazharul-miraz/linguist
mcanthony/linguist
mcobrien/linguist
mgdm/linguist
mhenirecord/linguist
mislav/linguist
mistydemeo/linguist
miyomi/linguist
mleinart/linguist
mmullis/linguist
mojombo/linguist
moskvin/linguist
nibalizer/linguist
niilante/linguist
noelnamai/linguist
nolta/linguist
pao/linguist
pavel-the-fucked-up-bastard/linguist
pchaigno/linguist
peterkinalex/linguist
pmoura/linguist
pombredanne/linguist
protohub/linguist
rankida/linguist
remi/linguist
rkh/linguist
rlsosborne/linguist
rnagrodzki/linguist
robbrit/linguist
robnewman/linguist
robsimmons/linguist
ruelbargo/linguist
sahildua2305/linguist
samerkadem/linguist
sander99999/linguist
sarahhodne/linguist
sbisbee/linguist
sdressler/linguist
sebgod/linguist
sevgimiz-fm/linguist
simonoff/linguist
sj26/linguist
skoon/linguist
smola/linguist
softprops/linguist
stof/linguist
strangewarp/linguist
sunaku/linguist
svenefftinge/linguist
t0919170301/linguist
tautologico/linguist
tbohlender/linguist
tnm/linguist
toothrot/linguist
ttimz1313/linguist
txdywy/linguist
uleewang/linguist
utkarshkukreti/linguist
vadimkagusev/linguist
valscion/linguist
vedo73/linguist
wildmichael/linguist
wkentaro/linguist
yyx990803/linguist
zhensydow/linguist
zoohansever/linguist
Nothing to show
compare: v2.3.3
Commits on Aug 23, 2012
Commits on Sep 01, 2012
Otherwise, charlock_holmes will allocate another large binary
buffer for testing the encoding, which is a problem if the binary
blob is many hundreds of MB large. It'll just fail and crash ruby.
Commits on Sep 02, 2012
When testing if a blob is indexable or safe to colorize, check size first
Commits on Sep 04, 2012
@@ -23,7 +23,6 @@ elsif File.file?(path)

puts "#{blob.name}: #{blob.loc} lines (#{blob.sloc} sloc)"
puts " type: #{type}"
puts " extension: #{blob.pathname.extname}"
puts " mime type: #{blob.mime_type}"
puts " language: #{blob.language}"

@@ -1,6 +1,6 @@
Gem::Specification.new do |s|
s.name = 'github-linguist'
s.version = '2.2.0'
s.version = '2.3.3'
s.summary = "GitHub Language detection"

s.authors = "GitHub"
@@ -10,8 +10,9 @@ Gem::Specification.new do |s|

s.add_dependency 'charlock_holmes', '~> 0.6.6'
s.add_dependency 'escape_utils', '~> 0.2.3'
s.add_dependency 'mime-types', '~> 1.18'
s.add_dependency 'mime-types', '~> 1.19'
s.add_dependency 'pygments.rb', '>= 0.2.13'
s.add_development_dependency 'mocha'
s.add_development_dependency 'json'
s.add_development_dependency 'rake'
s.add_development_dependency 'yajl-ruby'
@@ -1,6 +1,5 @@
require 'linguist/blob_helper'
require 'linguist/generated'
require 'linguist/language'
require 'linguist/mime'
require 'linguist/repository'
require 'linguist/samples'
@@ -1,9 +1,9 @@
require 'linguist/generated'
require 'linguist/language'
require 'linguist/mime'

require 'charlock_holmes'
require 'escape_utils'
require 'mime/types'
require 'pygments'
require 'yaml'

@@ -23,6 +23,22 @@ def extname
File.extname(name.to_s)
end

# Internal: Lookup mime type for extension.
#
# Returns a MIME::Type
def _mime_type
if defined? @_mime_type
@_mime_type
else
guesses = ::MIME::Types.type_for(extname.to_s)

# Prefer text mime types over binary
@_mime_type = guesses.detect { |type| type.ascii? } ||
# Otherwise use the first guess
guesses.first
end
end

# Public: Get the actual blob mime type
#
# Examples
@@ -32,7 +48,14 @@ def extname
#
# Returns a mime type String.
def mime_type
@mime_type ||= Mime.mime_for(extname.to_s)
_mime_type ? _mime_type.to_s : 'text/plain'
end

# Internal: Is the blob binary according to its mime type
#
# Return true or false
def binary_mime_type?
_mime_type ? _mime_type.binary? : false
end

# Public: Get the Content-Type header value
@@ -83,15 +106,6 @@ def detect_encoding
@detect_encoding ||= CharlockHolmes::EncodingDetector.new.detect(data) if data
end

# Public: Is the blob binary according to its mime type
#
# Return true or false
def binary_mime_type?
if mime_type = Mime.lookup_mime_type_for(extname)
mime_type.binary?
end
end

# Public: Is the blob binary?
#
# Return true or false
@@ -146,7 +160,7 @@ def large?
#
# Return true or false
def safe_to_colorize?
text? && !large? && !high_ratio_of_long_lines?
!large? && text? && !high_ratio_of_long_lines?
end

# Internal: Does the blob have a ratio of long lines?
@@ -236,7 +250,9 @@ def generated?
#
# Return true or false
def indexable?
if binary?
if size > 100 * 1024
false
elsif binary?
false
elsif extname == '.txt'
true
@@ -246,8 +262,6 @@ def indexable?
false
elsif generated?
false
elsif size > 100 * 1024
false
else
true
end
@@ -259,11 +273,15 @@ def indexable?
#
# Returns a Language or nil if none is detected
def language
if defined? @language
@language
elsif !binary_mime_type?
@language = Language.detect(name.to_s, lambda { data }, mode)
return @language if defined? @language

if defined?(@data) && @data.is_a?(String)
data = @data
else
data = lambda { binary_mime_type? ? "" : self.data }
end

@language = Language.detect(name.to_s, data, mode)
end

# Internal: Get the lexer of the blob.
@@ -37,7 +37,8 @@ def data
#
# Returns an Array of lines
def lines
@lines ||= data.split("\n", -1)
# TODO: data should be required to be a String, no nils
@lines ||= data ? data.split("\n", -1) : []
end

# Internal: Is the blob a generated file?
@@ -68,9 +68,10 @@ Apex:
primary_extension: .cls

AppleScript:
type: programming
aliases:
- osascript
primary_extension: .scpt
primary_extension: .applescript

Arc:
type: programming

This file was deleted.

This file was deleted.

No commit comments for this range

You can’t perform that action at this time.