1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeau 4*04fd306cSNickeaunamespace ComboStrap\TagAttribute; 5*04fd306cSNickeau 6*04fd306cSNickeau 7*04fd306cSNickeauuse ComboStrap\LogUtility; 8*04fd306cSNickeauuse ComboStrap\TagAttributes; 9*04fd306cSNickeau 10*04fd306cSNickeauclass Boldness 11*04fd306cSNickeau{ 12*04fd306cSNickeau 13*04fd306cSNickeau const BOLDNESS_ATTRIBUTE = "boldness"; 14*04fd306cSNickeau const CANONICAL = self::BOLDNESS_ATTRIBUTE; 15*04fd306cSNickeau 16*04fd306cSNickeau const BOOLEAN_ATTRIBUTES = ["bold", "bolder"]; 17*04fd306cSNickeau 18*04fd306cSNickeau /** 19*04fd306cSNickeau * 20*04fd306cSNickeau * https://getbootstrap.com/docs/5.0/utilities/text/#font-weight-and-italics 21*04fd306cSNickeau * @param TagAttributes $tagAttributes 22*04fd306cSNickeau */ 23*04fd306cSNickeau public static function processBoldnessAttribute(TagAttributes &$tagAttributes) 24*04fd306cSNickeau { 25*04fd306cSNickeau 26*04fd306cSNickeau if ($tagAttributes->hasComponentAttribute(self::BOLDNESS_ATTRIBUTE)) { 27*04fd306cSNickeau $value = $tagAttributes->getValueAndRemove(self::BOLDNESS_ATTRIBUTE); 28*04fd306cSNickeau } 29*04fd306cSNickeau 30*04fd306cSNickeau foreach(Boldness::BOOLEAN_ATTRIBUTES as $booleanAttribute) { 31*04fd306cSNickeau if ($tagAttributes->hasComponentAttribute($booleanAttribute)) { 32*04fd306cSNickeau $tagAttributes->removeComponentAttribute($booleanAttribute); 33*04fd306cSNickeau $value = $booleanAttribute; 34*04fd306cSNickeau } 35*04fd306cSNickeau } 36*04fd306cSNickeau 37*04fd306cSNickeau if (!empty($value)) { 38*04fd306cSNickeau if (in_array($value, ["bolder", "lighter"])) { 39*04fd306cSNickeau $tagAttributes->addClassName("fw-$value"); 40*04fd306cSNickeau } else { 41*04fd306cSNickeau $value = Boldness::toNumericValue($value); 42*04fd306cSNickeau $tagAttributes->addStyleDeclarationIfNotSet("font-weight", $value); 43*04fd306cSNickeau } 44*04fd306cSNickeau } 45*04fd306cSNickeau 46*04fd306cSNickeau 47*04fd306cSNickeau } 48*04fd306cSNickeau 49*04fd306cSNickeau private static function toNumericValue($value) 50*04fd306cSNickeau { 51*04fd306cSNickeau if (is_numeric($value)) { 52*04fd306cSNickeau return $value; 53*04fd306cSNickeau } 54*04fd306cSNickeau $value = strtolower($value); 55*04fd306cSNickeau switch ($value) { 56*04fd306cSNickeau case 'thin': 57*04fd306cSNickeau return 100; 58*04fd306cSNickeau case 'extra-light': 59*04fd306cSNickeau return 200; 60*04fd306cSNickeau case 'light': 61*04fd306cSNickeau return 300; 62*04fd306cSNickeau case 'normal': 63*04fd306cSNickeau return 400; 64*04fd306cSNickeau case 'medium': 65*04fd306cSNickeau return 500; 66*04fd306cSNickeau case 'semi-bold': 67*04fd306cSNickeau return 600; 68*04fd306cSNickeau case 'bold': 69*04fd306cSNickeau return 700; 70*04fd306cSNickeau case 'extra-bold': 71*04fd306cSNickeau return 800; 72*04fd306cSNickeau case 'black': 73*04fd306cSNickeau return 900; 74*04fd306cSNickeau case 'extra-black': 75*04fd306cSNickeau return 950; 76*04fd306cSNickeau default: 77*04fd306cSNickeau LogUtility::msg("The boldness name ($value) is unknown. The attribute was not applied", LogUtility::LVL_MSG_ERROR, self::CANONICAL); 78*04fd306cSNickeau return 400; 79*04fd306cSNickeau } 80*04fd306cSNickeau 81*04fd306cSNickeau } 82*04fd306cSNickeau 83*04fd306cSNickeau 84*04fd306cSNickeau} 85