الدالة ()feature_exists في Sass

من موسوعة حسوب

تتحقَّق الدالة feature_exists()‎ ما إذا كانت ميزة معيَّنةٌ موجودةٌ في وقت تشغيل Sass.

الميزات المدعومة هي:

  • global-variable-shadowing: تشير إلى أنّ متغيرًا محليًا سيحجب متغيرًا عامًّا ما لم تُستخدم ‎!global.
  • extend-selector-pseudoclass: تشير إلى أنّ ‎@extend ستصل إلى محدِّدات الأصناف الزائفة (pseudoclasses) مثل :not.
  • units-level-3: تشير إلى الدعم الكامل للعمليات الحسابيَّة على الواحدات (unit arithmetic) باستخدام الواحدات المُعرّفة في المواصفة Values and Units Level 3.
  • at-error: تشير إلى أنّ التعليمة ‎@error مدعومة.
  • custom-property: تشير إلى أن مواصفات الخاصِّيَّات المُخصّصة مدعومة. هذا يعني أن الخاصيات المُخصّصة تُحلّل بشكل ثابت (parsed statically) مع معالجة الاستيفاء مثل SassScript.

البنية العامة

feature_exists($feature)

المعاملات

‎$feature

اسم الميزة التي نريد التحقُّق من وجودها.

القيم المعادة

تُعاد القيمة المنطقيَّة TRUE إذا كانت الميزة مدعومة في النسخة الحاليَّة للغة Sass. خلا ذلك، تُعاد القيمة FALSE.

الأخطاء والاستثناءات

سيُرمى الخطأ ArgumentError إن لم يكن ‎$feature سلسلة نصيةً.

أمثلة

مثال عن استخدام الدالة feature_exists()‎. لمعرفة إن كانت الميزة ‎@error متوافرةً أم لا؛ لاحظ استخدام ‎@if مع الدالة unitless()‎:

@mixin adjust-location($x, $y) {
  @if unitless($x) and feature-exists(at-error) { // اختبار وجود الميزة
    @error "$x may not be unitless, was #{$x}.";
  }
  @if unitless($y) and feature-exists(at-error) { // اختبار وجود الميزة
    @error "$y may not be unitless, was #{y}.";
  }

  // اختبار أنَّ القيم المُمرَّرة إلى الدالة لها قيمة
  // فعلنا ذلك تجنبًا للمشاكل في حال لم يكن المصرّف يدعم @error
  @if not unitless($x) and not unitless($y) {
    position: relative; left: $x; top: $y;
  }
}

.selector {
  @include adjust-location(1em, 2em); // لن يظهر خطأ
}

.selector_2 {
  @include adjust-location(1, 2em); // سيظهر خطأ إن كان مصرّف اللغة يدعم إظهار الأخطاء من طرف المستخدم
}

ستخرج الشيفرة السابقة الناتج الآتي عند تصريفها بمصرّف Sass حديث:

Error: $x may not be unitless, was 1.
        on line 3 of stlye.scss, in `adjust-location'
        from line 18 of stlye.scss
  Use --trace for backtrace.

وستخرج الناتج الآتي عند تصريفها بمصرِّف Sass قديم:

.selector {
  position: relative;
  left: 1em;
  top: 2em; }

انظر أيضًا

  • الدالة function_exists()‎: تتحقَّق ما إذا كانت دالة ما موجودة.
  • الدالة global_variable_exists()‎: تتحقَّق ما إذا كان متغيِّر ما موجود في النطاق العام.
  • الدالة variable_exists()‎: تتحقَّق ما إذا كان متغير ما موجود في النطاق الحالي.
  • الدالة mixin_exists()‎: تتحقَّق ما إذا كان مخلوط ما موجودًا.

مصادر