xref: /plugin/combo/ComboStrap/TagAttribute/Hero.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1*04fd306cSNickeau<?php
2*04fd306cSNickeau
3*04fd306cSNickeaunamespace ComboStrap\TagAttribute;
4*04fd306cSNickeau
5*04fd306cSNickeauuse ComboStrap\ExceptionBadArgument;
6*04fd306cSNickeauuse ComboStrap\LogUtility;
7*04fd306cSNickeauuse ComboStrap\PluginUtility;
8*04fd306cSNickeauuse ComboStrap\TagAttributes;
9*04fd306cSNickeau
10*04fd306cSNickeauclass Hero
11*04fd306cSNickeau{
12*04fd306cSNickeau
13*04fd306cSNickeau    const COMPONENT_NAME = "hero";
14*04fd306cSNickeau    const CANONICAL = self::COMPONENT_NAME;
15*04fd306cSNickeau    const ATTRIBUTE = self::COMPONENT_NAME;
16*04fd306cSNickeau
17*04fd306cSNickeau
18*04fd306cSNickeau    public static function processHero(TagAttributes &$attributes)
19*04fd306cSNickeau    {
20*04fd306cSNickeau
21*04fd306cSNickeau        $hero = $attributes->getValueAndRemove(self::ATTRIBUTE);
22*04fd306cSNickeau        if ($hero === null) {
23*04fd306cSNickeau            return;
24*04fd306cSNickeau        }
25*04fd306cSNickeau        try {
26*04fd306cSNickeau            switch ($hero) {
27*04fd306cSNickeau                case "sm":
28*04fd306cSNickeau                case "small":
29*04fd306cSNickeau                    $attributes->addClassName(self::COMPONENT_NAME . "-sm");
30*04fd306cSNickeau                    break;
31*04fd306cSNickeau                case "md":
32*04fd306cSNickeau                case "medium":
33*04fd306cSNickeau                    $attributes->addClassName(self::COMPONENT_NAME . "-md");
34*04fd306cSNickeau                    break;
35*04fd306cSNickeau                case "lg":
36*04fd306cSNickeau                case "large":
37*04fd306cSNickeau                    $attributes->addClassName(self::COMPONENT_NAME . "-lg");
38*04fd306cSNickeau                    break;
39*04fd306cSNickeau                case "xl":
40*04fd306cSNickeau                case "extra-large":
41*04fd306cSNickeau                    $attributes->addClassName(self::COMPONENT_NAME . "-xl");
42*04fd306cSNickeau                    break;
43*04fd306cSNickeau                case "none":
44*04fd306cSNickeau                    return;
45*04fd306cSNickeau                default:
46*04fd306cSNickeau                    throw new ExceptionBadArgument("The hero value ($hero) is unknown and was not applied");
47*04fd306cSNickeau            }
48*04fd306cSNickeau            /**
49*04fd306cSNickeau             * We could have used bootstrap specific class such as
50*04fd306cSNickeau             * `px-4 py-2`
51*04fd306cSNickeau             * but the unit scale goes only to 5 (=3 rem) and
52*04fd306cSNickeau             * the `xl` hero goes to 4 rem
53*04fd306cSNickeau             */
54*04fd306cSNickeau            PluginUtility::getSnippetManager()->attachCssInternalStyleSheet(self::COMPONENT_NAME);
55*04fd306cSNickeau        } catch (ExceptionBadArgument $e) {
56*04fd306cSNickeau            LogUtility::error($e->getMessage(), self::CANONICAL);
57*04fd306cSNickeau        }
58*04fd306cSNickeau
59*04fd306cSNickeau    }
60*04fd306cSNickeau}
61