Returns spell icon from API static-data ChampionSpell object in img
HTML TAG.

@param StaticChampionSpellDto $championSpell
@param array                  $attributes

@return Html
@throws SettingsException
976696
public static function getChampionSpellIconO(StaticChampionSpellDto $championSpell, array $attributes = [] ): Html
	{
		return self::getSpellIcon($championSpell->id, $attributes);
	}
12788
public static function getStaticChampionById( string $champion_id, string $locale = 'en_US', string $version = null ) : array
	{
		$data = self::getStaticChampions($locale, $version);
		if (isset($data['data'][$champion_id]) == false)
			throw new ArgumentException('Champion with given ID was not found.', 404);

		return $data['data'][$champion_id];
	}
462525
private static function getTemplateAttributeFakeJs(array $options, DOMElement $dom)
    {
        $expressionsByLine = self::getVueAttributeExpressions($options['attributePrefixes'], $dom);

        if (empty($expressionsByLine)) {
            return '';
        }

        $maxLines = max(array_keys($expressionsByLine));
        $fakeJs = '';

        for ($line = 1; $line <= $maxLines; $line++) {
            if (isset($expressionsByLine[$line])) {
                $fakeJs .= implode("; ", $expressionsByLine[$line]);
            }
            $fakeJs .= "\n";
        }

        return $fakeJs;
    }
1268647
public static function getFavicon($url, $attributes = [])
    {
        $attr = trim(self::arrayToString($attributes));

        if (!empty($attr)) {
            $attr = " $attr";
        }

        return sprintf(
            '<img src="https://www.google.com/s2/favicons?domain=%s"%s/>',
            urlencode($url),
            $attr
        );
    }
465963
public function apply( \DOMText $textnode, Settings $settings, $is_title = false ) {
		if ( empty( $settings['singleCharacterWordSpacing'] ) ) {
			return;
		}

		// Add $next_character and $previous_character for context.
		$previous_character = DOM::get_prev_chr( $textnode );
		$next_character     = DOM::get_next_chr( $textnode );
		$node_data          = "{$previous_character}{$textnode->data}{$next_character}";
		$f                  = Strings::functions( $node_data );

		// Replace spaces.
		$node_data = \preg_replace( self::REGEX . $f['u'], '$1$2' . U::NO_BREAK_SPACE, $node_data );

		// If we have adjacent characters remove them from the text.
		$textnode->data = self::remove_adjacent_characters( $node_data, $f['strlen'], $f['substr'], $f['strlen']( $previous_character ), $f['strlen']( $next_character ) );
	}
725996
public static function getRuneIcon( int $rune_id, array $attributes = [] ): Html
	{
		self::checkInit();

		$attrs = array_merge([ 'alt'   => $rune_id ], self::getSetting(self::SET_CUSTOM_IMG_ATTRS, []), $attributes);
		$attrs['class'] = implode(' ', [
			self::getSetting(self::SET_DEFAULT_CLASS),
			self::getSetting(self::SET_RUNE_ICON_CLASS),
			@self::getSetting(self::SET_CUSTOM_IMG_ATTRS, [])['class'],
			@$attributes['class'],
		]);
		$attrs['src'] = self::getRuneIconUrl($rune_id);

		return Html::el('img', $attrs);
	}
594548
public static function getChampionLoadingO( StaticChampionDto $champion, int $skin = 0, array $attributes = [] ): Html
	{
		return self::getChampionLoading($champion->id, $skin, $attributes);
	}
1097861
public static function getChampionSplashUrl( string $champion_name, int $skin = 0 ): string
	{
		return self::getSetting(self::SET_ENDPOINT) . "img/champion/splash/{$champion_name}_{$skin}.jpg";
	}
290378
public function createElement(array $attributes)
    {
        $meta = $this->ownerDocument->createElement('meta');

        $name = null;
        foreach ($attributes as $key => $value) {
            $meta->setAttribute($key, $value);
        }

        $this[] = $meta;

        return $meta;
    }
