Sass Engine を使用せずに、クラス内で 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
更新:上記を参照してください。インスタンスのコンテキスト内でレンダリングされた haml テンプレート内#render
から呼び出したいlighten(color)
Rectangle
しかし、未定義のメソッドassert_type
エラーが発生します。assert_type
メソッドはクラス内で定義されますSass::Script::Functions::EvaluationContext
。( github ファイル)
で遊んで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))
これはクレイジーです - 何か足りないのですか?