【问题标题】:Sass. Check If Custom Ruby Function Exists萨斯。检查自定义 Ruby 函数是否存在
【发布时间】:2013-10-20 09:14:03
【问题描述】:

我编写了一个 Sass (SCSS) CSS3 @gradient mixin,它还为 IE9 输出 base64 编码的 SVG 字符串。

这个 mixin 依赖于用户的 Sass“watch”文件中需要的这个自定义 ruby​​ 函数:

require 'sass'
require 'base64'

module Sass::Script::Functions
    def base64Encode(string)
        assert_type string, :String
        Sass::Script::String.new(Base64.encode64(string.value))
    end
    declare :base64Encode, :args => [:string]
end

这样称呼:base64Encode($svgStr)

但是,我想发布我的 mixin 库,并且不想强制要求这个自定义函数。

例如,用于 VS2012 的 AFAIK Web Workbench 无法包含自定义函数。如果不包含,那么我不想输出base64规则。

那么,是否可以在 mixin 中检测 base64Encode 是否作为自定义函数存在?否则,您最终会得到以下结果:

background-image: url("data:image/svg+xml;base64,base64Encode('<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 1 1\" preserveAspectRatio=\"none\"><linearGradient id=\"g522\" gradientUnits=\"userSpaceOnUse\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\"><stop stop-color=\"white\" offset=\"0\" /><stop stop-color=\"whitesmoke\" offset=\"1\" /></linearGradient><rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"url(#g522)\" /></svg>')");

而不是

background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRo PSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNl cnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzUy MiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9 IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBzdG9wLWNvbG9yPSJ3aGl0 ZSIgb2Zmc2V0PSIwIiAvPjxzdG9wIHN0b3AtY29sb3I9IndoaXRlc21va2Ui IG9mZnNldD0iMSIgLz48L2xpbmVhckdyYWRpZW50PjxyZWN0IHg9IjAiIHk9 IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZzUyMikiIC8+ PC9zdmc+ ");

或者是否可以在返回的字符串中搜索以检查是否存在“base64Encode”并忽略它?

【问题讨论】:

    标签: ruby function sass mixins


    【解决方案1】:

    此拉取请求(已合并)为您提供“功能存在”功能:https://github.com/nex3/sass/pull/821

    【讨论】:

    • 嗯,这似乎不起作用。我从 3.2.8 更新到 Sass 3.2.12,下面的代码总是产生“true”: if (function-exists(base64Encode)) { debug true; } 其他 { 调试错误; }(@ 被删除,因为 SO 不允许它们)
    • 我猜你需要最新的 3.3 候选版本。如果这不起作用,也许在 GitHub 上创建一个问题。
    猜你喜欢
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多