841072
protected function textParsedownElement(array $attributes, $reset = true)
    {
        $text = empty($attributes['title']) ? empty($attributes['alt']) ? $this->get('filename') : $attributes['alt'] : $attributes['title'];

        $element = [
            'name' => 'p',
            'attributes' => $attributes,
            'text' => $text
        ];

        if ($reset) {
            $this->reset();
        }

        return $element;
    }
976061
public function getChampion($championId)
	{
		if ( ! isset($this->info['champions'][$championId]))
		{
			return null;
		}

		return $this->info['champions'][$championId];
	}
1137808
public function getCurrentSpellAttack(): ?SpellAttack
    {
        $spellAttackWithAddition = $this->getSpellAttackWithAddition();
        if (!$spellAttackWithAddition) {
            return null;
        }

        return new SpellAttack(
            [
                $spellAttackWithAddition->getValue()
                + (int)$this->getParameterBonusFromModifiers(ModifierMutableSpellParameterCode::SPELL_ATTACK),
                0 // no addition
            ],
            Tables::getIt()
        );
    }
771321
public static function getSpellIconUrl( string $spell_name ): string
	{
		self::checkInit();
		return self::getSetting(self::SET_ENDPOINT) . self::getSetting(self::SET_VERSION) . "/img/spell/{$spell_name}.png";
	}
95872
public static function getChampionSplash( string $champion_name, int $skin = 0, array $attributes = [] ): Html
	{
		$attrs = array_merge([ 'alt' => $champion_name ], self::getSetting(self::SET_CUSTOM_IMG_ATTRS, []), $attributes);
		$attrs['class'] = implode(' ', [
			self::getSetting(self::SET_DEFAULT_CLASS),
			self::getSetting(self::SET_CHAMP_SPLASH_CLASS),
			@self::getSetting(self::SET_CUSTOM_IMG_ATTRS, [])['class'],
			@$attributes['class'],
		]);
		$attrs['src'] = self::getChampionSplashUrl($champion_name, $skin);

		return Html::el('img', $attrs);
	}
320018
protected function getHTMLNodeInner($node, $xml, $settings)
    {
        $node->setAttribute('data-no-glow', 'no-glow');
        $node->appendChild($inner = $xml->createElement('div', 'item-icon-inner'));
        $inner->appendChild(
            $icon = $xml->createElement('div', 'app-icon' . (empty($this->innerClass) ? '' : ' ' . $this->innerClass))
        );
        $icon->appendChild(
            $xml->createElement(
                'div',
                [
                    'class' => 'image',
                    'style' => $this->icon ? 'background-image:url(\'' . $this->icon->getUrl() . '\')' : ''
                ]
            )
        );
        $icon->appendChild($xml->createElement('div', ['class' => 'background']));
        $this->applyLinkToNode($xml, $icon, $settings);
        $inner->appendChild($xml->createElement('div', ['class' => 'title', 'text' => $this->title]));
    }
652873
public static function getRuneIconO( StaticRuneDto $rune, array $attributes = [] ): Html
	{
		return self::getRuneIcon($rune->id, $attributes);
	}
443794
public static function getReforgedRuneIconO( StaticReforgedRuneDto $rune, array $attributes = [] ): Html
	{
		$attrs = array_merge([ 'alt'   => $rune->name ], self::getSetting(self::SET_CUSTOM_IMG_ATTRS, []), $attributes);
		$attrs['class'] = implode(' ', [
			self::getSetting(self::SET_DEFAULT_CLASS),
			self::getSetting(self::SET_REFORGED_RUNE_ICON_CLASS),
			@self::getSetting(self::SET_CUSTOM_IMG_ATTRS, [])['class'],
			@$attributes['class'],
		]);
		$attrs['src'] = self::getReforgedRuneIconUrlO($rune);

		return Html::el('img', $attrs);
	}