Initial commit
This commit is contained in:
@@ -0,0 +1 @@
|
||||
require 'cdnjs_rails'
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1,3 @@
|
||||
module CdnjsRails
|
||||
VERSION = '0.0.1'
|
||||
end
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user