Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
038808ba
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
038808ba
编写于
9月 24, 2011
作者:
G
Guillermo Iguaran
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add public API for register new js and css compressors for Sprockets
上级
6eaa9f0d
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
79 addition
and
31 deletion
+79
-31
actionpack/lib/sprockets/bootstrap.rb
actionpack/lib/sprockets/bootstrap.rb
+3
-31
actionpack/lib/sprockets/compressors.rb
actionpack/lib/sprockets/compressors.rb
+46
-0
actionpack/lib/sprockets/railtie.rb
actionpack/lib/sprockets/railtie.rb
+1
-0
actionpack/test/template/compressors_test.rb
actionpack/test/template/compressors_test.rb
+29
-0
未找到文件。
actionpack/lib/sprockets/bootstrap.rb
浏览文件 @
038808ba
...
...
@@ -15,11 +15,11 @@ def run
# temporarily hardcode default JS compressor to uglify. Soon, it will work
# the same as SCSS, where a default plugin sets the default.
unless
config
.
assets
.
js_compressor
==
false
app
.
assets
.
js_compressor
=
LazyCompressor
.
new
{
expan
d_js_compressor
(
config
.
assets
.
js_compressor
||
:uglifier
)
}
app
.
assets
.
js_compressor
=
LazyCompressor
.
new
{
Sprockets
::
Compressors
.
registere
d_js_compressor
(
config
.
assets
.
js_compressor
||
:uglifier
)
}
end
unless
config
.
assets
.
css_compressor
==
false
app
.
assets
.
css_compressor
=
LazyCompressor
.
new
{
expan
d_css_compressor
(
config
.
assets
.
css_compressor
)
}
app
.
assets
.
css_compressor
=
LazyCompressor
.
new
{
Sprockets
::
Compressors
.
registere
d_css_compressor
(
config
.
assets
.
css_compressor
)
}
end
end
...
...
@@ -33,33 +33,5 @@ def run
app
.
assets
=
app
.
assets
.
index
end
end
protected
def
expand_js_compressor
(
sym
)
case
sym
when
:closure
require
'closure-compiler'
Closure
::
Compiler
.
new
when
:uglifier
require
'uglifier'
Uglifier
.
new
when
:yui
require
'yui/compressor'
YUI
::
JavaScriptCompressor
.
new
else
sym
end
end
def
expand_css_compressor
(
sym
)
case
sym
when
:yui
require
'yui/compressor'
YUI
::
CssCompressor
.
new
else
sym
end
end
end
end
actionpack/lib/sprockets/compressors.rb
浏览文件 @
038808ba
module
Sprockets
module
Compressors
@@css_compressors
=
{}
@@js_compressors
=
{}
@@default_css_compressor
=
nil
@@default_js_compressor
=
nil
def
self
.
register_css_compressor
(
name
,
klass
,
options
=
{})
@@default_css_compressor
=
name
.
to_sym
if
options
[
:default
]
||
@@default_css_compressor
.
nil?
@@css_compressors
[
name
.
to_sym
]
=
{
:klass
=>
klass
.
to_s
,
:require
=>
options
[
:require
]}
end
def
self
.
register_js_compressor
(
name
,
klass
,
options
=
{})
@@default_js_compressor
=
name
.
to_sym
if
options
[
:default
]
||
@@default_js_compressor
.
nil?
@@js_compressors
[
name
.
to_sym
]
=
{
:klass
=>
klass
.
to_s
,
:require
=>
options
[
:require
]}
end
def
self
.
registered_css_compressor
(
name
)
if
name
.
respond_to?
(
:to_sym
)
compressor
=
@@css_compressors
[
name
.
to_sym
]
||
@@css_compressors
[
@@default_css_compressor
]
require
compressor
[
:require
]
if
compressor
[
:require
]
compressor
[
:klass
].
constantize
.
new
else
name
end
end
def
self
.
registered_js_compressor
(
name
)
if
name
.
respond_to?
(
:to_sym
)
compressor
=
@@js_compressors
[
name
.
to_sym
]
||
@@js_compressors
[
@@default_js_compressor
]
require
compressor
[
:require
]
if
compressor
[
:require
]
compressor
[
:klass
].
constantize
.
new
else
name
end
end
# The default compressors must be registered in default plugins (ex. Sass-Rails)
register_css_compressor
(
:scss
,
'Sass::Rails::Compressor'
,
:require
=>
'sass/rails/compressor'
,
:default
=>
true
)
register_js_compressor
(
:uglifier
,
'Uglifier'
,
:require
=>
'uglifier'
,
:default
=>
true
)
# Automaticaly register some compressors
register_css_compressor
(
:yui
,
'YUI::CssCompressor'
,
:require
=>
'yui/compressor'
)
register_js_compressor
(
:closure
,
'Closure::Compiler'
,
:require
=>
'closure-compiler'
)
register_js_compressor
(
:yui
,
'YUI::JavaScriptCompressor'
,
:require
=>
'yui/compressor'
)
end
# An asset compressor which does nothing.
#
# This compressor simply returns the asset as-is, without any compression
...
...
actionpack/lib/sprockets/railtie.rb
浏览文件 @
038808ba
module
Sprockets
autoload
:Bootstrap
,
"sprockets/bootstrap"
autoload
:Helpers
,
"sprockets/helpers"
autoload
:Compressors
,
"sprockets/compressors"
autoload
:LazyCompressor
,
"sprockets/compressors"
autoload
:NullCompressor
,
"sprockets/compressors"
autoload
:StaticCompiler
,
"sprockets/static_compiler"
...
...
actionpack/test/template/compressors_test.rb
0 → 100644
浏览文件 @
038808ba
require
'abstract_unit'
require
'rails/railtie'
require
'sprockets/railtie'
class
CompressorsTest
<
ActiveSupport
::
TestCase
def
test_register_css_compressor
Sprockets
::
Compressors
.
register_css_compressor
(
:null
,
Sprockets
::
NullCompressor
)
compressor
=
Sprockets
::
Compressors
.
registered_css_compressor
(
:null
)
assert_kind_of
Sprockets
::
NullCompressor
,
compressor
end
def
test_register_js_compressor
Sprockets
::
Compressors
.
register_js_compressor
(
:uglifier
,
'Uglifier'
,
:require
=>
'uglifier'
)
compressor
=
Sprockets
::
Compressors
.
registered_js_compressor
(
:uglifier
)
assert_kind_of
Uglifier
,
compressor
end
def
test_register_default_css_compressor
Sprockets
::
Compressors
.
register_css_compressor
(
:null
,
Sprockets
::
NullCompressor
,
:default
=>
true
)
compressor
=
Sprockets
::
Compressors
.
registered_css_compressor
(
:default
)
assert_kind_of
Sprockets
::
NullCompressor
,
compressor
end
def
test_register_default_js_compressor
Sprockets
::
Compressors
.
register_js_compressor
(
:null
,
Sprockets
::
NullCompressor
,
:default
=>
true
)
compressor
=
Sprockets
::
Compressors
.
registered_js_compressor
(
:default
)
assert_kind_of
Sprockets
::
NullCompressor
,
compressor
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录