Add Blob#vendored?

This commit is contained in:
Joshua Peek
2011-05-21 21:09:37 -05:00
parent 6f1f71ae23
commit e02f745cfc
3 changed files with 48 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ require 'linguist/mime'
require 'linguist/pathname'
require 'escape_utils'
require 'yaml'
module Linguist
module BlobHelper
@@ -65,6 +66,13 @@ module Linguist
['.xib', '.nib', '.pbxproj'].include?(pathname.extname)
end
vendored_paths = YAML.load_file(File.expand_path("../vendor.yml", __FILE__))
VendoredRegexp = Regexp.new(vendored_paths.join('|'))
def vendored?
name =~ VendoredRegexp
end
# Determine if the blob contains bad content that can be used for various
# cross site attacks. Right now this is limited to flash files -- the flash
# plugin ignores the response content type and treats any URL as flash

27
lib/linguist/vendor.yml Normal file
View File

@@ -0,0 +1,27 @@
- yui
- tiny_mce
- ckeditor
- redbox
- active_scaffold
- rico_corner
- code_highlighter
- vendor
- bundle
- node_modules
- cache
- assets
- bookends
- dojo
- extjs
- sencha
- mochikit
- prototype(.*)\.js
- mootools\.js
- jquery([^.]*)(\.min)?\.js
- jquery\-\d\.\d\.\d(\.min)?\.js
- effects\.js
- controls\.js
- dragdrop\.js
- fabfile\.py
- less([^.]*)(\.min)?\.js
- less\-\d+\.\d+\.\d+(\.min)?\.js

View File

@@ -114,6 +114,19 @@ class TestBlob < Test::Unit::TestCase
assert blob("project.pbxproj").generated?
end
def test_vendored
assert !blob("README").vendored?
assert blob("node_modules/coffee-script/lib/coffee-script.js").vendored?
assert blob("vendor/plugins/will_paginate/lib/will_paginate.rb").vendored?
assert blob("public/javascripts/jquery.js").vendored?
assert blob("public/javascripts/prototype.js").vendored?
assert blob("public/javascripts/effects.js").vendored?
assert blob("public/javascripts/controls.js").vendored?
assert blob("public/javascripts/dragdrop.js").vendored?
end
def test_language
assert_equal Language['Ruby'], blob("foo.rb").language
assert_equal Language['Ruby'], blob("script.rb").language