الفرق بين المراجعتين لصفحة: «Sass/feature exists»

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>()feature_exists</code> في Sass}}</noinclude> تعيد الدالة <code>feature_exists()‎</code> محدّدًا جد...'
 
ط استبدال النص - 'توثيق Sass الرسمي.]' ب'توثيق Sass الرسمي].'
 
(5 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>()feature_exists</code> في Sass}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>()feature_exists</code> في Sass}}</noinclude>
تعيد الدالة <code>feature_exists()‎</code> محدّدًا جديدًا مع تشعيب جميع المحددات الموجودة في <code>‎$selectors</code>  في بعضها البعض كما لو كانت متشعّبة في ملف الأنماط هكذا ‎<code><nowiki>$selector1 {$selector2 {...}}</nowiki></code>‎.
تتحقَّق الدالة <code>feature_exists()‎</code> ما إذا كانت ميزة معيَّنةٌ موجودةٌ في وقت تشغيل [[Sass]].


على عكس معظم دوال المحددات ، فإن الدالة <code>selector_nest()‎</code> تسمح باستخدام المُحدّد الأبوي <code>[[Sass/SassScript#.D8.A7.D9.84.D8.B1.D9.85.D8.B2 .26 .D9.81.D9.8A SassScript|&]]</code> في أي مُحدد ما عدا الأول.
الميزات المدعومة هي:
*<code>global-variable-shadowing</code>: تشير إلى أنّ متغيرًا محليًا سيحجب متغيرًا عامًّا ما لم تُستخدم <code>‎!global</code>.


== البنية العامة ==
*<code>extend-selector-pseudoclass</code>: تشير إلى أنّ ‎<code>[[Sass/@ rules|@extend]]</code> ستصل إلى محدِّدات الأصناف الزائفة (pseudoclasses) مثل <code>‎[[CSS/:not|:not]]</code>.
 
*<code>units-level-3</code>: تشير إلى الدعم الكامل للعمليات الحسابيَّة على الواحدات (unit arithmetic) باستخدام الواحدات المُعرّفة في المواصفة [http://www.w3.org/TR/css3-values Values and Units Level 3].
 
*<code>at-error</code>: تشير إلى أنّ التعليمة ‎<code>[[Sass/@ rules|@error]]</code> مدعومة.
 
*<code>custom-property</code>: تشير إلى أن مواصفات الخاصِّيَّات المُخصّصة مدعومة. هذا يعني أن الخاصيات المُخصّصة تُحلّل بشكل ثابت (parsed statically) مع معالجة الاستيفاء مثل [[SassScript]].
==البنية العامة==
<syntaxhighlight lang="sass">
<syntaxhighlight lang="sass">
feature_exists($selectors...)
feature_exists($feature)
</syntaxhighlight>
</syntaxhighlight>
==المعاملات==
===<code>‎$feature</code>===
اسم الميزة التي نريد التحقُّق من وجودها.
==القيم المعادة==
تُعاد القيمة المنطقيَّة <code>TRUE</code>  إذا كانت الميزة مدعومة في النسخة الحاليَّة للغة [[Sass]]. خلا ذلك، تُعاد القيمة <code>FALSE</code>.
==الأخطاء والاستثناءات==
سيُرمى الخطأ <code>ArgumentError</code> إن لم يكن <code>‎$feature</code> سلسلة نصيةً.
==أمثلة==
مثال عن استخدام الدالة <code>feature_exists()‎</code>. لمعرفة إن كانت الميزة ‎<code>[[Sass/@ rules#.E2.80.8E.40error|@error]]</code> متوافرةً أم لا؛ لاحظ استخدام ‎<code>[[Sass/control directives#.E2.80.8E.40if|@if]]</code> مع الدالة <code>[[Sass/unitless|unitless()‎]]</code>:<syntaxhighlight lang="sass">
@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
=== <code>‎$selectors</code> ===
  @if not unitless($x) and not unitless($y) {
المحددات التي ستُشعّب. يجب أن يُمرّر محدد واحد على الأقل. يمكن أن تكون كل واحدة منها عبارة عن سلسلة نصية أو قائمة من السلاسل النصية أو قائمة من قوائم السلاسل النصية كما تمت إعادتها من قبل <code>[[Sass/SassScript#.D8.A7.D9.84.D8.B1.D9.85.D8.B2 .26 .D9.81.D9.8A SassScript|&]]</code>.
    position: relative; left: $x; top: $y;
  }
}


== القيم المعادة ==
.selector {
قائمة من قوائم السلاسل النصية التي تمثل نتيجة تشعيب المحددات <code>‎$selectors</code>. وتكون بنفس التنسيق الذي يكون لمحدّد تعيده <code>[[Sass/SassScript#.D8.A7.D9.84.D8.B1.D9.85.D8.B2 .26 .D9.81.D9.8A SassScript|&]]</code>.
  @include adjust-location(1em, 2em); // لن يظهر خطأ
}


== أمثلة ==
.selector_2 {
مثال عن استخدام الدالة <code>feature_exists()</code>:<syntaxhighlight lang="sass">
  @include adjust-location(1, 2em); // سيظهر خطأ إن كان مصرّف اللغة يدعم إظهار الأخطاء من طرف المستخدم
selector-nest(".foo", ".bar", ".baz") // .foo .bar .baz
}
selector-nest(".a .foo", ".b .bar") // .a .foo .b .bar
</syntaxhighlight>ستخرج الشيفرة السابقة الناتج الآتي عند تصريفها بمصرّف Sass حديث:<syntaxhighlight lang="text">
selector-nest(".foo", "&.bar") // .foo.bar
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.
</syntaxhighlight>وستخرج الناتج الآتي عند تصريفها بمصرِّف Sass قديم:<syntaxhighlight lang="css">
.selector {
  position: relative;
  left: 1em;
  top: 2em; }
</syntaxhighlight>
</syntaxhighlight>
 
==انظر أيضًا==
== انظر أيضًا ==
*الدالة <code>[[Sass/function exists|function_exists()]]</code>‎: تتحقَّق ما إذا كانت دالة ما موجودة.
* الدالة <code>[[Sass/selector append|selector_append()]]</code>‎: تضيف المحددات إلى بعضها بعضًا دون مسافات بينها.
*الدالة <code>[[Sass/global variable exists|global_variable_exists()]]</code>‎: تتحقَّق ما إذا كان متغيِّر ما موجود في النطاق العام.
* الدالة <code>[[Sass/selector extend|selector_extend()]]</code>‎: توسّع المحدد.
*الدالة <code>[[Sass/variable exists|variable_exists()]]</code>‎: تتحقَّق ما إذا كان متغير ما موجود في النطاق الحالي.
* الدالة <code>[[Sass/selector unify|selector_unify()]]</code>‎: تُوحّد محددَيْن.
*الدالة <code>[[Sass/mixin exists|mixin_exists()]]</code>‎: تتحقَّق ما إذا كان مخلوط ما موجودًا.
 
==مصادر==
== مصادر ==
*[https://sass-lang.com/documentation/Sass/Script/Functions.html#feature_exists-instance_method قسم الدالة feature_exists في صفحة الدوال في توثيق Sass الرسمي].
* [https://sass-lang.com/documentation/Sass/Script/Functions.html#feature_exists-instance_method قسم الدالة feature_exists في صفحة الدوال في توثيق Sass الرسمي.]
[[تصنيف:Sass|{{SUBPAGENAME}}]]
[[تصنيف:Sass]]
[[تصنيف: Sass Function|{{SUBPAGENAME}}]]
[[تصنيف: Sass Function]]

المراجعة الحالية بتاريخ 07:01، 20 مايو 2018

تتحقَّق الدالة 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()‎: تتحقَّق ما إذا كان مخلوط ما موجودًا.

مصادر