blob: 78d32992f2ad53a4192b0a4d817ed14a823733a6 [file] [log] [blame]
require 'set'
module Sass
# Provides `Sass.has_feature?` which allows for simple feature detection
# by providing a feature name.
module Features
# This is the set of features that can be detected.
#
# When this is updated, the documentation of `feature-exists()` should be
# updated as well.
KNOWN_FEATURES = Set[*%w(
global-variable-shadowing
extend-selector-pseudoclass
units-level-3
at-error
custom-property
)]
# Check if a feature exists by name. This is used to implement
# the Sass function `feature-exists($feature)`
#
# @param feature_name [String] The case sensitive name of the feature to
# check if it exists in this version of Sass.
# @return [Boolean] whether the feature of that name exists.
def has_feature?(feature_name)
KNOWN_FEATURES.include?(feature_name)
end
# Add a feature to Sass. Plugins can use this to easily expose their
# availability to end users. Plugins must prefix their feature
# names with a dash to distinguish them from official features.
#
# @example
# Sass.add_feature("-import-globbing")
# Sass.add_feature("-math-cos")
#
#
# @param feature_name [String] The case sensitive name of the feature to
# to add to Sass. Must begin with a dash.
def add_feature(feature_name)
unless feature_name[0] == ?-
raise ArgumentError.new("Plugin feature names must begin with a dash")
end
KNOWN_FEATURES << feature_name
end
end
extend Features
end