Initial commit

This commit is contained in:
Gregory Eremin
2013-07-17 20:26:20 +07:00
commit 588fdd0f64
12 changed files with 3993 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
require 'cdnjs_rails'
+47
View File
@@ -0,0 +1,47 @@
require 'multi_json'
require 'cdnjs_rails/railtie' if defined? Rails
module CdnjsRails
URL_TEMPLATE = '%s//cdnjs.cloudflare.com/ajax/libs/%s/%s/%s'
def package_url name, options = {}
package = packages[name]
raise UnknownPackageError.new(name) if package.nil?
version = options[:version] || options[:ver] || options[:v]
version = package['latest_version'] if version.nil? || version == 'latest'
unless package['versions'].include?(version)
raise UnknownPackageVersionError.new(name, version)
end
protocol = options[:protocol] || options[:proto]
protocol = "#{protocol}:" unless protocol.nil?
URL_TEMPLATE % [protocol.to_s, name, version, package['filename']]
end
private
def packages
@packages ||= MultiJson.load(packages_json)
end
def packages_json
path = File.expand_path('../../data/packages.json', __FILE__)
File.open(path).read
end
extend self
class UnknownPackageError < ::Exception
def initialize name
super "Unknown package: #{name}"
end
end
class UnknownPackageVersionError < ::Exception
def initialize name, version
super "Unknown #{name} version: #{version}"
end
end
end
+9
View File
@@ -0,0 +1,9 @@
require 'cdnjs_rails/view_helpers'
module CdnjsRails
class Railtie < Rails::Railtie
initializer 'cdnjs_rails.view_helpers' do |app|
ActionView::Base.send(:include, ViewHelpers)
end
end
end
+3
View File
@@ -0,0 +1,3 @@
module CdnjsRails
VERSION = '0.0.1'
end
+11
View File
@@ -0,0 +1,11 @@
module CdnjsRails
module ViewHelpers
def javascript_cdnjs_tag name, version = nil
javascript_include_tag CdnjsRails.package_url(name, version)
end
def stylesheet_cdnjs_tag name, version = nil
stylesheet_include_tag CdnjsRails.package_url(name, version)
end
end
end