【发布时间】:2013-07-14 22:28:35
【问题描述】:
我想在一个类中使用 Sass 颜色函数,而不使用 Sass 引擎。我已经在项目中使用了 sass gem,所以我认为捎带会很简单:
class Rectangle
include Sass::Script::Functions
def color
Sass::Script::Color.new([0x82, 0x39, 0x06])
end
def render
#haml engine executed with context of self
#so that within temlate i could call
# %stop{offset: '0%', stop: {color: lighten(color)}}
end
end
更新:参见上面的#render,我想在Rectangle 实例的上下文中呈现的haml 模板中调用lighten(color)
但我得到一个未定义的方法assert_type 错误。 assert_type 方法在 Sass::Script::Functions::EvaluationContext 类中定义。 (github file)
在irb 中玩耍,只是为了得到接近我想要的东西,看起来像这样:
require 'sass'
eval_context = Sass::Script::Functions::EvaluationContext.new({})
#yes the Sass::Script::Number.new(10) is requried, a simple 10 will not work
color = eval_context.rgb(Sass::Script::Number.new(10), Sass::Script::Number.new(10), Sass::Script::Number.new(10))
eval_context.lighten(color, Sass::Script::Number.new(10))
这太疯狂了——我错过了什么吗?
【问题讨论】: