Full Code of rmrevin/yii2-fontawesome for AI

master 4a1c6b60773f cached
33 files
100.1 KB
31.4k tokens
58 symbols
1 requests
Download .txt
Repository: rmrevin/yii2-fontawesome
Branch: master
Commit: 4a1c6b60773f
Files: 33
Total size: 100.1 KB

Directory structure:
gitextract__3qv48g6/

├── .gitignore
├── .scrutinizer.yml
├── .travis.yml
├── AssetBundle.php
├── CHANGELOG.md
├── CdnFreeAssetBundle.php
├── CdnProAssetBundle.php
├── FA.php
├── FAB.php
├── FAL.php
├── FAR.php
├── FAS.php
├── FontAwesome.php
├── LICENSE
├── NpmFreeAssetBundle.php
├── NpmProAssetBundle.php
├── README.md
├── bin/
│   ├── .gitignore
│   └── convertNames.sh
├── cdn/
│   └── AssetBundle.php
├── component/
│   ├── Icon.php
│   ├── Stack.php
│   └── UnorderedList.php
├── composer.json
├── phpunit.xml.dist
└── tests/
    └── unit/
        ├── .gitignore
        ├── TestCase.php
        ├── bootstrap.php
        ├── config/
        │   ├── .gitignore
        │   └── main.php
        ├── fontawesome/
        │   └── MainTest.php
        └── runtime/
            ├── .gitignore
            └── assets/
                └── .gitignore

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
/.idea
/vendor
/coverage
/node_modules
/package.json
/package.lock
/yarn.lock


================================================
FILE: .scrutinizer.yml
================================================
build:
    environment:
        php:
            version: 7.1
    dependencies:
        before:
            - composer global require "fxp/composer-asset-plugin:~1.1"
    tests:
        override:
            - phpunit
imports:
    - php
checks:
    php:
        code_rating: true
        duplication: true
tools:
    php_sim: false
    php_cpd: false
    php_pdepend: true
    php_analyzer: true
    php_changetracking: true
    external_code_coverage:
        timeout: 2100 # Timeout in seconds.
filter:
    excluded_paths:
        - tests/*
        - vendor/*


================================================
FILE: .travis.yml
================================================
dist: trusty

language: php

php:
  - 7.1
  - 7.2
  - 7.3

matrix:
  fast_finish: true

sudo: false

cache:
  directories:
    - vendor

install:
  - travis_retry composer self-update && composer --version
  - travis_retry composer global require "fxp/composer-asset-plugin:~1.1"
  - export PATH="$HOME/.composer/vendor/bin:$PATH"
  - travis_retry composer install --prefer-dist --no-interaction

script:
  - ./vendor/bin/phpunit --verbose --coverage-clover=coverage/coverage.clover

after_script:
  - travis_retry wget https://scrutinizer-ci.com/ocular.phar
  - php ocular.phar code-coverage:upload --format=php-clover coverage/coverage.clover


================================================
FILE: AssetBundle.php
================================================
<?php
/**
 * AssetBundle.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome;

/**
 * Class AssetBundle
 * @package rmrevin\yii\fontawesome
 * @deprecated use rmrevin\yii\fontawesome\CdnFreeAssetBundle
 */
class AssetBundle extends CdnFreeAssetBundle
{
}


================================================
FILE: CHANGELOG.md
================================================
2021-01-13 - 3.7.0
------------------
* `Font Awesome` updated to version `5.15.1`.

2020-06-27 - 3.6.0
------------------
* `Font Awesome` updated to version `5.13.0`.

2019-09-20 - 3.5.0
------------------
* `Font Awesome` updated to version `5.11.0`.

2019-07-07 - 3.4.0
------------------
* `Font Awesome` updated to version `5.9.0`.

2019-02-12 - 3.3.1
------------------
* Update tests.

2019-02-12 - 3.3.0
------------------
* `Font Awesome` updated to version `5.7.1`.
* Added new size constants.

2018-09-17 - 3.2.0
------------------
* `Font Awesome` updated to version `5.3.1`.
* Add text stacking function.
* Refactoring of asset bundles.
* Remove bower-asset from `composer.json`
* These classes are now deprecated:
    * `rmrevin\yii\fontawesome\AssetBundle`
    * `rmrevin\yii\fontawesome\cdn\AssetBundle`
* Update readme.
* Update tests.

2018-07-11 - 3.1.0
------------------
* Remove static font awesome bundle and add composer `bower-asset/font-awesome`.
* `Font Awesome` updated to version `5.1`.

2018-04-01 - 3.0.0
-------------------
* `Font Awesome` updated to version `5.0`.
* These class are now deprecated:
    * `rmrevin\yii\fontawesome\FA` use `...\fontawesome\FAB`,  `...\fontawesome\FAL`,  `...\fontawesome\FAR`, `...\fontawesome\FAS`.
* These deprecated properties and methods are now removed:
    * `rmrevin\yii\fontawesome\component\Icon::$defaultTag`
    * `rmrevin\yii\fontawesome\component\Icon::$tag`
    * `rmrevin\yii\fontawesome\component\Icon::tag()`
    * `rmrevin\yii\fontawesome\component\Icon::render()`
    * `rmrevin\yii\fontawesome\component\Stack::$defaultTag`
    * `rmrevin\yii\fontawesome\component\Stack::$tag`
    * `rmrevin\yii\fontawesome\component\Stack::tag()`
    * `rmrevin\yii\fontawesome\component\Stack::render()`
    * `rmrevin\yii\fontawesome\component\UnorderedList::$defaultTag`
    * `rmrevin\yii\fontawesome\component\UnorderedList::$tag`
    * `rmrevin\yii\fontawesome\component\UnorderedList::tag()`
    * `rmrevin\yii\fontawesome\component\UnorderedList::render()`
    * `rmrevin\yii\fontawesome\FA::getConstants()`

2017-01-11 - 2.17.1
-------------------
* Downgrade minimum php to `5.4`

2016-10-25 - 2.17.0
-------------------
* `Font Awesome` updated to version `4.7`.
* Update minimum php to `5.5`
* These deprecated classes are now removed:
    * `rmrevin\yii\fontawesome\CDNAssetBundle`
* These deprecated methods are now removed:
    * `rmrevin\yii\fontawesome\component\Icon::ul`
    * `rmrevin\yii\fontawesome\component\Icon::fixed_width`
    * `rmrevin\yii\fontawesome\component\Icon::pull_left`
    * `rmrevin\yii\fontawesome\component\Icon::pull_right`
* In method `rmrevin\yii\fontawesome\component\UnorderedList::item` changed interface (removed `$icon` param).
* These directories are now deprecated:
    * `./assets`
* These fields and methods are now deprecated:
    * `rmrevin\yii\fontawesome\component\Icon::$defaultTag`
    * `rmrevin\yii\fontawesome\component\Icon::$tag`
    * `rmrevin\yii\fontawesome\component\Icon::tag()`
    * `rmrevin\yii\fontawesome\component\Icon::render()`
    * `rmrevin\yii\fontawesome\component\Stack::$defaultTag`
    * `rmrevin\yii\fontawesome\component\Stack::$tag`
    * `rmrevin\yii\fontawesome\component\Stack::tag()`
    * `rmrevin\yii\fontawesome\component\Stack::render()`
    * `rmrevin\yii\fontawesome\component\UnorderedList::$defaultTag`
    * `rmrevin\yii\fontawesome\component\UnorderedList::$tag`
    * `rmrevin\yii\fontawesome\component\UnorderedList::tag()`
    * `rmrevin\yii\fontawesome\component\UnorderedList::render()`
* Refactoring class `rmrevin\yii\fontawesome\component\UnorderedList`.

2016-08-31 - 2.16.1
-------------------
* Fix options in li item.
* Update readme.

2016-08-31 - 2.16.0
-------------------
* Enh #22: Added FA:ul() method.
* Refactoring.

2016-08-19 - 2.15.2
-------------------
* Update icon name constants to version 4.6.3.

2016-05-29 - 2.15.1
-------------------
* Added option to skip the icon.
* Added option to change the order of icons in the stack.

2016-05-22 - 2.15.0
-------------------
* Remove bower package.

2016-04-16 - 2.14.0
-------------------
* `Font Awesome` updated to version `4.6`.

2015-11-26 - 2.13.0
-------------------
* `Font Awesome` updated to version `4.5`.

2015-11-20 - 2.12.2
-------------------
* Add shortcuts methods `i()` for `FA::icon()` and `FA::s()` for `FA::stack()`
* Update readme

2015-11-09 - 2.12.1
-------------------
* Variable `FA::$cssPrefix` transferred to the class `FontAwesome`.
* Refactoring.
* Update tests.

2015-08-15 - 2.12.0
-------------------
* `Font Awesome` updated to version `4.4`.

2015-06-29 - 2.11.0
-------------------
* Added the ability to change the tag for icons.

2015-06-23 - 2.10.3
-------------------
* Change `cnd` url to cloudflare.

2015-06-19 - 2.10.2
-------------------
* `CDNAssetBundle` is now deprecated. Use `rmrevin\yii\fontawesome\cdn\AssetBundle`.
* Refactoring.

2015-05-09 - 2.10.1
-------------------
* Fix bug in tests.

2015-05-09 - 2.10.0
-------------------
* Add CDN asset bundle `CDNAssetBundle`.
* Composer package `fortawesome/font-awesome` replaced on bower package `bower-asset/fontawesome`.
* Adding warning messages in deprecated methods.
* Add changelog.
* Refactoring.
* Update readme.

2015-04-28 - 2.9.2
------------------
* Method `icon()->fixed_width()` is deprecated. Use instead `icon()->fixedWidth()`.
* Method `icon()->pull_left()` is deprecated. Use instead `icon()->pullLeft()`.
* Method `icon()->pull_right()` is deprecated. Use instead `icon()->pullRight()`.
* Updated tests.

2015-04-08 - 2.9.1
------------------
* Fix asset bundle publish bug on windows.

2015-03-31 - 2.9.0
------------------
* In asset bundle added `init` method for filtering publising assets.

2015-03-17 - 2.8.2
------------------
* Refactoring.

2015-03-16 - 2.8.1
------------------
* Update readme.

2015-03-16 - 2.8.0
------------------
* In class `FA` add static property `cssPrefix` for customizing css class.
* Refactoring.
* Update readme.

2015-02-08 - 2.7.1
------------------
* Update travisCI config.

2015-01-26 - 2.7.0
------------------
* `Font Awesome` updated to version `4.3`.
* Update icons constants list.
* Update readme.

Until 2015-03-04
----------------
* Implementation of extension.


================================================
FILE: CdnFreeAssetBundle.php
================================================
<?php
/**
 * CdnFreeAssetBundle.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome;

/**
 * Class CdnFreeAssetBundle
 * @package rmrevin\yii\fontawesome
 */
class CdnFreeAssetBundle extends \yii\web\AssetBundle
{
    /**
     * @inherit
     */
    public $css = [
        'https://use.fontawesome.com/releases/v5.15.1/css/all.css',
    ];
}


================================================
FILE: CdnProAssetBundle.php
================================================
<?php
/**
 * CdnProAssetBundle.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome;

/**
 * Class CdnProAssetBundle
 * @package rmrevin\yii\fontawesome
 */
class CdnProAssetBundle extends \yii\web\AssetBundle
{
    /**
     * @inherit
     */
    public $css = [
        'https://pro.fontawesome.com/releases/v5.15.1/css/all.css',
    ];
}


================================================
FILE: FA.php
================================================
<?php
/**
 * FA.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome;

/**
 * Class FA
 * @package rmrevin\yii\fontawesome
 * @deprecated use FAB FAS FAR FAL classes
 */
class FA extends FontAwesome
{
    public static $cssPrefix = 'far';
}


================================================
FILE: FAB.php
================================================
<?php
/**
 * FAB.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome;

/**
 * Class FAB
 * @package rmrevin\yii\fontawesome
 */
class FAB extends FontAwesome
{
    public static $cssPrefix = 'fab';
}


================================================
FILE: FAL.php
================================================
<?php
/**
 * FAL.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome;

/**
 * Class FAL
 * @package rmrevin\yii\fontawesome
 */
class FAL extends FontAwesome
{
    public static $cssPrefix = 'fal';
}


================================================
FILE: FAR.php
================================================
<?php
/**
 * FAR.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome;

/**
 * Class FAR
 * @package rmrevin\yii\fontawesome
 */
class FAR extends FontAwesome
{
    public static $cssPrefix = 'far';
}


================================================
FILE: FAS.php
================================================
<?php
/**
 * FAS.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome;

/**
 * Class FAS
 * @package rmrevin\yii\fontawesome
 */
class FAS extends FontAwesome
{
    public static $cssPrefix = 'fas';
}


================================================
FILE: FontAwesome.php
================================================
<?php
/**
 * FontAwesome.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome;

use rmrevin\yii\fontawesome\component;

/**
 * Class FA
 * @package rmrevin\yii\fontawesome
 */
class FontAwesome
{
    /**
     * CSS class prefix
     * @var string
     */
    public static $cssPrefix = 'fa';

    /**
     * CSS class prefix
     * @var string
     */
    public static $basePrefix = 'fa';

    /**
     * Creates an `Icon` component that can be used to FontAwesome html icon
     *
     * @param string $name
     * @param array $options
     * @return component\Icon
     */
    public static function icon($name, $options = [])
    {
        return new component\Icon(static::$cssPrefix, $name, $options);
    }

    /**
     * Shortcut for `icon()` method
     * @param string $name
     * @param array $options
     * @return component\Icon
     * @see icon()
     *
     */
    public static function i($name, $options = [])
    {
        return static::icon($name, $options);
    }

    /**
     * Creates an `Stack` component that can be used to FontAwesome html icon
     *
     * @param array $options
     * @return component\Stack
     */
    public static function stack($options = [])
    {
        return new component\Stack(static::$cssPrefix, $options);
    }

    /**
     * Shortcut for `stack()` method
     * @param array $options
     * @return component\Stack
     * @see stack()
     *
     */
    public static function s($options = [])
    {
        return static::stack($options);
    }

    /**
     * @param array $options
     * @return component\UnorderedList
     */
    public static function ul($options = [])
    {
        return new component\UnorderedList(static::$cssPrefix, $options);
    }

    /**
     * Size values
     * @see component\Icon::size
     */
    const SIZE_LARGE = 'lg';
    const SIZE_LG = 'lg';
    const SIZE_SMALL = 'sm';
    const SIZE_SM = 'sm';
    const SIZE_EXTRA_SMALL = 'xs';
    const SIZE_XS = 'xs';
    const SIZE_2X = '2x';
    const SIZE_3X = '3x';
    const SIZE_4X = '4x';
    const SIZE_5X = '5x';
    const SIZE_6X = '6x';
    const SIZE_7X = '7x';
    const SIZE_8X = '8x';
    const SIZE_9X = '9x';
    const SIZE_10X = '10x';

    /**
     * Rotate values
     * @see component\Icon::rotate
     */
    const ROTATE_90 = '90';
    const ROTATE_180 = '180';
    const ROTATE_270 = '270';

    /**
     * Flip values
     * @see component\Icon::flip
     */
    const FLIP_HORIZONTAL = 'horizontal';
    const FLIP_VERTICAL = 'vertical';

    /**
     * Icons name
     */
    const _500PX = '500px';
    const _ACCESSIBLE_ICON = 'accessible-icon';
    const _ACCUSOFT = 'accusoft';
    const _ACQUISITIONS_INCORPORATED = 'acquisitions-incorporated';
    const _AD = 'ad';
    const _ADDRESS_BOOK = 'address-book';
    const _ADDRESS_CARD = 'address-card';
    const _ADJUST = 'adjust';
    const _ADN = 'adn';
    const _ADOBE = 'adobe';
    const _ADVERSAL = 'adversal';
    const _AFFILIATETHEME = 'affiliatetheme';
    const _AIR_FRESHENER = 'air-freshener';
    const _AIRBNB = 'airbnb';
    const _ALGOLIA = 'algolia';
    const _ALIGN_CENTER = 'align-center';
    const _ALIGN_JUSTIFY = 'align-justify';
    const _ALIGN_LEFT = 'align-left';
    const _ALIGN_RIGHT = 'align-right';
    const _ALIPAY = 'alipay';
    const _ALLERGIES = 'allergies';
    const _AMAZON = 'amazon';
    const _AMAZON_PAY = 'amazon-pay';
    const _AMBULANCE = 'ambulance';
    const _AMERICAN_SIGN_LANGUAGE_INTERPRETING = 'american-sign-language-interpreting';
    const _AMILIA = 'amilia';
    const _ANCHOR = 'anchor';
    const _ANDROID = 'android';
    const _ANGELLIST = 'angellist';
    const _ANGLE_DOUBLE_DOWN = 'angle-double-down';
    const _ANGLE_DOUBLE_LEFT = 'angle-double-left';
    const _ANGLE_DOUBLE_RIGHT = 'angle-double-right';
    const _ANGLE_DOUBLE_UP = 'angle-double-up';
    const _ANGLE_DOWN = 'angle-down';
    const _ANGLE_LEFT = 'angle-left';
    const _ANGLE_RIGHT = 'angle-right';
    const _ANGLE_UP = 'angle-up';
    const _ANGRY = 'angry';
    const _ANGRYCREATIVE = 'angrycreative';
    const _ANGULAR = 'angular';
    const _ANKH = 'ankh';
    const _APP_STORE = 'app-store';
    const _APP_STORE_IOS = 'app-store-ios';
    const _APPER = 'apper';
    const _APPLE = 'apple';
    const _APPLE_ALT = 'apple-alt';
    const _APPLE_PAY = 'apple-pay';
    const _ARCHIVE = 'archive';
    const _ARCHWAY = 'archway';
    const _ARROW_ALT_CIRCLE_DOWN = 'arrow-alt-circle-down';
    const _ARROW_ALT_CIRCLE_LEFT = 'arrow-alt-circle-left';
    const _ARROW_ALT_CIRCLE_RIGHT = 'arrow-alt-circle-right';
    const _ARROW_ALT_CIRCLE_UP = 'arrow-alt-circle-up';
    const _ARROW_CIRCLE_DOWN = 'arrow-circle-down';
    const _ARROW_CIRCLE_LEFT = 'arrow-circle-left';
    const _ARROW_CIRCLE_RIGHT = 'arrow-circle-right';
    const _ARROW_CIRCLE_UP = 'arrow-circle-up';
    const _ARROW_DOWN = 'arrow-down';
    const _ARROW_LEFT = 'arrow-left';
    const _ARROW_RIGHT = 'arrow-right';
    const _ARROW_UP = 'arrow-up';
    const _ARROWS_ALT = 'arrows-alt';
    const _ARROWS_ALT_H = 'arrows-alt-h';
    const _ARROWS_ALT_V = 'arrows-alt-v';
    const _ARTSTATION = 'artstation';
    const _ASSISTIVE_LISTENING_SYSTEMS = 'assistive-listening-systems';
    const _ASTERISK = 'asterisk';
    const _ASYMMETRIK = 'asymmetrik';
    const _AT = 'at';
    const _ATLAS = 'atlas';
    const _ATLASSIAN = 'atlassian';
    const _ATOM = 'atom';
    const _AUDIBLE = 'audible';
    const _AUDIO_DESCRIPTION = 'audio-description';
    const _AUTOPREFIXER = 'autoprefixer';
    const _AVIANEX = 'avianex';
    const _AVIATO = 'aviato';
    const _AWARD = 'award';
    const _AWS = 'aws';
    const _BABY = 'baby';
    const _BABY_CARRIAGE = 'baby-carriage';
    const _BACKSPACE = 'backspace';
    const _BACKWARD = 'backward';
    const _BACON = 'bacon';
    const _BALANCE_SCALE = 'balance-scale';
    const _BALANCE_SCALE_LEFT = 'balance-scale-left';
    const _BALANCE_SCALE_RIGHT = 'balance-scale-right';
    const _BAN = 'ban';
    const _BAND_AID = 'band-aid';
    const _BANDCAMP = 'bandcamp';
    const _BARCODE = 'barcode';
    const _BARS = 'bars';
    const _BASEBALL_BALL = 'baseball-ball';
    const _BASKETBALL_BALL = 'basketball-ball';
    const _BATH = 'bath';
    const _BATTERY_EMPTY = 'battery-empty';
    const _BATTERY_FULL = 'battery-full';
    const _BATTERY_HALF = 'battery-half';
    const _BATTERY_QUARTER = 'battery-quarter';
    const _BATTERY_THREE_QUARTERS = 'battery-three-quarters';
    const _BATTLE_NET = 'battle-net';
    const _BED = 'bed';
    const _BEER = 'beer';
    const _BEHANCE = 'behance';
    const _BEHANCE_SQUARE = 'behance-square';
    const _BELL = 'bell';
    const _BELL_SLASH = 'bell-slash';
    const _BEZIER_CURVE = 'bezier-curve';
    const _BIBLE = 'bible';
    const _BICYCLE = 'bicycle';
    const _BIKING = 'biking';
    const _BIMOBJECT = 'bimobject';
    const _BINOCULARS = 'binoculars';
    const _BIOHAZARD = 'biohazard';
    const _BIRTHDAY_CAKE = 'birthday-cake';
    const _BITBUCKET = 'bitbucket';
    const _BITCOIN = 'bitcoin';
    const _BITY = 'bity';
    const _BLACK_TIE = 'black-tie';
    const _BLACKBERRY = 'blackberry';
    const _BLENDER = 'blender';
    const _BLENDER_PHONE = 'blender-phone';
    const _BLIND = 'blind';
    const _BLOG = 'blog';
    const _BLOGGER = 'blogger';
    const _BLOGGER_B = 'blogger-b';
    const _BLUETOOTH = 'bluetooth';
    const _BLUETOOTH_B = 'bluetooth-b';
    const _BOLD = 'bold';
    const _BOLT = 'bolt';
    const _BOMB = 'bomb';
    const _BONE = 'bone';
    const _BONG = 'bong';
    const _BOOK = 'book';
    const _BOOK_DEAD = 'book-dead';
    const _BOOK_MEDICAL = 'book-medical';
    const _BOOK_OPEN = 'book-open';
    const _BOOK_READER = 'book-reader';
    const _BOOKMARK = 'bookmark';
    const _BOOTSTRAP = 'bootstrap';
    const _BORDER_ALL = 'border-all';
    const _BORDER_NONE = 'border-none';
    const _BORDER_STYLE = 'border-style';
    const _BOWLING_BALL = 'bowling-ball';
    const _BOX = 'box';
    const _BOX_OPEN = 'box-open';
    const _BOXES = 'boxes';
    const _BRAILLE = 'braille';
    const _BRAIN = 'brain';
    const _BREAD_SLICE = 'bread-slice';
    const _BRIEFCASE = 'briefcase';
    const _BRIEFCASE_MEDICAL = 'briefcase-medical';
    const _BROADCAST_TOWER = 'broadcast-tower';
    const _BROOM = 'broom';
    const _BRUSH = 'brush';
    const _BTC = 'btc';
    const _BUFFER = 'buffer';
    const _BUG = 'bug';
    const _BUILDING = 'building';
    const _BULLHORN = 'bullhorn';
    const _BULLSEYE = 'bullseye';
    const _BURN = 'burn';
    const _BUROMOBELEXPERTE = 'buromobelexperte';
    const _BUS = 'bus';
    const _BUS_ALT = 'bus-alt';
    const _BUSINESS_TIME = 'business-time';
    const _BUY_N_LARGE = 'buy-n-large';
    const _BUYSELLADS = 'buysellads';
    const _CALCULATOR = 'calculator';
    const _CALENDAR = 'calendar';
    const _CALENDAR_ALT = 'calendar-alt';
    const _CALENDAR_CHECK = 'calendar-check';
    const _CALENDAR_DAY = 'calendar-day';
    const _CALENDAR_MINUS = 'calendar-minus';
    const _CALENDAR_PLUS = 'calendar-plus';
    const _CALENDAR_TIMES = 'calendar-times';
    const _CALENDAR_WEEK = 'calendar-week';
    const _CAMERA = 'camera';
    const _CAMERA_RETRO = 'camera-retro';
    const _CAMPGROUND = 'campground';
    const _CANADIAN_MAPLE_LEAF = 'canadian-maple-leaf';
    const _CANDY_CANE = 'candy-cane';
    const _CANNABIS = 'cannabis';
    const _CAPSULES = 'capsules';
    const _CAR = 'car';
    const _CAR_ALT = 'car-alt';
    const _CAR_BATTERY = 'car-battery';
    const _CAR_CRASH = 'car-crash';
    const _CAR_SIDE = 'car-side';
    const _CARET_DOWN = 'caret-down';
    const _CARET_LEFT = 'caret-left';
    const _CARET_RIGHT = 'caret-right';
    const _CARET_SQUARE_DOWN = 'caret-square-down';
    const _CARET_SQUARE_LEFT = 'caret-square-left';
    const _CARET_SQUARE_RIGHT = 'caret-square-right';
    const _CARET_SQUARE_UP = 'caret-square-up';
    const _CARET_UP = 'caret-up';
    const _CARROT = 'carrot';
    const _CART_ARROW_DOWN = 'cart-arrow-down';
    const _CART_PLUS = 'cart-plus';
    const _CASH_REGISTER = 'cash-register';
    const _CAT = 'cat';
    const _CC_AMAZON_PAY = 'cc-amazon-pay';
    const _CC_AMEX = 'cc-amex';
    const _CC_APPLE_PAY = 'cc-apple-pay';
    const _CC_DINERS_CLUB = 'cc-diners-club';
    const _CC_DISCOVER = 'cc-discover';
    const _CC_JCB = 'cc-jcb';
    const _CC_MASTERCARD = 'cc-mastercard';
    const _CC_PAYPAL = 'cc-paypal';
    const _CC_STRIPE = 'cc-stripe';
    const _CC_VISA = 'cc-visa';
    const _CENTERCODE = 'centercode';
    const _CENTOS = 'centos';
    const _CERTIFICATE = 'certificate';
    const _CHAIR = 'chair';
    const _CHALKBOARD = 'chalkboard';
    const _CHALKBOARD_TEACHER = 'chalkboard-teacher';
    const _CHARGING_STATION = 'charging-station';
    const _CHART_AREA = 'chart-area';
    const _CHART_BAR = 'chart-bar';
    const _CHART_LINE = 'chart-line';
    const _CHART_PIE = 'chart-pie';
    const _CHECK = 'check';
    const _CHECK_CIRCLE = 'check-circle';
    const _CHECK_DOUBLE = 'check-double';
    const _CHECK_SQUARE = 'check-square';
    const _CHEESE = 'cheese';
    const _CHESS = 'chess';
    const _CHESS_BISHOP = 'chess-bishop';
    const _CHESS_BOARD = 'chess-board';
    const _CHESS_KING = 'chess-king';
    const _CHESS_KNIGHT = 'chess-knight';
    const _CHESS_PAWN = 'chess-pawn';
    const _CHESS_QUEEN = 'chess-queen';
    const _CHESS_ROOK = 'chess-rook';
    const _CHEVRON_CIRCLE_DOWN = 'chevron-circle-down';
    const _CHEVRON_CIRCLE_LEFT = 'chevron-circle-left';
    const _CHEVRON_CIRCLE_RIGHT = 'chevron-circle-right';
    const _CHEVRON_CIRCLE_UP = 'chevron-circle-up';
    const _CHEVRON_DOWN = 'chevron-down';
    const _CHEVRON_LEFT = 'chevron-left';
    const _CHEVRON_RIGHT = 'chevron-right';
    const _CHEVRON_UP = 'chevron-up';
    const _CHILD = 'child';
    const _CHROME = 'chrome';
    const _CHROMECAST = 'chromecast';
    const _CHURCH = 'church';
    const _CIRCLE = 'circle';
    const _CIRCLE_NOTCH = 'circle-notch';
    const _CITY = 'city';
    const _CLINIC_MEDICAL = 'clinic-medical';
    const _CLIPBOARD = 'clipboard';
    const _CLIPBOARD_CHECK = 'clipboard-check';
    const _CLIPBOARD_LIST = 'clipboard-list';
    const _CLOCK = 'clock';
    const _CLONE = 'clone';
    const _CLOSED_CAPTIONING = 'closed-captioning';
    const _CLOUD = 'cloud';
    const _CLOUD_DOWNLOAD_ALT = 'cloud-download-alt';
    const _CLOUD_MEATBALL = 'cloud-meatball';
    const _CLOUD_MOON = 'cloud-moon';
    const _CLOUD_MOON_RAIN = 'cloud-moon-rain';
    const _CLOUD_RAIN = 'cloud-rain';
    const _CLOUD_SHOWERS_HEAVY = 'cloud-showers-heavy';
    const _CLOUD_SUN = 'cloud-sun';
    const _CLOUD_SUN_RAIN = 'cloud-sun-rain';
    const _CLOUD_UPLOAD_ALT = 'cloud-upload-alt';
    const _CLOUDSCALE = 'cloudscale';
    const _CLOUDSMITH = 'cloudsmith';
    const _CLOUDVERSIFY = 'cloudversify';
    const _COCKTAIL = 'cocktail';
    const _CODE = 'code';
    const _CODE_BRANCH = 'code-branch';
    const _CODEPEN = 'codepen';
    const _CODIEPIE = 'codiepie';
    const _COFFEE = 'coffee';
    const _COG = 'cog';
    const _COGS = 'cogs';
    const _COINS = 'coins';
    const _COLUMNS = 'columns';
    const _COMMENT = 'comment';
    const _COMMENT_ALT = 'comment-alt';
    const _COMMENT_DOLLAR = 'comment-dollar';
    const _COMMENT_DOTS = 'comment-dots';
    const _COMMENT_MEDICAL = 'comment-medical';
    const _COMMENT_SLASH = 'comment-slash';
    const _COMMENTS = 'comments';
    const _COMMENTS_DOLLAR = 'comments-dollar';
    const _COMPACT_DISC = 'compact-disc';
    const _COMPASS = 'compass';
    const _COMPRESS = 'compress';
    const _COMPRESS_ARROWS_ALT = 'compress-arrows-alt';
    const _CONCIERGE_BELL = 'concierge-bell';
    const _CONFLUENCE = 'confluence';
    const _CONNECTDEVELOP = 'connectdevelop';
    const _CONTAO = 'contao';
    const _COOKIE = 'cookie';
    const _COOKIE_BITE = 'cookie-bite';
    const _COPY = 'copy';
    const _COPYRIGHT = 'copyright';
    const _COTTON_BUREAU = 'cotton-bureau';
    const _COUCH = 'couch';
    const _CPANEL = 'cpanel';
    const _CREATIVE_COMMONS = 'creative-commons';
    const _CREATIVE_COMMONS_BY = 'creative-commons-by';
    const _CREATIVE_COMMONS_NC = 'creative-commons-nc';
    const _CREATIVE_COMMONS_NC_EU = 'creative-commons-nc-eu';
    const _CREATIVE_COMMONS_NC_JP = 'creative-commons-nc-jp';
    const _CREATIVE_COMMONS_ND = 'creative-commons-nd';
    const _CREATIVE_COMMONS_PD = 'creative-commons-pd';
    const _CREATIVE_COMMONS_PD_ALT = 'creative-commons-pd-alt';
    const _CREATIVE_COMMONS_REMIX = 'creative-commons-remix';
    const _CREATIVE_COMMONS_SA = 'creative-commons-sa';
    const _CREATIVE_COMMONS_SAMPLING = 'creative-commons-sampling';
    const _CREATIVE_COMMONS_SAMPLING_PLUS = 'creative-commons-sampling-plus';
    const _CREATIVE_COMMONS_SHARE = 'creative-commons-share';
    const _CREATIVE_COMMONS_ZERO = 'creative-commons-zero';
    const _CREDIT_CARD = 'credit-card';
    const _CRITICAL_ROLE = 'critical-role';
    const _CROP = 'crop';
    const _CROP_ALT = 'crop-alt';
    const _CROSS = 'cross';
    const _CROSSHAIRS = 'crosshairs';
    const _CROW = 'crow';
    const _CROWN = 'crown';
    const _CRUTCH = 'crutch';
    const _CSS3 = 'css3';
    const _CSS3_ALT = 'css3-alt';
    const _CUBE = 'cube';
    const _CUBES = 'cubes';
    const _CUT = 'cut';
    const _CUTTLEFISH = 'cuttlefish';
    const _D_AND_D = 'd-and-d';
    const _D_AND_D_BEYOND = 'd-and-d-beyond';
    const _DASHCUBE = 'dashcube';
    const _DATABASE = 'database';
    const _DEAF = 'deaf';
    const _DELICIOUS = 'delicious';
    const _DEMOCRAT = 'democrat';
    const _DEPLOYDOG = 'deploydog';
    const _DESKPRO = 'deskpro';
    const _DESKTOP = 'desktop';
    const _DEV = 'dev';
    const _DEVIANTART = 'deviantart';
    const _DHARMACHAKRA = 'dharmachakra';
    const _DHL = 'dhl';
    const _DIAGNOSES = 'diagnoses';
    const _DIASPORA = 'diaspora';
    const _DICE = 'dice';
    const _DICE_D20 = 'dice-d20';
    const _DICE_D6 = 'dice-d6';
    const _DICE_FIVE = 'dice-five';
    const _DICE_FOUR = 'dice-four';
    const _DICE_ONE = 'dice-one';
    const _DICE_SIX = 'dice-six';
    const _DICE_THREE = 'dice-three';
    const _DICE_TWO = 'dice-two';
    const _DIGG = 'digg';
    const _DIGITAL_OCEAN = 'digital-ocean';
    const _DIGITAL_TACHOGRAPH = 'digital-tachograph';
    const _DIRECTIONS = 'directions';
    const _DISCORD = 'discord';
    const _DISCOURSE = 'discourse';
    const _DIVIDE = 'divide';
    const _DIZZY = 'dizzy';
    const _DNA = 'dna';
    const _DOCHUB = 'dochub';
    const _DOCKER = 'docker';
    const _DOG = 'dog';
    const _DOLLAR_SIGN = 'dollar-sign';
    const _DOLLY = 'dolly';
    const _DOLLY_FLATBED = 'dolly-flatbed';
    const _DONATE = 'donate';
    const _DOOR_CLOSED = 'door-closed';
    const _DOOR_OPEN = 'door-open';
    const _DOT_CIRCLE = 'dot-circle';
    const _DOVE = 'dove';
    const _DOWNLOAD = 'download';
    const _DRAFT2DIGITAL = 'draft2digital';
    const _DRAFTING_COMPASS = 'drafting-compass';
    const _DRAGON = 'dragon';
    const _DRAW_POLYGON = 'draw-polygon';
    const _DRIBBBLE = 'dribbble';
    const _DRIBBBLE_SQUARE = 'dribbble-square';
    const _DROPBOX = 'dropbox';
    const _DRUM = 'drum';
    const _DRUM_STEELPAN = 'drum-steelpan';
    const _DRUMSTICK_BITE = 'drumstick-bite';
    const _DRUPAL = 'drupal';
    const _DUMBBELL = 'dumbbell';
    const _DUMPSTER = 'dumpster';
    const _DUMPSTER_FIRE = 'dumpster-fire';
    const _DUNGEON = 'dungeon';
    const _DYALOG = 'dyalog';
    const _EARLYBIRDS = 'earlybirds';
    const _EBAY = 'ebay';
    const _EDGE = 'edge';
    const _EDIT = 'edit';
    const _EGG = 'egg';
    const _EJECT = 'eject';
    const _ELEMENTOR = 'elementor';
    const _ELLIPSIS_H = 'ellipsis-h';
    const _ELLIPSIS_V = 'ellipsis-v';
    const _ELLO = 'ello';
    const _EMBER = 'ember';
    const _EMPIRE = 'empire';
    const _ENVELOPE = 'envelope';
    const _ENVELOPE_OPEN = 'envelope-open';
    const _ENVELOPE_OPEN_TEXT = 'envelope-open-text';
    const _ENVELOPE_SQUARE = 'envelope-square';
    const _ENVIRA = 'envira';
    const _EQUALS = 'equals';
    const _ERASER = 'eraser';
    const _ERLANG = 'erlang';
    const _ETHEREUM = 'ethereum';
    const _ETHERNET = 'ethernet';
    const _ETSY = 'etsy';
    const _EURO_SIGN = 'euro-sign';
    const _EVERNOTE = 'evernote';
    const _EXCHANGE_ALT = 'exchange-alt';
    const _EXCLAMATION = 'exclamation';
    const _EXCLAMATION_CIRCLE = 'exclamation-circle';
    const _EXCLAMATION_TRIANGLE = 'exclamation-triangle';
    const _EXPAND = 'expand';
    const _EXPAND_ARROWS_ALT = 'expand-arrows-alt';
    const _EXPEDITEDSSL = 'expeditedssl';
    const _EXTERNAL_LINK_ALT = 'external-link-alt';
    const _EXTERNAL_LINK_SQUARE_ALT = 'external-link-square-alt';
    const _EYE = 'eye';
    const _EYE_DROPPER = 'eye-dropper';
    const _EYE_SLASH = 'eye-slash';
    const _FACEBOOK = 'facebook';
    const _FACEBOOK_F = 'facebook-f';
    const _FACEBOOK_MESSENGER = 'facebook-messenger';
    const _FACEBOOK_SQUARE = 'facebook-square';
    const _FAN = 'fan';
    const _FANTASY_FLIGHT_GAMES = 'fantasy-flight-games';
    const _FAST_BACKWARD = 'fast-backward';
    const _FAST_FORWARD = 'fast-forward';
    const _FAX = 'fax';
    const _FEATHER = 'feather';
    const _FEATHER_ALT = 'feather-alt';
    const _FEDEX = 'fedex';
    const _FEDORA = 'fedora';
    const _FEMALE = 'female';
    const _FIGHTER_JET = 'fighter-jet';
    const _FIGMA = 'figma';
    const _FILE = 'file';
    const _FILE_ALT = 'file-alt';
    const _FILE_ARCHIVE = 'file-archive';
    const _FILE_AUDIO = 'file-audio';
    const _FILE_CODE = 'file-code';
    const _FILE_CONTRACT = 'file-contract';
    const _FILE_CSV = 'file-csv';
    const _FILE_DOWNLOAD = 'file-download';
    const _FILE_EXCEL = 'file-excel';
    const _FILE_EXPORT = 'file-export';
    const _FILE_IMAGE = 'file-image';
    const _FILE_IMPORT = 'file-import';
    const _FILE_INVOICE = 'file-invoice';
    const _FILE_INVOICE_DOLLAR = 'file-invoice-dollar';
    const _FILE_MEDICAL = 'file-medical';
    const _FILE_MEDICAL_ALT = 'file-medical-alt';
    const _FILE_PDF = 'file-pdf';
    const _FILE_POWERPOINT = 'file-powerpoint';
    const _FILE_PRESCRIPTION = 'file-prescription';
    const _FILE_SIGNATURE = 'file-signature';
    const _FILE_UPLOAD = 'file-upload';
    const _FILE_VIDEO = 'file-video';
    const _FILE_WORD = 'file-word';
    const _FILL = 'fill';
    const _FILL_DRIP = 'fill-drip';
    const _FILM = 'film';
    const _FILTER = 'filter';
    const _FINGERPRINT = 'fingerprint';
    const _FIRE = 'fire';
    const _FIRE_ALT = 'fire-alt';
    const _FIRE_EXTINGUISHER = 'fire-extinguisher';
    const _FIREFOX = 'firefox';
    const _FIRST_AID = 'first-aid';
    const _FIRST_ORDER = 'first-order';
    const _FIRST_ORDER_ALT = 'first-order-alt';
    const _FIRSTDRAFT = 'firstdraft';
    const _FISH = 'fish';
    const _FIST_RAISED = 'fist-raised';
    const _FLAG = 'flag';
    const _FLAG_CHECKERED = 'flag-checkered';
    const _FLAG_USA = 'flag-usa';
    const _FLASK = 'flask';
    const _FLICKR = 'flickr';
    const _FLIPBOARD = 'flipboard';
    const _FLUSHED = 'flushed';
    const _FLY = 'fly';
    const _FOLDER = 'folder';
    const _FOLDER_MINUS = 'folder-minus';
    const _FOLDER_OPEN = 'folder-open';
    const _FOLDER_PLUS = 'folder-plus';
    const _FONT = 'font';
    const _FONT_AWESOME = 'font-awesome';
    const _FONT_AWESOME_ALT = 'font-awesome-alt';
    const _FONT_AWESOME_FLAG = 'font-awesome-flag';
    const _FONT_AWESOME_LOGO_FULL = 'font-awesome-logo-full';
    const _FONTICONS = 'fonticons';
    const _FONTICONS_FI = 'fonticons-fi';
    const _FOOTBALL_BALL = 'football-ball';
    const _FORT_AWESOME = 'fort-awesome';
    const _FORT_AWESOME_ALT = 'fort-awesome-alt';
    const _FORUMBEE = 'forumbee';
    const _FORWARD = 'forward';
    const _FOURSQUARE = 'foursquare';
    const _FREE_CODE_CAMP = 'free-code-camp';
    const _FREEBSD = 'freebsd';
    const _FROG = 'frog';
    const _FROWN = 'frown';
    const _FROWN_OPEN = 'frown-open';
    const _FULCRUM = 'fulcrum';
    const _FUNNEL_DOLLAR = 'funnel-dollar';
    const _FUTBOL = 'futbol';
    const _GALACTIC_REPUBLIC = 'galactic-republic';
    const _GALACTIC_SENATE = 'galactic-senate';
    const _GAMEPAD = 'gamepad';
    const _GAS_PUMP = 'gas-pump';
    const _GAVEL = 'gavel';
    const _GEM = 'gem';
    const _GENDERLESS = 'genderless';
    const _GET_POCKET = 'get-pocket';
    const _GG = 'gg';
    const _GG_CIRCLE = 'gg-circle';
    const _GHOST = 'ghost';
    const _GIFT = 'gift';
    const _GIFTS = 'gifts';
    const _GIT = 'git';
    const _GIT_ALT = 'git-alt';
    const _GIT_SQUARE = 'git-square';
    const _GITHUB = 'github';
    const _GITHUB_ALT = 'github-alt';
    const _GITHUB_SQUARE = 'github-square';
    const _GITKRAKEN = 'gitkraken';
    const _GITLAB = 'gitlab';
    const _GITTER = 'gitter';
    const _GLASS_CHEERS = 'glass-cheers';
    const _GLASS_MARTINI = 'glass-martini';
    const _GLASS_MARTINI_ALT = 'glass-martini-alt';
    const _GLASS_WHISKEY = 'glass-whiskey';
    const _GLASSES = 'glasses';
    const _GLIDE = 'glide';
    const _GLIDE_G = 'glide-g';
    const _GLOBE = 'globe';
    const _GLOBE_AFRICA = 'globe-africa';
    const _GLOBE_AMERICAS = 'globe-americas';
    const _GLOBE_ASIA = 'globe-asia';
    const _GLOBE_EUROPE = 'globe-europe';
    const _GOFORE = 'gofore';
    const _GOLF_BALL = 'golf-ball';
    const _GOODREADS = 'goodreads';
    const _GOODREADS_G = 'goodreads-g';
    const _GOOGLE = 'google';
    const _GOOGLE_DRIVE = 'google-drive';
    const _GOOGLE_PLAY = 'google-play';
    const _GOOGLE_PLUS = 'google-plus';
    const _GOOGLE_PLUS_G = 'google-plus-g';
    const _GOOGLE_PLUS_SQUARE = 'google-plus-square';
    const _GOOGLE_WALLET = 'google-wallet';
    const _GOPURAM = 'gopuram';
    const _GRADUATION_CAP = 'graduation-cap';
    const _GRATIPAY = 'gratipay';
    const _GRAV = 'grav';
    const _GREATER_THAN = 'greater-than';
    const _GREATER_THAN_EQUAL = 'greater-than-equal';
    const _GRIMACE = 'grimace';
    const _GRIN = 'grin';
    const _GRIN_ALT = 'grin-alt';
    const _GRIN_BEAM = 'grin-beam';
    const _GRIN_BEAM_SWEAT = 'grin-beam-sweat';
    const _GRIN_HEARTS = 'grin-hearts';
    const _GRIN_SQUINT = 'grin-squint';
    const _GRIN_SQUINT_TEARS = 'grin-squint-tears';
    const _GRIN_STARS = 'grin-stars';
    const _GRIN_TEARS = 'grin-tears';
    const _GRIN_TONGUE = 'grin-tongue';
    const _GRIN_TONGUE_SQUINT = 'grin-tongue-squint';
    const _GRIN_TONGUE_WINK = 'grin-tongue-wink';
    const _GRIN_WINK = 'grin-wink';
    const _GRIP_HORIZONTAL = 'grip-horizontal';
    const _GRIP_LINES = 'grip-lines';
    const _GRIP_LINES_VERTICAL = 'grip-lines-vertical';
    const _GRIP_VERTICAL = 'grip-vertical';
    const _GRIPFIRE = 'gripfire';
    const _GRUNT = 'grunt';
    const _GUITAR = 'guitar';
    const _GULP = 'gulp';
    const _H_SQUARE = 'h-square';
    const _HACKER_NEWS = 'hacker-news';
    const _HACKER_NEWS_SQUARE = 'hacker-news-square';
    const _HACKERRANK = 'hackerrank';
    const _HAMBURGER = 'hamburger';
    const _HAMMER = 'hammer';
    const _HAMSA = 'hamsa';
    const _HAND_HOLDING = 'hand-holding';
    const _HAND_HOLDING_HEART = 'hand-holding-heart';
    const _HAND_HOLDING_USD = 'hand-holding-usd';
    const _HAND_LIZARD = 'hand-lizard';
    const _HAND_MIDDLE_FINGER = 'hand-middle-finger';
    const _HAND_PAPER = 'hand-paper';
    const _HAND_PEACE = 'hand-peace';
    const _HAND_POINT_DOWN = 'hand-point-down';
    const _HAND_POINT_LEFT = 'hand-point-left';
    const _HAND_POINT_RIGHT = 'hand-point-right';
    const _HAND_POINT_UP = 'hand-point-up';
    const _HAND_POINTER = 'hand-pointer';
    const _HAND_ROCK = 'hand-rock';
    const _HAND_SCISSORS = 'hand-scissors';
    const _HAND_SPOCK = 'hand-spock';
    const _HANDS = 'hands';
    const _HANDS_HELPING = 'hands-helping';
    const _HANDSHAKE = 'handshake';
    const _HANUKIAH = 'hanukiah';
    const _HARD_HAT = 'hard-hat';
    const _HASHTAG = 'hashtag';
    const _HAT_COWBOY = 'hat-cowboy';
    const _HAT_COWBOY_SIDE = 'hat-cowboy-side';
    const _HAT_WIZARD = 'hat-wizard';
    const _HAYKAL = 'haykal';
    const _HDD = 'hdd';
    const _HEADING = 'heading';
    const _HEADPHONES = 'headphones';
    const _HEADPHONES_ALT = 'headphones-alt';
    const _HEADSET = 'headset';
    const _HEART = 'heart';
    const _HEART_BROKEN = 'heart-broken';
    const _HEARTBEAT = 'heartbeat';
    const _HELICOPTER = 'helicopter';
    const _HIGHLIGHTER = 'highlighter';
    const _HIKING = 'hiking';
    const _HIPPO = 'hippo';
    const _HIPS = 'hips';
    const _HIRE_A_HELPER = 'hire-a-helper';
    const _HISTORY = 'history';
    const _HOCKEY_PUCK = 'hockey-puck';
    const _HOLLY_BERRY = 'holly-berry';
    const _HOME = 'home';
    const _HOOLI = 'hooli';
    const _HORNBILL = 'hornbill';
    const _HORSE = 'horse';
    const _HORSE_HEAD = 'horse-head';
    const _HOSPITAL = 'hospital';
    const _HOSPITAL_ALT = 'hospital-alt';
    const _HOSPITAL_SYMBOL = 'hospital-symbol';
    const _HOT_TUB = 'hot-tub';
    const _HOTDOG = 'hotdog';
    const _HOTEL = 'hotel';
    const _HOTJAR = 'hotjar';
    const _HOURGLASS = 'hourglass';
    const _HOURGLASS_END = 'hourglass-end';
    const _HOURGLASS_HALF = 'hourglass-half';
    const _HOURGLASS_START = 'hourglass-start';
    const _HOUSE_DAMAGE = 'house-damage';
    const _HOUZZ = 'houzz';
    const _HRYVNIA = 'hryvnia';
    const _HTML5 = 'html5';
    const _HUBSPOT = 'hubspot';
    const _I_CURSOR = 'i-cursor';
    const _ICE_CREAM = 'ice-cream';
    const _ICICLES = 'icicles';
    const _ICONS = 'icons';
    const _ID_BADGE = 'id-badge';
    const _ID_CARD = 'id-card';
    const _ID_CARD_ALT = 'id-card-alt';
    const _IGLOO = 'igloo';
    const _IMAGE = 'image';
    const _IMAGES = 'images';
    const _IMDB = 'imdb';
    const _INBOX = 'inbox';
    const _INDENT = 'indent';
    const _INDUSTRY = 'industry';
    const _INFINITY = 'infinity';
    const _INFO = 'info';
    const _INFO_CIRCLE = 'info-circle';
    const _INSTAGRAM = 'instagram';
    const _INTERCOM = 'intercom';
    const _INTERNET_EXPLORER = 'internet-explorer';
    const _INVISION = 'invision';
    const _IOXHOST = 'ioxhost';
    const _ITALIC = 'italic';
    const _ITCH_IO = 'itch-io';
    const _ITUNES = 'itunes';
    const _ITUNES_NOTE = 'itunes-note';
    const _JAVA = 'java';
    const _JEDI = 'jedi';
    const _JEDI_ORDER = 'jedi-order';
    const _JENKINS = 'jenkins';
    const _JIRA = 'jira';
    const _JOGET = 'joget';
    const _JOINT = 'joint';
    const _JOOMLA = 'joomla';
    const _JOURNAL_WHILLS = 'journal-whills';
    const _JS = 'js';
    const _JS_SQUARE = 'js-square';
    const _JSFIDDLE = 'jsfiddle';
    const _KAABA = 'kaaba';
    const _KAGGLE = 'kaggle';
    const _KEY = 'key';
    const _KEYBASE = 'keybase';
    const _KEYBOARD = 'keyboard';
    const _KEYCDN = 'keycdn';
    const _KHANDA = 'khanda';
    const _KICKSTARTER = 'kickstarter';
    const _KICKSTARTER_K = 'kickstarter-k';
    const _KISS = 'kiss';
    const _KISS_BEAM = 'kiss-beam';
    const _KISS_WINK_HEART = 'kiss-wink-heart';
    const _KIWI_BIRD = 'kiwi-bird';
    const _KORVUE = 'korvue';
    const _LANDMARK = 'landmark';
    const _LANGUAGE = 'language';
    const _LAPTOP = 'laptop';
    const _LAPTOP_CODE = 'laptop-code';
    const _LAPTOP_MEDICAL = 'laptop-medical';
    const _LARAVEL = 'laravel';
    const _LASTFM = 'lastfm';
    const _LASTFM_SQUARE = 'lastfm-square';
    const _LAUGH = 'laugh';
    const _LAUGH_BEAM = 'laugh-beam';
    const _LAUGH_SQUINT = 'laugh-squint';
    const _LAUGH_WINK = 'laugh-wink';
    const _LAYER_GROUP = 'layer-group';
    const _LEAF = 'leaf';
    const _LEANPUB = 'leanpub';
    const _LEMON = 'lemon';
    const _LESS = 'less';
    const _LESS_THAN = 'less-than';
    const _LESS_THAN_EQUAL = 'less-than-equal';
    const _LEVEL_DOWN_ALT = 'level-down-alt';
    const _LEVEL_UP_ALT = 'level-up-alt';
    const _LIFE_RING = 'life-ring';
    const _LIGHTBULB = 'lightbulb';
    const _LINE = 'line';
    const _LINK = 'link';
    const _LINKEDIN = 'linkedin';
    const _LINKEDIN_IN = 'linkedin-in';
    const _LINODE = 'linode';
    const _LINUX = 'linux';
    const _LIRA_SIGN = 'lira-sign';
    const _LIST = 'list';
    const _LIST_ALT = 'list-alt';
    const _LIST_OL = 'list-ol';
    const _LIST_UL = 'list-ul';
    const _LOCATION_ARROW = 'location-arrow';
    const _LOCK = 'lock';
    const _LOCK_OPEN = 'lock-open';
    const _LONG_ARROW_ALT_DOWN = 'long-arrow-alt-down';
    const _LONG_ARROW_ALT_LEFT = 'long-arrow-alt-left';
    const _LONG_ARROW_ALT_RIGHT = 'long-arrow-alt-right';
    const _LONG_ARROW_ALT_UP = 'long-arrow-alt-up';
    const _LOW_VISION = 'low-vision';
    const _LUGGAGE_CART = 'luggage-cart';
    const _LYFT = 'lyft';
    const _MAGENTO = 'magento';
    const _MAGIC = 'magic';
    const _MAGNET = 'magnet';
    const _MAIL_BULK = 'mail-bulk';
    const _MAILCHIMP = 'mailchimp';
    const _MALE = 'male';
    const _MANDALORIAN = 'mandalorian';
    const _MAP = 'map';
    const _MAP_MARKED = 'map-marked';
    const _MAP_MARKED_ALT = 'map-marked-alt';
    const _MAP_MARKER = 'map-marker';
    const _MAP_MARKER_ALT = 'map-marker-alt';
    const _MAP_PIN = 'map-pin';
    const _MAP_SIGNS = 'map-signs';
    const _MARKDOWN = 'markdown';
    const _MARKER = 'marker';
    const _MARS = 'mars';
    const _MARS_DOUBLE = 'mars-double';
    const _MARS_STROKE = 'mars-stroke';
    const _MARS_STROKE_H = 'mars-stroke-h';
    const _MARS_STROKE_V = 'mars-stroke-v';
    const _MASK = 'mask';
    const _MASTODON = 'mastodon';
    const _MAXCDN = 'maxcdn';
    const _MDB = 'mdb';
    const _MEDAL = 'medal';
    const _MEDAPPS = 'medapps';
    const _MEDIUM = 'medium';
    const _MEDIUM_M = 'medium-m';
    const _MEDKIT = 'medkit';
    const _MEDRT = 'medrt';
    const _MEETUP = 'meetup';
    const _MEGAPORT = 'megaport';
    const _MEH = 'meh';
    const _MEH_BLANK = 'meh-blank';
    const _MEH_ROLLING_EYES = 'meh-rolling-eyes';
    const _MEMORY = 'memory';
    const _MENDELEY = 'mendeley';
    const _MENORAH = 'menorah';
    const _MERCURY = 'mercury';
    const _METEOR = 'meteor';
    const _MICROCHIP = 'microchip';
    const _MICROPHONE = 'microphone';
    const _MICROPHONE_ALT = 'microphone-alt';
    const _MICROPHONE_ALT_SLASH = 'microphone-alt-slash';
    const _MICROPHONE_SLASH = 'microphone-slash';
    const _MICROSCOPE = 'microscope';
    const _MICROSOFT = 'microsoft';
    const _MINUS = 'minus';
    const _MINUS_CIRCLE = 'minus-circle';
    const _MINUS_SQUARE = 'minus-square';
    const _MITTEN = 'mitten';
    const _MIX = 'mix';
    const _MIXCLOUD = 'mixcloud';
    const _MIZUNI = 'mizuni';
    const _MOBILE = 'mobile';
    const _MOBILE_ALT = 'mobile-alt';
    const _MODX = 'modx';
    const _MONERO = 'monero';
    const _MONEY_BILL = 'money-bill';
    const _MONEY_BILL_ALT = 'money-bill-alt';
    const _MONEY_BILL_WAVE = 'money-bill-wave';
    const _MONEY_BILL_WAVE_ALT = 'money-bill-wave-alt';
    const _MONEY_CHECK = 'money-check';
    const _MONEY_CHECK_ALT = 'money-check-alt';
    const _MONUMENT = 'monument';
    const _MOON = 'moon';
    const _MORTAR_PESTLE = 'mortar-pestle';
    const _MOSQUE = 'mosque';
    const _MOTORCYCLE = 'motorcycle';
    const _MOUNTAIN = 'mountain';
    const _MOUSE = 'mouse';
    const _MOUSE_POINTER = 'mouse-pointer';
    const _MUG_HOT = 'mug-hot';
    const _MUSIC = 'music';
    const _NAPSTER = 'napster';
    const _NEOS = 'neos';
    const _NETWORK_WIRED = 'network-wired';
    const _NEUTER = 'neuter';
    const _NEWSPAPER = 'newspaper';
    const _NIMBLR = 'nimblr';
    const _NODE = 'node';
    const _NODE_JS = 'node-js';
    const _NOT_EQUAL = 'not-equal';
    const _NOTES_MEDICAL = 'notes-medical';
    const _NPM = 'npm';
    const _NS8 = 'ns8';
    const _NUTRITIONIX = 'nutritionix';
    const _OBJECT_GROUP = 'object-group';
    const _OBJECT_UNGROUP = 'object-ungroup';
    const _ODNOKLASSNIKI = 'odnoklassniki';
    const _ODNOKLASSNIKI_SQUARE = 'odnoklassniki-square';
    const _OIL_CAN = 'oil-can';
    const _OLD_REPUBLIC = 'old-republic';
    const _OM = 'om';
    const _OPENCART = 'opencart';
    const _OPENID = 'openid';
    const _OPERA = 'opera';
    const _OPTIN_MONSTER = 'optin-monster';
    const _ORCID = 'orcid';
    const _OSI = 'osi';
    const _OTTER = 'otter';
    const _OUTDENT = 'outdent';
    const _PAGE4 = 'page4';
    const _PAGELINES = 'pagelines';
    const _PAGER = 'pager';
    const _PAINT_BRUSH = 'paint-brush';
    const _PAINT_ROLLER = 'paint-roller';
    const _PALETTE = 'palette';
    const _PALFED = 'palfed';
    const _PALLET = 'pallet';
    const _PAPER_PLANE = 'paper-plane';
    const _PAPERCLIP = 'paperclip';
    const _PARACHUTE_BOX = 'parachute-box';
    const _PARAGRAPH = 'paragraph';
    const _PARKING = 'parking';
    const _PASSPORT = 'passport';
    const _PASTAFARIANISM = 'pastafarianism';
    const _PASTE = 'paste';
    const _PATREON = 'patreon';
    const _PAUSE = 'pause';
    const _PAUSE_CIRCLE = 'pause-circle';
    const _PAW = 'paw';
    const _PAYPAL = 'paypal';
    const _PEACE = 'peace';
    const _PEN = 'pen';
    const _PEN_ALT = 'pen-alt';
    const _PEN_FANCY = 'pen-fancy';
    const _PEN_NIB = 'pen-nib';
    const _PEN_SQUARE = 'pen-square';
    const _PENCIL_ALT = 'pencil-alt';
    const _PENCIL_RULER = 'pencil-ruler';
    const _PENNY_ARCADE = 'penny-arcade';
    const _PEOPLE_CARRY = 'people-carry';
    const _PEPPER_HOT = 'pepper-hot';
    const _PERCENT = 'percent';
    const _PERCENTAGE = 'percentage';
    const _PERISCOPE = 'periscope';
    const _PERSON_BOOTH = 'person-booth';
    const _PHABRICATOR = 'phabricator';
    const _PHOENIX_FRAMEWORK = 'phoenix-framework';
    const _PHOENIX_SQUADRON = 'phoenix-squadron';
    const _PHONE = 'phone';
    const _PHONE_ALT = 'phone-alt';
    const _PHONE_SLASH = 'phone-slash';
    const _PHONE_SQUARE = 'phone-square';
    const _PHONE_SQUARE_ALT = 'phone-square-alt';
    const _PHONE_VOLUME = 'phone-volume';
    const _PHOTO_VIDEO = 'photo-video';
    const _PHP = 'php';
    const _PIED_PIPER = 'pied-piper';
    const _PIED_PIPER_ALT = 'pied-piper-alt';
    const _PIED_PIPER_HAT = 'pied-piper-hat';
    const _PIED_PIPER_PP = 'pied-piper-pp';
    const _PIGGY_BANK = 'piggy-bank';
    const _PILLS = 'pills';
    const _PINTEREST = 'pinterest';
    const _PINTEREST_P = 'pinterest-p';
    const _PINTEREST_SQUARE = 'pinterest-square';
    const _PIZZA_SLICE = 'pizza-slice';
    const _PLACE_OF_WORSHIP = 'place-of-worship';
    const _PLANE = 'plane';
    const _PLANE_ARRIVAL = 'plane-arrival';
    const _PLANE_DEPARTURE = 'plane-departure';
    const _PLAY = 'play';
    const _PLAY_CIRCLE = 'play-circle';
    const _PLAYSTATION = 'playstation';
    const _PLUG = 'plug';
    const _PLUS = 'plus';
    const _PLUS_CIRCLE = 'plus-circle';
    const _PLUS_SQUARE = 'plus-square';
    const _PODCAST = 'podcast';
    const _POLL = 'poll';
    const _POLL_H = 'poll-h';
    const _POO = 'poo';
    const _POO_STORM = 'poo-storm';
    const _POOP = 'poop';
    const _PORTRAIT = 'portrait';
    const _POUND_SIGN = 'pound-sign';
    const _POWER_OFF = 'power-off';
    const _PRAY = 'pray';
    const _PRAYING_HANDS = 'praying-hands';
    const _PRESCRIPTION = 'prescription';
    const _PRESCRIPTION_BOTTLE = 'prescription-bottle';
    const _PRESCRIPTION_BOTTLE_ALT = 'prescription-bottle-alt';
    const _PRINT = 'print';
    const _PROCEDURES = 'procedures';
    const _PRODUCT_HUNT = 'product-hunt';
    const _PROJECT_DIAGRAM = 'project-diagram';
    const _PUSHED = 'pushed';
    const _PUZZLE_PIECE = 'puzzle-piece';
    const _PYTHON = 'python';
    const _QQ = 'qq';
    const _QRCODE = 'qrcode';
    const _QUESTION = 'question';
    const _QUESTION_CIRCLE = 'question-circle';
    const _QUIDDITCH = 'quidditch';
    const _QUINSCAPE = 'quinscape';
    const _QUORA = 'quora';
    const _QUOTE_LEFT = 'quote-left';
    const _QUOTE_RIGHT = 'quote-right';
    const _QURAN = 'quran';
    const _R_PROJECT = 'r-project';
    const _RADIATION = 'radiation';
    const _RADIATION_ALT = 'radiation-alt';
    const _RAINBOW = 'rainbow';
    const _RANDOM = 'random';
    const _RASPBERRY_PI = 'raspberry-pi';
    const _RAVELRY = 'ravelry';
    const _REACT = 'react';
    const _REACTEUROPE = 'reacteurope';
    const _README = 'readme';
    const _REBEL = 'rebel';
    const _RECEIPT = 'receipt';
    const _RECORD_VINYL = 'record-vinyl';
    const _RECYCLE = 'recycle';
    const _RED_RIVER = 'red-river';
    const _REDDIT = 'reddit';
    const _REDDIT_ALIEN = 'reddit-alien';
    const _REDDIT_SQUARE = 'reddit-square';
    const _REDHAT = 'redhat';
    const _REDO = 'redo';
    const _REDO_ALT = 'redo-alt';
    const _REGISTERED = 'registered';
    const _REMOVE_FORMAT = 'remove-format';
    const _RENREN = 'renren';
    const _REPLY = 'reply';
    const _REPLY_ALL = 'reply-all';
    const _REPLYD = 'replyd';
    const _REPUBLICAN = 'republican';
    const _RESEARCHGATE = 'researchgate';
    const _RESOLVING = 'resolving';
    const _RESTROOM = 'restroom';
    const _RETWEET = 'retweet';
    const _REV = 'rev';
    const _RIBBON = 'ribbon';
    const _RING = 'ring';
    const _ROAD = 'road';
    const _ROBOT = 'robot';
    const _ROCKET = 'rocket';
    const _ROCKETCHAT = 'rocketchat';
    const _ROCKRMS = 'rockrms';
    const _ROUTE = 'route';
    const _RSS = 'rss';
    const _RSS_SQUARE = 'rss-square';
    const _RUBLE_SIGN = 'ruble-sign';
    const _RULER = 'ruler';
    const _RULER_COMBINED = 'ruler-combined';
    const _RULER_HORIZONTAL = 'ruler-horizontal';
    const _RULER_VERTICAL = 'ruler-vertical';
    const _RUNNING = 'running';
    const _RUPEE_SIGN = 'rupee-sign';
    const _SAD_CRY = 'sad-cry';
    const _SAD_TEAR = 'sad-tear';
    const _SAFARI = 'safari';
    const _SALESFORCE = 'salesforce';
    const _SASS = 'sass';
    const _SATELLITE = 'satellite';
    const _SATELLITE_DISH = 'satellite-dish';
    const _SAVE = 'save';
    const _SCHLIX = 'schlix';
    const _SCHOOL = 'school';
    const _SCREWDRIVER = 'screwdriver';
    const _SCRIBD = 'scribd';
    const _SCROLL = 'scroll';
    const _SD_CARD = 'sd-card';
    const _SEARCH = 'search';
    const _SEARCH_DOLLAR = 'search-dollar';
    const _SEARCH_LOCATION = 'search-location';
    const _SEARCH_MINUS = 'search-minus';
    const _SEARCH_PLUS = 'search-plus';
    const _SEARCHENGIN = 'searchengin';
    const _SEEDLING = 'seedling';
    const _SELLCAST = 'sellcast';
    const _SELLSY = 'sellsy';
    const _SERVER = 'server';
    const _SERVICESTACK = 'servicestack';
    const _SHAPES = 'shapes';
    const _SHARE = 'share';
    const _SHARE_ALT = 'share-alt';
    const _SHARE_ALT_SQUARE = 'share-alt-square';
    const _SHARE_SQUARE = 'share-square';
    const _SHEKEL_SIGN = 'shekel-sign';
    const _SHIELD_ALT = 'shield-alt';
    const _SHIP = 'ship';
    const _SHIPPING_FAST = 'shipping-fast';
    const _SHIRTSINBULK = 'shirtsinbulk';
    const _SHOE_PRINTS = 'shoe-prints';
    const _SHOPPING_BAG = 'shopping-bag';
    const _SHOPPING_BASKET = 'shopping-basket';
    const _SHOPPING_CART = 'shopping-cart';
    const _SHOPWARE = 'shopware';
    const _SHOWER = 'shower';
    const _SHUTTLE_VAN = 'shuttle-van';
    const _SIGN = 'sign';
    const _SIGN_IN_ALT = 'sign-in-alt';
    const _SIGN_LANGUAGE = 'sign-language';
    const _SIGN_OUT_ALT = 'sign-out-alt';
    const _SIGNAL = 'signal';
    const _SIGNATURE = 'signature';
    const _SIM_CARD = 'sim-card';
    const _SIMPLYBUILT = 'simplybuilt';
    const _SISTRIX = 'sistrix';
    const _SITEMAP = 'sitemap';
    const _SITH = 'sith';
    const _SKATING = 'skating';
    const _SKETCH = 'sketch';
    const _SKIING = 'skiing';
    const _SKIING_NORDIC = 'skiing-nordic';
    const _SKULL = 'skull';
    const _SKULL_CROSSBONES = 'skull-crossbones';
    const _SKYATLAS = 'skyatlas';
    const _SKYPE = 'skype';
    const _SLACK = 'slack';
    const _SLACK_HASH = 'slack-hash';
    const _SLASH = 'slash';
    const _SLEIGH = 'sleigh';
    const _SLIDERS_H = 'sliders-h';
    const _SLIDESHARE = 'slideshare';
    const _SMILE = 'smile';
    const _SMILE_BEAM = 'smile-beam';
    const _SMILE_WINK = 'smile-wink';
    const _SMOG = 'smog';
    const _SMOKING = 'smoking';
    const _SMOKING_BAN = 'smoking-ban';
    const _SMS = 'sms';
    const _SNAPCHAT = 'snapchat';
    const _SNAPCHAT_GHOST = 'snapchat-ghost';
    const _SNAPCHAT_SQUARE = 'snapchat-square';
    const _SNOWBOARDING = 'snowboarding';
    const _SNOWFLAKE = 'snowflake';
    const _SNOWMAN = 'snowman';
    const _SNOWPLOW = 'snowplow';
    const _SOCKS = 'socks';
    const _SOLAR_PANEL = 'solar-panel';
    const _SORT = 'sort';
    const _SORT_ALPHA_DOWN = 'sort-alpha-down';
    const _SORT_ALPHA_DOWN_ALT = 'sort-alpha-down-alt';
    const _SORT_ALPHA_UP = 'sort-alpha-up';
    const _SORT_ALPHA_UP_ALT = 'sort-alpha-up-alt';
    const _SORT_AMOUNT_DOWN = 'sort-amount-down';
    const _SORT_AMOUNT_DOWN_ALT = 'sort-amount-down-alt';
    const _SORT_AMOUNT_UP = 'sort-amount-up';
    const _SORT_AMOUNT_UP_ALT = 'sort-amount-up-alt';
    const _SORT_DOWN = 'sort-down';
    const _SORT_NUMERIC_DOWN = 'sort-numeric-down';
    const _SORT_NUMERIC_DOWN_ALT = 'sort-numeric-down-alt';
    const _SORT_NUMERIC_UP = 'sort-numeric-up';
    const _SORT_NUMERIC_UP_ALT = 'sort-numeric-up-alt';
    const _SORT_UP = 'sort-up';
    const _SOUNDCLOUD = 'soundcloud';
    const _SOURCETREE = 'sourcetree';
    const _SPA = 'spa';
    const _SPACE_SHUTTLE = 'space-shuttle';
    const _SPEAKAP = 'speakap';
    const _SPEAKER_DECK = 'speaker-deck';
    const _SPELL_CHECK = 'spell-check';
    const _SPIDER = 'spider';
    const _SPINNER = 'spinner';
    const _SPLOTCH = 'splotch';
    const _SPOTIFY = 'spotify';
    const _SPRAY_CAN = 'spray-can';
    const _SQUARE = 'square';
    const _SQUARE_FULL = 'square-full';
    const _SQUARE_ROOT_ALT = 'square-root-alt';
    const _SQUARESPACE = 'squarespace';
    const _STACK_EXCHANGE = 'stack-exchange';
    const _STACK_OVERFLOW = 'stack-overflow';
    const _STACKPATH = 'stackpath';
    const _STAMP = 'stamp';
    const _STAR = 'star';
    const _STAR_AND_CRESCENT = 'star-and-crescent';
    const _STAR_HALF = 'star-half';
    const _STAR_HALF_ALT = 'star-half-alt';
    const _STAR_OF_DAVID = 'star-of-david';
    const _STAR_OF_LIFE = 'star-of-life';
    const _STAYLINKED = 'staylinked';
    const _STEAM = 'steam';
    const _STEAM_SQUARE = 'steam-square';
    const _STEAM_SYMBOL = 'steam-symbol';
    const _STEP_BACKWARD = 'step-backward';
    const _STEP_FORWARD = 'step-forward';
    const _STETHOSCOPE = 'stethoscope';
    const _STICKER_MULE = 'sticker-mule';
    const _STICKY_NOTE = 'sticky-note';
    const _STOP = 'stop';
    const _STOP_CIRCLE = 'stop-circle';
    const _STOPWATCH = 'stopwatch';
    const _STORE = 'store';
    const _STORE_ALT = 'store-alt';
    const _STRAVA = 'strava';
    const _STREAM = 'stream';
    const _STREET_VIEW = 'street-view';
    const _STRIKETHROUGH = 'strikethrough';
    const _STRIPE = 'stripe';
    const _STRIPE_S = 'stripe-s';
    const _STROOPWAFEL = 'stroopwafel';
    const _STUDIOVINARI = 'studiovinari';
    const _STUMBLEUPON = 'stumbleupon';
    const _STUMBLEUPON_CIRCLE = 'stumbleupon-circle';
    const _SUBSCRIPT = 'subscript';
    const _SUBWAY = 'subway';
    const _SUITCASE = 'suitcase';
    const _SUITCASE_ROLLING = 'suitcase-rolling';
    const _SUN = 'sun';
    const _SUPERPOWERS = 'superpowers';
    const _SUPERSCRIPT = 'superscript';
    const _SUPPLE = 'supple';
    const _SURPRISE = 'surprise';
    const _SUSE = 'suse';
    const _SWATCHBOOK = 'swatchbook';
    const _SWIFT = 'swift';
    const _SWIMMER = 'swimmer';
    const _SWIMMING_POOL = 'swimming-pool';
    const _SYMFONY = 'symfony';
    const _SYNAGOGUE = 'synagogue';
    const _SYNC = 'sync';
    const _SYNC_ALT = 'sync-alt';
    const _SYRINGE = 'syringe';
    const _TABLE = 'table';
    const _TABLE_TENNIS = 'table-tennis';
    const _TABLET = 'tablet';
    const _TABLET_ALT = 'tablet-alt';
    const _TABLETS = 'tablets';
    const _TACHOMETER_ALT = 'tachometer-alt';
    const _TAG = 'tag';
    const _TAGS = 'tags';
    const _TAPE = 'tape';
    const _TASKS = 'tasks';
    const _TAXI = 'taxi';
    const _TEAMSPEAK = 'teamspeak';
    const _TEETH = 'teeth';
    const _TEETH_OPEN = 'teeth-open';
    const _TELEGRAM = 'telegram';
    const _TELEGRAM_PLANE = 'telegram-plane';
    const _TEMPERATURE_HIGH = 'temperature-high';
    const _TEMPERATURE_LOW = 'temperature-low';
    const _TENCENT_WEIBO = 'tencent-weibo';
    const _TENGE = 'tenge';
    const _TERMINAL = 'terminal';
    const _TEXT_HEIGHT = 'text-height';
    const _TEXT_WIDTH = 'text-width';
    const _TH = 'th';
    const _TH_LARGE = 'th-large';
    const _TH_LIST = 'th-list';
    const _THE_RED_YETI = 'the-red-yeti';
    const _THEATER_MASKS = 'theater-masks';
    const _THEMECO = 'themeco';
    const _THEMEISLE = 'themeisle';
    const _THERMOMETER = 'thermometer';
    const _THERMOMETER_EMPTY = 'thermometer-empty';
    const _THERMOMETER_FULL = 'thermometer-full';
    const _THERMOMETER_HALF = 'thermometer-half';
    const _THERMOMETER_QUARTER = 'thermometer-quarter';
    const _THERMOMETER_THREE_QUARTERS = 'thermometer-three-quarters';
    const _THINK_PEAKS = 'think-peaks';
    const _THUMBS_DOWN = 'thumbs-down';
    const _THUMBS_UP = 'thumbs-up';
    const _THUMBTACK = 'thumbtack';
    const _TICKET_ALT = 'ticket-alt';
    const _TIMES = 'times';
    const _TIMES_CIRCLE = 'times-circle';
    const _TINT = 'tint';
    const _TINT_SLASH = 'tint-slash';
    const _TIRED = 'tired';
    const _TOGGLE_OFF = 'toggle-off';
    const _TOGGLE_ON = 'toggle-on';
    const _TOILET = 'toilet';
    const _TOILET_PAPER = 'toilet-paper';
    const _TOOLBOX = 'toolbox';
    const _TOOLS = 'tools';
    const _TOOTH = 'tooth';
    const _TORAH = 'torah';
    const _TORII_GATE = 'torii-gate';
    const _TRACTOR = 'tractor';
    const _TRADE_FEDERATION = 'trade-federation';
    const _TRADEMARK = 'trademark';
    const _TRAFFIC_LIGHT = 'traffic-light';
    const _TRAIN = 'train';
    const _TRAM = 'tram';
    const _TRANSGENDER = 'transgender';
    const _TRANSGENDER_ALT = 'transgender-alt';
    const _TRASH = 'trash';
    const _TRASH_ALT = 'trash-alt';
    const _TRASH_RESTORE = 'trash-restore';
    const _TRASH_RESTORE_ALT = 'trash-restore-alt';
    const _TREE = 'tree';
    const _TRELLO = 'trello';
    const _TRIPADVISOR = 'tripadvisor';
    const _TROPHY = 'trophy';
    const _TRUCK = 'truck';
    const _TRUCK_LOADING = 'truck-loading';
    const _TRUCK_MONSTER = 'truck-monster';
    const _TRUCK_MOVING = 'truck-moving';
    const _TRUCK_PICKUP = 'truck-pickup';
    const _TSHIRT = 'tshirt';
    const _TTY = 'tty';
    const _TUMBLR = 'tumblr';
    const _TUMBLR_SQUARE = 'tumblr-square';
    const _TV = 'tv';
    const _TWITCH = 'twitch';
    const _TWITTER = 'twitter';
    const _TWITTER_SQUARE = 'twitter-square';
    const _TYPO3 = 'typo3';
    const _UBER = 'uber';
    const _UBUNTU = 'ubuntu';
    const _UIKIT = 'uikit';
    const _UMBRACO = 'umbraco';
    const _UMBRELLA = 'umbrella';
    const _UMBRELLA_BEACH = 'umbrella-beach';
    const _UNDERLINE = 'underline';
    const _UNDO = 'undo';
    const _UNDO_ALT = 'undo-alt';
    const _UNIREGISTRY = 'uniregistry';
    const _UNIVERSAL_ACCESS = 'universal-access';
    const _UNIVERSITY = 'university';
    const _UNLINK = 'unlink';
    const _UNLOCK = 'unlock';
    const _UNLOCK_ALT = 'unlock-alt';
    const _UNTAPPD = 'untappd';
    const _UPLOAD = 'upload';
    const _UPS = 'ups';
    const _USB = 'usb';
    const _USER = 'user';
    const _USER_ALT = 'user-alt';
    const _USER_ALT_SLASH = 'user-alt-slash';
    const _USER_ASTRONAUT = 'user-astronaut';
    const _USER_CHECK = 'user-check';
    const _USER_CIRCLE = 'user-circle';
    const _USER_CLOCK = 'user-clock';
    const _USER_COG = 'user-cog';
    const _USER_EDIT = 'user-edit';
    const _USER_FRIENDS = 'user-friends';
    const _USER_GRADUATE = 'user-graduate';
    const _USER_INJURED = 'user-injured';
    const _USER_LOCK = 'user-lock';
    const _USER_MD = 'user-md';
    const _USER_MINUS = 'user-minus';
    const _USER_NINJA = 'user-ninja';
    const _USER_NURSE = 'user-nurse';
    const _USER_PLUS = 'user-plus';
    const _USER_SECRET = 'user-secret';
    const _USER_SHIELD = 'user-shield';
    const _USER_SLASH = 'user-slash';
    const _USER_TAG = 'user-tag';
    const _USER_TIE = 'user-tie';
    const _USER_TIMES = 'user-times';
    const _USERS = 'users';
    const _USERS_COG = 'users-cog';
    const _USPS = 'usps';
    const _USSUNNAH = 'ussunnah';
    const _UTENSIL_SPOON = 'utensil-spoon';
    const _UTENSILS = 'utensils';
    const _VAADIN = 'vaadin';
    const _VECTOR_SQUARE = 'vector-square';
    const _VENUS = 'venus';
    const _VENUS_DOUBLE = 'venus-double';
    const _VENUS_MARS = 'venus-mars';
    const _VIACOIN = 'viacoin';
    const _VIADEO = 'viadeo';
    const _VIADEO_SQUARE = 'viadeo-square';
    const _VIAL = 'vial';
    const _VIALS = 'vials';
    const _VIBER = 'viber';
    const _VIDEO = 'video';
    const _VIDEO_SLASH = 'video-slash';
    const _VIHARA = 'vihara';
    const _VIMEO = 'vimeo';
    const _VIMEO_SQUARE = 'vimeo-square';
    const _VIMEO_V = 'vimeo-v';
    const _VINE = 'vine';
    const _VK = 'vk';
    const _VNV = 'vnv';
    const _VOICEMAIL = 'voicemail';
    const _VOLLEYBALL_BALL = 'volleyball-ball';
    const _VOLUME_DOWN = 'volume-down';
    const _VOLUME_MUTE = 'volume-mute';
    const _VOLUME_OFF = 'volume-off';
    const _VOLUME_UP = 'volume-up';
    const _VOTE_YEA = 'vote-yea';
    const _VR_CARDBOARD = 'vr-cardboard';
    const _VUEJS = 'vuejs';
    const _WALKING = 'walking';
    const _WALLET = 'wallet';
    const _WAREHOUSE = 'warehouse';
    const _WATER = 'water';
    const _WAVE_SQUARE = 'wave-square';
    const _WAZE = 'waze';
    const _WEEBLY = 'weebly';
    const _WEIBO = 'weibo';
    const _WEIGHT = 'weight';
    const _WEIGHT_HANGING = 'weight-hanging';
    const _WEIXIN = 'weixin';
    const _WHATSAPP = 'whatsapp';
    const _WHATSAPP_SQUARE = 'whatsapp-square';
    const _WHEELCHAIR = 'wheelchair';
    const _WHMCS = 'whmcs';
    const _WIFI = 'wifi';
    const _WIKIPEDIA_W = 'wikipedia-w';
    const _WIND = 'wind';
    const _WINDOW_CLOSE = 'window-close';
    const _WINDOW_MAXIMIZE = 'window-maximize';
    const _WINDOW_MINIMIZE = 'window-minimize';
    const _WINDOW_RESTORE = 'window-restore';
    const _WINDOWS = 'windows';
    const _WINE_BOTTLE = 'wine-bottle';
    const _WINE_GLASS = 'wine-glass';
    const _WINE_GLASS_ALT = 'wine-glass-alt';
    const _WIX = 'wix';
    const _WIZARDS_OF_THE_COAST = 'wizards-of-the-coast';
    const _WOLF_PACK_BATTALION = 'wolf-pack-battalion';
    const _WON_SIGN = 'won-sign';
    const _WORDPRESS = 'wordpress';
    const _WORDPRESS_SIMPLE = 'wordpress-simple';
    const _WPBEGINNER = 'wpbeginner';
    const _WPEXPLORER = 'wpexplorer';
    const _WPFORMS = 'wpforms';
    const _WPRESSR = 'wpressr';
    const _WRENCH = 'wrench';
    const _X_RAY = 'x-ray';
    const _XBOX = 'xbox';
    const _XING = 'xing';
    const _XING_SQUARE = 'xing-square';
    const _Y_COMBINATOR = 'y-combinator';
    const _YAHOO = 'yahoo';
    const _YAMMER = 'yammer';
    const _YANDEX = 'yandex';
    const _YANDEX_INTERNATIONAL = 'yandex-international';
    const _YARN = 'yarn';
    const _YELP = 'yelp';
    const _YEN_SIGN = 'yen-sign';
    const _YIN_YANG = 'yin-yang';
    const _YOAST = 'yoast';
    const _YOUTUBE = 'youtube';
    const _YOUTUBE_SQUARE = 'youtube-square';
    const _ZHIHU = 'zhihu';
}


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2014 Revin Roman Borisovich

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: NpmFreeAssetBundle.php
================================================
<?php
/**
 * NpmFreeAssetBundle.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome;

/**
 * Class NpmFreeAssetBundle
 * @package rmrevin\yii\fontawesome
 */
class NpmFreeAssetBundle extends \yii\web\AssetBundle
{
    public $sourcePath = '@vendor/fortawesome/font-awesome';

    public $css = [
        'css/all.min.css',
    ];

    public $publishOptions = [
        'only' => [
            'css/*',
            'js/*',
            'webfonts/*',
            'sprites/*',
            'svgs/*',
        ],
    ];
}


================================================
FILE: NpmProAssetBundle.php
================================================
<?php
/**
 * NpmProAssetBundle.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome;

/**
 * Class NpmProAssetBundle
 * @package rmrevin\yii\fontawesome
 */
class NpmProAssetBundle extends \yii\web\AssetBundle
{
    public $sourcePath = '@app/node_modules/@fortawesome/fontawesome-pro';

    public $css = [
        'css/all.min.css',
    ];

    public $publishOptions = [
        'only' => [
            'css/*',
            'js/*',
            'webfonts/*',
            'sprites/*',
            'svgs/*',
        ],
    ];
}


================================================
FILE: README.md
================================================
Yii 2 [Font Awesome](http://fortawesome.github.io/Font-Awesome/) Asset Bundle
===============================

This extension provides a assets bundle with [Font Awesome](https://fontawesome.com/)
for [Yii framework 2.0](http://www.yiiframework.com/) applications and helper to use icons.

For license information check the [LICENSE](https://github.com/rmrevin/yii2-fontawesome/blob/master/LICENSE)-file.

[![License](https://poser.pugx.org/rmrevin/yii2-fontawesome/license.svg)](https://packagist.org/packages/rmrevin/yii2-fontawesome)
[![Latest Stable Version](https://poser.pugx.org/rmrevin/yii2-fontawesome/v/stable.svg)](https://packagist.org/packages/rmrevin/yii2-fontawesome)
[![Latest Unstable Version](https://poser.pugx.org/rmrevin/yii2-fontawesome/v/unstable.svg)](https://packagist.org/packages/rmrevin/yii2-fontawesome)
[![Total Downloads](https://poser.pugx.org/rmrevin/yii2-fontawesome/downloads.svg)](https://packagist.org/packages/rmrevin/yii2-fontawesome)

Code Status
-----------
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/rmrevin/yii2-fontawesome/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/rmrevin/yii2-fontawesome/?branch=master)
[![Code Coverage](https://scrutinizer-ci.com/g/rmrevin/yii2-fontawesome/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/rmrevin/yii2-fontawesome/?branch=master)
[![Travis CI Build Status](https://travis-ci.org/rmrevin/yii2-fontawesome.svg)](https://travis-ci.org/rmrevin/yii2-fontawesome)
[![Dependency Status](https://www.versioneye.com/user/projects/54119b799e16229fe00000da/badge.svg)](https://www.versioneye.com/user/projects/54119b799e16229fe00000da)

Support
-------
* [GutHub issues](https://github.com/rmrevin/yii2-fontawesome/issues)
* [Public chat](https://gitter.im/rmrevin/support)

Fontawesome version
-------------------
| Version of font-awesome | Version of extension |
| ---:|:--- |
| 4.* | ~2.17 |
| 5.* | ~3.0 |

Update to `3.2`
---------------

Be careful in version 3.2 `rmrevin\yii\fontawesome\AssetBundle` package use cdn by default. More in the [changelog](https://github.com/rmrevin/yii2-fontawesome/blob/master/CHANGELOG.md).

Update to `3.0`
---------------

Be careful in version 3.0 deprecated methods were removed. More in the [changelog](https://github.com/rmrevin/yii2-fontawesome/blob/master/CHANGELOG.md).

Update to `2.17`
----------------

Be careful in version 2.17 deprecated methods were removed. More in the [changelog](https://github.com/rmrevin/yii2-fontawesome/blob/2.x/CHANGELOG.md).

Installation
------------

The preferred way to install this extension is through [composer](https://getcomposer.org/).

Either run

```bash
composer require "rmrevin/yii2-fontawesome:~3.5"
```

or add

```
"rmrevin/yii2-fontawesome": "~3.5",
```

to the `require` section of your `composer.json` file.

Usage with fa pro version
-------------------------

### CDN
Register your domain here - https://fontawesome.com/how-to-use/on-the-web/setup/getting-started

Add `CdnProAssetBundle` as depends of your app asset bundle:
```php
class AppAsset extends AssetBundle
{
	// ...

	public $depends = [
		// ...
		'rmrevin\yii\fontawesome\CdnProAssetBundle'
	];
}

```

Or inject `CdnProAssetBundle` in your view:

```php
\rmrevin\yii\fontawesome\CdnProAssetBundle::register($this);
```

### NPM
Install npm package of font:
```
npm install @fortawesome/fontawesome-pro
```
or 
```
yarn add @fortawesome/fontawesome-pro
```

And add `NpmProAssetBundle` as depends of your app asset bundle:
```php
class AppAsset extends AssetBundle
{
	// ...

	public $depends = [
		// ...
		'rmrevin\yii\fontawesome\NpmProAssetBundle'
	];
}

```

Or inject `NpmProAssetBundle` in your view:

```php
rmrevin\yii\fontawesome\NpmProAssetBundle::register($this);
```

### Optional

In order for do not install the free version of the font-awesome package, you can add it to the `replace` section of `composer.json`.

```
  "replace": {
    "fortawesome/font-awesome": "*"
  },
```

Usage with fa free version
-------------------------

### CDN
Add `CdnFreeAssetBundle` as depends of your app asset bundle:
```php
class AppAsset extends AssetBundle
{
	// ...

	public $depends = [
		// ...
		'rmrevin\yii\fontawesome\CdnFreeAssetBundle'
	];
}

```

Or inject `CdnFreeAssetBundle` in your view:

```php
rmrevin\yii\fontawesome\CdnFreeAssetBundle::register($this);
```

# Composer

Free version of package `fortawesome/font-awesome` already installed in vendor.

Add `NpmFreeAssetBundle` as depends of your app asset bundle:
```php
class AppAsset extends AssetBundle
{
	// ...

	public $depends = [
		// ...
		'rmrevin\yii\fontawesome\NpmFreeAssetBundle'
	];
}

```

Or inject `NpmFreeAssetBundle` in your view:

```php
rmrevin\yii\fontawesome\NpmFreeAssetBundle::register($this);
```

Class reference
---------------

Namespace: `rmrevin\yii\fontawesome`;

### Class `FAB`, `FAL`, `FAR`, `FAS` or `FontAwesome`

* `static FAR::icon($name, $options=[])` - Creates an [`component\Icon`](#class-componenticon) that can be used to FontAwesome html icon
  * `$name` - name of icon in font awesome set.
  * `$options` - additional attributes for `i.fa` html tag.
* `static FAR::stack($name, $options=[])` - Creates an [`component\Stack`](#class-componentstack) that can be used to FontAwesome html icon
  * `$options` - additional attributes for `span.fa-stack` html tag.

### Class `component\Icon`

* `(string)$Icon` - render icon
* `$Icon->addCssClass($value)` - add to html tag css class in `$value`
  * `$value` - name of css class
* `$Icon->inverse()` - add to html tag css class `fa-inverse`
* `$Icon->spin()` - add to html tag css class `fa-spin`
* `$Icon->fixedWidth()` - add to html tag css class `fa-fw`
* `$Icon->ul()` - add to html tag css class `fa-ul`
* `$Icon->li()` - add to html tag css class `fa-li`
* `$Icon->border()` - add to html tag css class `fa-border`
* `$Icon->pullLeft()` - add to html tag css class `pull-left`
* `$Icon->pullRight()` - add to html tag css class `pull-right`
* `$Icon->size($value)` - add to html tag css class with size
  * `$value` - size value (variants: `FA::SIZE_LARGE`, `FA::SIZE_2X`, `FA::SIZE_3X`, `FA::SIZE_4X`, `FA::SIZE_5X`)
* `$Icon->rotate($value)` - add to html tag css class with rotate
  * `$value` - rotate value (variants: `FA::ROTATE_90`, `FA::ROTATE_180`, `FA::ROTATE_270`)
* `$Icon->flip($value)` - add to html tag css class with rotate
  * `$value` - flip value (variants: `FA::FLIP_HORIZONTAL`, `FA::FLIP_VERTICAL`)

### Class `component\Stack`

* `(string)$Stack` - render icon stack
* `$Stack->icon($icon, $options=[])` - set icon for stack
  * `$icon` - name of icon or `component\Icon` object
  * `$options` - additional attributes for icon html tag.
* `$Stack->icon($icon, $options=[])` - set background icon for stack
  * `$icon` - name of icon or `component\Icon` object
  * `$options` - additional attributes for icon html tag.

Helper examples
---------------

```php
use rmrevin\yii\fontawesome\FAS;
// or (only in pro version https://fontawesome.com/pro)
// use rmrevin\yii\fontawesome\FAR;
// use rmrevin\yii\fontawesome\FAL;
// use rmrevin\yii\fontawesome\FAB;

// normal use
echo FAS::icon('home'); // <i class="fas fa-home"></i>

// shortcut
echo FAS::i('home'); // <i class="fas fa-home"></i>

// icon with additional attributes
echo FAS::icon(
    'arrow-left', 
    ['class' => 'big', 'data-role' => 'arrow']
); // <i class="big fas fa-arrow-left" data-role="arrow"></i>

// icon in button
echo Html::submitButton(
    Yii::t('app', '{icon} Save', ['icon' => FAS::icon('check')])
); // <button type="submit"><i class="fas fa-check"></i> Save</button>

// icon with additional methods
echo FAS::icon('cog')->inverse();    // <i class="fas fa-cog fa-inverse"></i>
echo FAS::icon('cog')->spin();       // <i class="fas fa-cog fa-spin"></i>
echo FAS::icon('cog')->fixedWidth(); // <i class="fas fa-cog fa-fw"></i>
echo FAS::icon('cog')->li();         // <i class="fas fa-cog fa-li"></i>
echo FAS::icon('cog')->border();     // <i class="fas fa-cog fa-border"></i>
echo FAS::icon('cog')->pullLeft();   // <i class="fas fa-cog pull-left"></i>
echo FAS::icon('cog')->pullRight();  // <i class="fas fa-cog pull-right"></i>

// icon size
echo FAS::icon('cog')->size(FAS::SIZE_3X);
// values: FAS::SIZE_LARGE, FAS::SIZE_2X, FAS::SIZE_3X, FAS::SIZE_4X, FAS::SIZE_5X
// <i class="fas fa-cog fa-size-3x"></i>

// icon rotate
echo FAS::icon('cog')->rotate(FAS::ROTATE_90); 
// values: FAS::ROTATE_90, FAS::ROTATE_180, FAS::ROTATE_180
// <i class="fas fa-cog fa-rotate-90"></i>

// icon flip
echo FAS::icon('cog')->flip(FAS::FLIP_VERTICAL); 
// values: FAS::FLIP_HORIZONTAL, FAS::FLIP_VERTICAL
// <i class="fas fa-cog fa-flip-vertical"></i>

// icon with multiple methods
echo FAS::icon('cog')
        ->spin()
        ->fixedWidth()
        ->pullLeft()
        ->size(FAS::SIZE_LARGE);
// <i class="fas fa-cog fa-spin fa-fw pull-left fa-size-lg"></i>

// icons stack
echo FAS::stack()
        ->icon('twitter')
        ->on('square-o');
// <span class="fa-stack">
//   <i class="fas fa-square-o fa-stack-2x"></i>
//   <i class="fas fa-twitter fa-stack-1x"></i>
// </span>

// icons stack with additional attributes
echo FAS::stack(['data-role' => 'stacked-icon'])
     ->on(FAS::Icon('square')->inverse())
     ->icon(FAS::Icon('cog')->spin());
// <span class="fa-stack" data-role="stacked-icon">
//   <i class="fas fa-square-o fa-inverse fa-stack-2x"></i>
//   <i class="fas fa-cog fa-spin fa-stack-1x"></i>
// </span>

// Stacking text and icons
echo FAS::stack()
     ->on(FAS::Icon('square'))
     ->text('1');
// <span class="fa-stack">
//   <i class="fas fa-square fa-stack-2x"></i>
//   <span class="fa-stack-1x">1</span>
// </span>

// Stacking text and icons with options
echo FAS::stack()
     ->on(FAS::Icon('square'))
     ->text('1', ['tag'=>'strong', 'class'=>'stacked-text']);
// <span class="fa-stack">
//   <i class="fas fa-square fa-stack-2x"></i>
//   <strong class="stacked-text fa-stack-1x">1</strong>
// </span>
// Now you can add some css for vertical text positioning:
.stacked-text { margin-top: .3em; }

// unordered list icons 
echo FAS::ul(['data-role' => 'unordered-list'])
     ->item('Bullet item', ['icon' => 'circle'])
     ->item('Checked item', ['icon' => 'check']);
// <ul class="fa-ul" data-role="unordered-list">
//   <li><i class="fas fa-circle fa-li"></i>Bullet item</li>
//   <li><i class="fas fa-check fa-li"></i>Checked Item</li>
// </span>

// autocomplete icons name in IDE
echo FAS::icon(FAS::_COG);
echo FAS::icon(FAS::_DESKTOP);
echo FAS::stack()
     ->on(FAS::_CIRCLE_O)
     ->icon(FAS::_TWITTER);
```


================================================
FILE: bin/.gitignore
================================================
result.txt


================================================
FILE: bin/convertNames.sh
================================================
#!/bin/bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

VARIABLES_PATH="${DIR}/../vendor/fortawesome/font-awesome/scss/_variables.scss"

RESULT_PATH="${DIR}/result.txt"

echo '' > "${RESULT_PATH}"

while IFS='' read -r line || [[ -n "$line" ]]; do
    if [[ ${line} =~ fa\-var\-([a-z0-9\-]+): ]]
    then
        iconName=${BASH_REMATCH[1]}
        upperIconName=`echo ${iconName} | tr /a-z/ /A-Z/`
        upperIconName=$(echo ${upperIconName} | sed 's/-/_/g')

        echo "const _${upperIconName} = '${iconName}';" >> "${RESULT_PATH}"
    fi
done < "${VARIABLES_PATH}"

echo "Done. See result in ${RESULT_PATH}";


================================================
FILE: cdn/AssetBundle.php
================================================
<?php
/**
 * AssetBundle.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome\cdn;

use rmrevin\yii\fontawesome\CdnFreeAssetBundle;

/**
 * Class AssetBundle
 * @package rmrevin\yii\fontawesome
 * @deprecated use rmrevin\yii\fontawesome\CdnFreeAssetBundle
 */
class AssetBundle extends CdnFreeAssetBundle
{
}


================================================
FILE: component/Icon.php
================================================
<?php
/**
 * Icon.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome\component;

use rmrevin\yii\fontawesome\FontAwesome;
use yii\base\InvalidConfigException;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;

/**
 * Class Icon
 * @package rmrevin\yii\fontawesome\component
 */
class Icon
{
    /**
     * @var array
     */
    private $options = [];

    /**
     * @param string $cssPrefix
     * @param string $name
     * @param array $options
     */
    public function __construct($cssPrefix, $name, $options = [])
    {
        Html::addCssClass($options, $cssPrefix);

        if (!empty($name)) {
            Html::addCssClass($options, FontAwesome::$basePrefix . '-' . $name);
        }

        $this->options = $options;
    }

    /**
     * @return string
     */
    public function __toString()
    {
        $options = $this->options;

        $tag = ArrayHelper::remove($options, 'tag', 'i');

        return Html::tag($tag, null, $options);
    }

    /**
     * @return \rmrevin\yii\fontawesome\component\Icon
     * @throws \yii\base\InvalidConfigException
     */
    public function inverse()
    {
        return $this->addCssClass(FontAwesome::$basePrefix . '-inverse');
    }

    /**
     * @return \rmrevin\yii\fontawesome\component\Icon
     * @throws \yii\base\InvalidConfigException
     */
    public function spin()
    {
        return $this->addCssClass(FontAwesome::$basePrefix . '-spin');
    }

    /**
     * @return \rmrevin\yii\fontawesome\component\Icon
     * @throws \yii\base\InvalidConfigException
     */
    public function pulse()
    {
        return $this->addCssClass(FontAwesome::$basePrefix . '-pulse');
    }

    /**
     * @return \rmrevin\yii\fontawesome\component\Icon
     * @throws \yii\base\InvalidConfigException
     */
    public function fixedWidth()
    {
        return $this->addCssClass(FontAwesome::$basePrefix . '-fw');
    }

    /**
     * @return \rmrevin\yii\fontawesome\component\Icon
     * @throws \yii\base\InvalidConfigException
     */
    public function li()
    {
        return $this->addCssClass(FontAwesome::$basePrefix . '-li');
    }

    /**
     * @return \rmrevin\yii\fontawesome\component\Icon
     * @throws \yii\base\InvalidConfigException
     */
    public function border()
    {
        return $this->addCssClass(FontAwesome::$basePrefix . '-border');
    }

    /**
     * @return \rmrevin\yii\fontawesome\component\Icon
     * @throws \yii\base\InvalidConfigException
     */
    public function pullLeft()
    {
        return $this->addCssClass(FontAwesome::$basePrefix . '-pull-left');
    }

    /**
     * @return \rmrevin\yii\fontawesome\component\Icon
     * @throws \yii\base\InvalidConfigException
     */
    public function pullRight()
    {
        return $this->addCssClass(FontAwesome::$basePrefix . '-pull-right');
    }

    /**
     * @param string $value
     * @return \rmrevin\yii\fontawesome\component\Icon
     * @throws \yii\base\InvalidConfigException
     */
    public function size($value)
    {
        $values = [
            FontAwesome::SIZE_LG,
            FontAwesome::SIZE_SM,
            FontAwesome::SIZE_XS,
            FontAwesome::SIZE_2X,
            FontAwesome::SIZE_3X,
            FontAwesome::SIZE_4X,
            FontAwesome::SIZE_5X,
            FontAwesome::SIZE_6X,
            FontAwesome::SIZE_7X,
            FontAwesome::SIZE_8X,
            FontAwesome::SIZE_9X,
            FontAwesome::SIZE_10X,
        ];

        return $this->addCssClass(
            FontAwesome::$basePrefix . '-' . $value,
            in_array((string)$value, $values, true),
            sprintf(
                '%s - invalid value. Use one of the constants: %s.',
                'FontAwesome::size()',
                implode(', ', $values)
            )
        );
    }

    /**
     * @param string $value
     * @return \rmrevin\yii\fontawesome\component\Icon
     * @throws \yii\base\InvalidConfigException
     */
    public function rotate($value)
    {
        $values = [FontAwesome::ROTATE_90, FontAwesome::ROTATE_180, FontAwesome::ROTATE_270];

        return $this->addCssClass(
            FontAwesome::$basePrefix . '-rotate-' . $value,
            in_array((string)$value, $values, true),
            sprintf(
                '%s - invalid value. Use one of the constants: %s.',
                'FontAwesome::rotate()',
                implode(', ', $values)
            )
        );
    }

    /**
     * @param string $value
     * @return \rmrevin\yii\fontawesome\component\Icon
     * @throws \yii\base\InvalidConfigException
     */
    public function flip($value)
    {
        $values = [FontAwesome::FLIP_HORIZONTAL, FontAwesome::FLIP_VERTICAL];

        return $this->addCssClass(
            FontAwesome::$basePrefix . '-flip-' . $value,
            in_array((string)$value, [FontAwesome::FLIP_HORIZONTAL, FontAwesome::FLIP_VERTICAL], true),
            sprintf(
                '%s - invalid value. Use one of the constants: %s.',
                'FontAwesome::flip()',
                implode(', ', $values)
            )
        );
    }

    /**
     * @param string $class
     * @param bool $condition
     * @param string|bool $throw
     * @return \rmrevin\yii\fontawesome\component\Icon
     * @throws \yii\base\InvalidConfigException
     * @codeCoverageIgnore
     */
    public function addCssClass($class, $condition = true, $throw = false)
    {
        if ($condition === false) {
            if (!empty($throw)) {
                $message = !is_string($throw)
                    ? 'Condition is false'
                    : $throw;

                throw new InvalidConfigException($message);
            }
        } else {
            Html::addCssClass($this->options, $class);
        }

        return $this;
    }
}


================================================
FILE: component/Stack.php
================================================
<?php
/**
 * Stack.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome\component;

use rmrevin\yii\fontawesome\FontAwesome;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;

/**
 * Class Stack
 * @package rmrevin\yii\fontawesome\component
 */
class Stack
{
    /**
     * @var string
     */
    private $iconCssPrefix = 'fa';

    /**
     * @var array
     */
    private $options = [];

    /**
     * @var Icon
     */
    private $icon_front;

    /**
     * @var string
     */
    private $text_front = null;

    /**
     * @var Icon
     */
    private $icon_back;

    /**
     * @param string $iconCssPrefix
     * @param array $options
     */
    public function __construct($iconCssPrefix, $options = [])
    {
        $this->iconCssPrefix = $iconCssPrefix;

        Html::addCssClass($options, FontAwesome::$basePrefix . '-stack');

        $this->options = $options;
    }

    /**
     * @return string
     * @throws \yii\base\InvalidConfigException
     */
    public function __toString()
    {
        $options = $this->options;

        $tag = ArrayHelper::remove($options, 'tag', 'span');

        $template = ArrayHelper::remove($options, 'template', '{back}{front}');

        $iconBack = $this->icon_back instanceof Icon
            ? $this->icon_back->addCssClass(FontAwesome::$basePrefix . '-stack-2x')
            : null;

        if ($this->text_front !== null) {
            $contentFront = $this->text_front;
        } else {
            $contentFront = $this->icon_front instanceof Icon
                ? $this->icon_front->addCssClass(FontAwesome::$basePrefix . '-stack-1x')
                : null;
        }

        $content = str_replace(['{back}', '{front}'], [$iconBack, $contentFront], $template);

        return Html::tag($tag, $content, $options);
    }

    /**
     * @param string|Icon $icon
     * @param array $options
     * @return \rmrevin\yii\fontawesome\component\Stack
     */
    public function icon($icon, $options = [])
    {
        if (is_string($icon)) {
            $icon = new Icon($this->iconCssPrefix, $icon, $options);
        }

        $this->icon_front = $icon;

        return $this;
    }

    /**
     * @param string $text
     * @param array $options
     * @return \rmrevin\yii\fontawesome\component\Stack
     */
    public function text($text = '', $options = [])
    {
        $tag = ArrayHelper::remove($options, 'tag', 'span');

        Html::addCssClass($options, FontAwesome::$basePrefix . '-stack-1x');

        $this->text_front = Html::tag($tag, $text, $options);

        return $this;
    }

    /**
     * @param string|Icon $icon
     * @param array $options
     * @return \rmrevin\yii\fontawesome\component\Stack
     */
    public function on($icon, $options = [])
    {
        if (is_string($icon)) {
            $icon = new Icon($this->iconCssPrefix, $icon, $options);
        }

        $this->icon_back = $icon;

        return $this;
    }
}


================================================
FILE: component/UnorderedList.php
================================================
<?php
/**
 * UnorderedList.php
 * @author Revin Roman
 * @link https://rmrevin.com
 */

namespace rmrevin\yii\fontawesome\component;

use rmrevin\yii\fontawesome\FontAwesome;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;

/**
 * Class UnorderedList
 * @package rmrevin\yii\fontawesome\component
 */
class UnorderedList
{
    protected $iconCssPrefix;

    /**
     * @var array
     */
    protected $options = [];

    /**
     * @var array
     */
    protected $items = [];

    /**
     * @param string $iconCssPrefix
     * @param array $options
     */
    public function __construct($iconCssPrefix, $options = [])
    {
        $this->iconCssPrefix = $iconCssPrefix;

        Html::addCssClass($options, FontAwesome::$basePrefix . '-ul');

        $options['item'] = function ($item, $index) {
            return call_user_func($item, $index);
        };

        $this->options = $options;
    }

    /**
     * @return string
     */
    public function __toString()
    {
        return Html::ul($this->items, $this->options);
    }

    /**
     * @param string $label
     * @param array $options
     * @return \rmrevin\yii\fontawesome\component\UnorderedList
     */
    public function item($label, $options = [])
    {
        $this->items[] = function ($index) use ($label, $options) {
            $tag = ArrayHelper::remove($options, 'tag', 'li');

            $icon = ArrayHelper::remove($options, 'icon');
            $icon = empty($icon)
                ? null
                : (is_string($icon) ? (string)(new Icon($this->iconCssPrefix, $icon))->li() : $icon);

            $content = trim($icon . $label);

            return Html::tag($tag, $content, $options);
        };

        return $this;
    }
}


================================================
FILE: composer.json
================================================
{
  "name": "rmrevin/yii2-fontawesome",
  "description": "Asset Bundle for Yii2 with Font Awesome",
  "keywords": [
    "yii",
    "font",
    "awesome",
    "asset",
    "bundle"
  ],
  "type": "yii2-extension",
  "license": "MIT",
  "minimum-stability": "stable",
  "support": {
    "issues": "https://github.com/rmrevin/yii2-fontawesome/issues",
    "source": "https://github.com/rmrevin/yii2-fontawesome"
  },
  "authors": [
    {
      "name": "Revin Roman",
      "email": "roman@rmrevin.com",
      "homepage": "https://rmrevin.com/"
    }
  ],
  "require": {
    "php": ">=5.4.0",
    "fortawesome/font-awesome": "^5.15.0",
    "yiisoft/yii2": "^2.0.0"
  },
  "require-dev": {
    "doctrine/instantiator": "1.0.*",
    "phpdocumentor/reflection-docblock": "~3.1.0",
    "phpunit/phpunit": "^6.0"
  },
  "autoload": {
    "psr-4": {
      "rmrevin\\yii\\fontawesome\\": ""
    }
  },
  "extra": {
    "asset-installer-paths": {
      "npm-asset-library": "vendor/npm",
      "bower-asset-library": "vendor/bower"
    }
  },
  "repositories": [
    {
      "type": "composer",
      "url": "https://asset-packagist.org"
    }
  ]
}


================================================
FILE: phpunit.xml.dist
================================================
<?xml version="1.0" encoding="utf-8"?>
<phpunit bootstrap="./tests/unit/bootstrap.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         stopOnFailure="false">
    <filter>
        <whitelist>
            <directory suffix=".php">./</directory>
            <exclude>
                <directory>./tests</directory>
                <directory>./vendor</directory>
            </exclude>
        </whitelist>
    </filter>
    <testsuites>
        <testsuite name="Test Suite">
            <directory>./tests/unit/fontawesome</directory>
        </testsuite>
    </testsuites>
    <logging>
        <log type="coverage-html" target="./coverage"/>
    </logging>
</phpunit>


================================================
FILE: tests/unit/.gitignore
================================================
runtime/cache/*

================================================
FILE: tests/unit/TestCase.php
================================================
<?php
/**
 * TestCase.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome\tests\unit;

use yii\helpers\ArrayHelper;

/**
 * Class TestCase
 * @package rmrevin\yii\fontawesome\tests\unit
 * This is the base class for all yii framework unit tests.
 */
abstract class TestCase extends \PHPUnit\Framework\TestCase
{

    public static $params;

    protected function setUp()
    {
        parent::setUp();
        $this->mock_application();
    }

    /**
     * Populates Yii::$app with a new application
     * The application will be destroyed on tearDown() automatically.
     * @param string $appClass
     */
    protected function mock_application($appClass = '\yii\console\Application')
    {
        // for update self::$params
        $this->get_param('id');

        /** @var \yii\console\Application $app */
        new $appClass(self::$params);
    }

    /**
     * Returns a test configuration param from /data/config.php
     * @param string $name params name
     * @param mixed $default default value to use when param is not set.
     * @return mixed the value of the configuration param
     */
    public function get_param($name, $default = null)
    {
        if (self::$params === null) {
            self::$params = require(__DIR__ . '/config/main.php');
            $main_local = __DIR__ . '/config/main-local.php';
            if (file_exists($main_local)) {
                self::$params = ArrayHelper::merge(self::$params, require($main_local));
            }
        }

        return isset(self::$params[$name]) ? self::$params[$name] : $default;
    }

    protected function tearDown()
    {
        parent::tearDown();
    }

    /**
     * Destroys application in Yii::$app by setting it to null.
     */
    protected function destroy_application()
    {
        \Yii::$app = null;
    }
}


================================================
FILE: tests/unit/bootstrap.php
================================================
<?php
/**
 * bootstrap.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

define('YII_ENABLE_ERROR_HANDLER', true);
define('YII_DEBUG', true);
$_SERVER['SCRIPT_NAME'] = '/' . __DIR__;
$_SERVER['SCRIPT_FILENAME'] = __FILE__;

require_once(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
require_once(__DIR__ . '/../../vendor/autoload.php');

Yii::setAlias('@yiiunit', __DIR__);

require_once(__DIR__ . '/TestCase.php');


================================================
FILE: tests/unit/config/.gitignore
================================================
main-local.php

================================================
FILE: tests/unit/config/main.php
================================================
<?php
/**
 * main.php
 * @author Roman Revin http://phptime.ru
 */

$baseDir = realpath(__DIR__ . '/..');

return [
    'id' => 'testapp',
    'basePath' => $baseDir,
    'aliases' => [
        '@web' => '/',
        '@webroot' => $baseDir . '/runtime',
        '@vendor' => realpath($baseDir . '/../../vendor'),
        '@bower' => realpath($baseDir . '/../../vendor/bower'),
    ]
];

================================================
FILE: tests/unit/fontawesome/MainTest.php
================================================
<?php
/**
 * MainTest.php
 * @author Revin Roman
 * @link https://rmrevin.ru
 */

namespace rmrevin\yii\fontawesome\tests\unit\fontawesome;

use rmrevin\yii\fontawesome\component\Icon;
use rmrevin\yii\fontawesome\FAR;
use rmrevin\yii\fontawesome\FontAwesome;

/**
 * Class MainTest
 * @package rmrevin\yii\fontawesome\tests\unit\fontawesome
 */
class MainTest extends \rmrevin\yii\fontawesome\tests\unit\TestCase
{

    public function testMain()
    {
        $this->assertInstanceOf('rmrevin\yii\fontawesome\FAR', new FAR());
        $this->assertInstanceOf('rmrevin\yii\fontawesome\FontAwesome', new FAR());

        $this->assertInstanceOf('rmrevin\yii\fontawesome\FontAwesome', new FontAwesome());

        $Icon = FAR::icon('cog');
        $this->assertInstanceOf('rmrevin\yii\fontawesome\component\Icon', $Icon);

        $Stack = FAR::stack();
        $this->assertInstanceOf('rmrevin\yii\fontawesome\component\Stack', $Stack);
    }

    public function testStackOutput()
    {
        $this->assertEquals(
            (string)FAR::s(),
            '<span class="fa-stack"></span>'
        );

        $this->assertEquals(
            (string)FAR::stack(),
            '<span class="fa-stack"></span>'
        );

        $this->assertEquals(
            (string)FAR::stack(['tag' => 'div']),
            '<div class="fa-stack"></div>'
        );

        $this->assertEquals(
            (string)FAR::stack()
                ->icon('cog'),
            '<span class="fa-stack"><i class="far fa-cog fa-stack-1x"></i></span>'
        );

        $this->assertEquals(
            (string)FAR::stack()
                ->on('square-o'),
            '<span class="fa-stack"><i class="far fa-square-o fa-stack-2x"></i></span>'
        );

        $this->assertEquals(
            (string)FAR::stack()
                ->icon('cog')
                ->on('square-o'),
            '<span class="fa-stack"><i class="far fa-square-o fa-stack-2x"></i><i class="far fa-cog fa-stack-1x"></i></span>'
        );

        $this->assertEquals(
            (string)FAR::stack(['data-role' => 'stack'])
                ->icon('cog', ['data-role' => 'icon',])
                ->on('square-o', ['data-role' => 'background']),
            '<span class="fa-stack" data-role="stack"><i class="far fa-square-o fa-stack-2x" data-role="background"></i><i class="far fa-cog fa-stack-1x" data-role="icon"></i></span>'
        );

        $this->assertEquals(
            (string)FAR::stack()
                ->icon(FAR::icon('cog')->spin())
                ->on(FAR::icon('square-o')->size(FAR::SIZE_3X)),
            '<span class="fa-stack"><i class="far fa-square-o fa-3x fa-stack-2x"></i><i class="far fa-cog fa-spin fa-stack-1x"></i></span>'
        );

        $this->assertEquals(
            (string)FAR::stack()
                ->icon(FAR::Icon('cog')->spin())
                ->on(FAR::Icon('square-o')->size(FAR::SIZE_3X)),
            '<span class="fa-stack"><i class="far fa-square-o fa-3x fa-stack-2x"></i><i class="far fa-cog fa-spin fa-stack-1x"></i></span>'
        );

        $this->assertNotEquals(
            (string)FAR::stack()
                ->icon((string)FAR::Icon('cog')->spin())
                ->on((string)FAR::Icon('square-o')->size(FAR::SIZE_3X)),
            '<span class="fa-stack"><i class="far fa-square-o fa-3x fa-stack-2x"></i><i class="far fa-cog fa-spin fa-stack-1x"></i></span>'
        );

        $this->assertEquals(
            (string)FAR::stack()
                ->text('hot')
                ->on('square-o'),
            '<span class="fa-stack"><i class="far fa-square-o fa-stack-2x"></i><span class="fa-stack-1x">hot</span></span>'
        );
    }

    public function testUlOutput()
    {
        $this->assertEquals(
            (string)FAR::ul(),
            '<ul class="fa-ul"></ul>'
        );

        $this->assertEquals(
            (string)FAR::ul()
                ->item('Gear'),
            "<ul class=\"fa-ul\">\n<li>Gear</li>\n</ul>"
        );

        $this->assertEquals(
            (string)FAR::ul()
                ->item('Gear', ['icon' => 'cog']),
            "<ul class=\"fa-ul\">\n<li><i class=\"far fa-cog fa-li\"></i>Gear</li>\n</ul>"
        );

        $this->assertEquals(
            (string)FAR::ul()
                ->item('Check', ['icon' => 'check'])
                ->item('Gear', ['icon' => 'cog']),
            "<ul class=\"fa-ul\">\n<li><i class=\"far fa-check fa-li\"></i>Check</li>\n<li><i class=\"far fa-cog fa-li\"></i>Gear</li>\n</ul>"
        );

        $this->assertEquals(
            (string)FAR::ul(['tag' => 'ol'])
                ->item('Check', ['icon' => 'check'])
                ->item('Gear', ['icon' => 'cog']),
            "<ol class=\"fa-ul\">\n<li><i class=\"far fa-check fa-li\"></i>Check</li>\n<li><i class=\"far fa-cog fa-li\"></i>Gear</li>\n</ol>"
        );

        $this->assertEquals(
            (string)FAR::ul()
                ->item('Check', ['icon' => 'check', 'class' => 'another-class']),
            "<ul class=\"fa-ul\">\n<li class=\"another-class\"><i class=\"far fa-check fa-li\"></i>Check</li>\n</ul>"
        );
    }

    public function testAnotherPrefix()
    {
        FontAwesome::$basePrefix = 'fontawesome';

        $this->assertEquals((string)FAR::icon('cog'), '<i class="far fontawesome-cog"></i>');
        $this->assertEquals((string)FAR::icon('cog', ['tag' => 'span']), '<span class="far fontawesome-cog"></span>');
        $this->assertEquals((string)FAR::icon('cog')->addCssClass('highlight'), '<i class="far fontawesome-cog highlight"></i>');

        $this->assertEquals(
            (string)FAR::stack()
                ->icon(FAR::Icon('cog')->spin())
                ->on(FAR::Icon('square-o')->size(FAR::SIZE_3X)),
            '<span class="fontawesome-stack"><i class="far fontawesome-square-o fontawesome-3x fontawesome-stack-2x"></i><i class="far fontawesome-cog fontawesome-spin fontawesome-stack-1x"></i></span>'
        );

        $this->assertEquals(
            (string)FAR::ul()
                ->item('Gear', ['icon' => 'cog']),
            "<ul class=\"fontawesome-ul\">\n<li><i class=\"far fontawesome-cog fontawesome-li\"></i>Gear</li>\n</ul>"
        );

        FontAwesome::$basePrefix = 'fa';
    }

    public function testIconOutput()
    {
        $this->assertEquals(FAR::i('cog'), '<i class="far fa-cog"></i>');
        $this->assertEquals(FAR::icon('cog'), '<i class="far fa-cog"></i>');
        $this->assertEquals(FAR::icon('cog', ['tag' => 'span']), '<span class="far fa-cog"></span>');
        $this->assertEquals(FAR::icon('cog')->addCssClass('highlight'), '<i class="far fa-cog highlight"></i>');

        $this->assertEquals(FAR::icon('cog')->inverse(), '<i class="far fa-cog fa-inverse"></i>');
        $this->assertEquals(FAR::icon('cog')->spin(), '<i class="far fa-cog fa-spin"></i>');
        $this->assertEquals(FAR::icon('cog')->pulse(), '<i class="far fa-cog fa-pulse"></i>');
        $this->assertEquals(FAR::icon('cog')->fixedWidth(), '<i class="far fa-cog fa-fw"></i>');
        $this->assertEquals(FAR::icon('cog')->li(), '<i class="far fa-cog fa-li"></i>');
        $this->assertEquals(FAR::icon('cog')->border(), '<i class="far fa-cog fa-border"></i>');
        $this->assertEquals(FAR::icon('cog')->pullLeft(), '<i class="far fa-cog fa-pull-left"></i>');
        $this->assertEquals(FAR::icon('cog')->pullRight(), '<i class="far fa-cog fa-pull-right"></i>');

        $this->assertEquals(FAR::icon('cog')->size(FAR::SIZE_2X), '<i class="far fa-cog fa-2x"></i>');
        $this->assertEquals(FAR::icon('cog')->size(FAR::SIZE_3X), '<i class="far fa-cog fa-3x"></i>');
        $this->assertEquals(FAR::icon('cog')->size(FAR::SIZE_4X), '<i class="far fa-cog fa-4x"></i>');
        $this->assertEquals(FAR::icon('cog')->size(FAR::SIZE_5X), '<i class="far fa-cog fa-5x"></i>');
        $this->assertEquals(FAR::icon('cog')->size(FAR::SIZE_LARGE), '<i class="far fa-cog fa-lg"></i>');

        $this->assertEquals(FAR::icon('cog')->rotate(FAR::ROTATE_90), '<i class="far fa-cog fa-rotate-90"></i>');
        $this->assertEquals(FAR::icon('cog')->rotate(FAR::ROTATE_180), '<i class="far fa-cog fa-rotate-180"></i>');
        $this->assertEquals(FAR::icon('cog')->rotate(FAR::ROTATE_270), '<i class="far fa-cog fa-rotate-270"></i>');

        $this->assertEquals(FAR::icon('cog')->flip(FAR::FLIP_HORIZONTAL), '<i class="far fa-cog fa-flip-horizontal"></i>');
        $this->assertEquals(FAR::icon('cog')->flip(FAR::FLIP_VERTICAL), '<i class="far fa-cog fa-flip-vertical"></i>');
    }

    public function testIconSizeException()
    {
        $this->expectExceptionMessage(
            'FontAwesome::size() - invalid value. Use one of the constants: lg, sm, xs, 2x, 3x, 4x, 5x, 6x, 7x, 8x, 9x, 10x.'
        );

        FAR::icon('cog')->size('badvalue');
    }

    public function testIconRotateException()
    {
        $this->expectExceptionMessage(
            'FontAwesome::rotate() - invalid value. Use one of the constants: 90, 180, 270.'
        );

        FAR::icon('cog')->rotate('badvalue');
    }

    public function testIconFlipException()
    {
        $this->expectExceptionMessage(
            'FontAwesome::flip() - invalid value. Use one of the constants: horizontal, vertical.'
        );

        FAR::icon('cog')->flip('badvalue');
    }

    public function testIconAddCssClassCondition()
    {
        $this->assertEquals(FAR::$cssPrefix, 'far');
        $this->assertEquals((string)FAR::icon('cog')->addCssClass('highlight', true), '<i class="far fa-cog highlight"></i>');

        $this->expectExceptionMessage('Condition is false');

        FAR::icon('cog')->addCssClass('highlight', false, true);
    }
}


================================================
FILE: tests/unit/runtime/.gitignore
================================================
*
!.gitignore
!assets

================================================
FILE: tests/unit/runtime/assets/.gitignore
================================================
*
!.gitignore
Download .txt
gitextract__3qv48g6/

├── .gitignore
├── .scrutinizer.yml
├── .travis.yml
├── AssetBundle.php
├── CHANGELOG.md
├── CdnFreeAssetBundle.php
├── CdnProAssetBundle.php
├── FA.php
├── FAB.php
├── FAL.php
├── FAR.php
├── FAS.php
├── FontAwesome.php
├── LICENSE
├── NpmFreeAssetBundle.php
├── NpmProAssetBundle.php
├── README.md
├── bin/
│   ├── .gitignore
│   └── convertNames.sh
├── cdn/
│   └── AssetBundle.php
├── component/
│   ├── Icon.php
│   ├── Stack.php
│   └── UnorderedList.php
├── composer.json
├── phpunit.xml.dist
└── tests/
    └── unit/
        ├── .gitignore
        ├── TestCase.php
        ├── bootstrap.php
        ├── config/
        │   ├── .gitignore
        │   └── main.php
        ├── fontawesome/
        │   └── MainTest.php
        └── runtime/
            ├── .gitignore
            └── assets/
                └── .gitignore
Download .txt
SYMBOL INDEX (58 symbols across 17 files)

FILE: AssetBundle.php
  class AssetBundle (line 15) | class AssetBundle extends CdnFreeAssetBundle

FILE: CdnFreeAssetBundle.php
  class CdnFreeAssetBundle (line 14) | class CdnFreeAssetBundle extends \yii\web\AssetBundle

FILE: CdnProAssetBundle.php
  class CdnProAssetBundle (line 14) | class CdnProAssetBundle extends \yii\web\AssetBundle

FILE: FA.php
  class FA (line 15) | class FA extends FontAwesome

FILE: FAB.php
  class FAB (line 14) | class FAB extends FontAwesome

FILE: FAL.php
  class FAL (line 14) | class FAL extends FontAwesome

FILE: FAR.php
  class FAR (line 14) | class FAR extends FontAwesome

FILE: FAS.php
  class FAS (line 14) | class FAS extends FontAwesome

FILE: FontAwesome.php
  class FontAwesome (line 16) | class FontAwesome
    method icon (line 37) | public static function icon($name, $options = [])
    method i (line 50) | public static function i($name, $options = [])
    method stack (line 61) | public static function stack($options = [])
    method s (line 73) | public static function s($options = [])
    method ul (line 82) | public static function ul($options = [])

FILE: NpmFreeAssetBundle.php
  class NpmFreeAssetBundle (line 14) | class NpmFreeAssetBundle extends \yii\web\AssetBundle

FILE: NpmProAssetBundle.php
  class NpmProAssetBundle (line 14) | class NpmProAssetBundle extends \yii\web\AssetBundle

FILE: cdn/AssetBundle.php
  class AssetBundle (line 17) | class AssetBundle extends CdnFreeAssetBundle

FILE: component/Icon.php
  class Icon (line 19) | class Icon
    method __construct (line 31) | public function __construct($cssPrefix, $name, $options = [])
    method __toString (line 45) | public function __toString()
    method inverse (line 58) | public function inverse()
    method spin (line 67) | public function spin()
    method pulse (line 76) | public function pulse()
    method fixedWidth (line 85) | public function fixedWidth()
    method li (line 94) | public function li()
    method border (line 103) | public function border()
    method pullLeft (line 112) | public function pullLeft()
    method pullRight (line 121) | public function pullRight()
    method size (line 131) | public function size($value)
    method rotate (line 164) | public function rotate($value)
    method flip (line 184) | public function flip($value)
    method addCssClass (line 207) | public function addCssClass($class, $condition = true, $throw = false)

FILE: component/Stack.php
  class Stack (line 18) | class Stack
    method __construct (line 49) | public function __construct($iconCssPrefix, $options = [])
    method __toString (line 62) | public function __toString()
    method icon (line 92) | public function icon($icon, $options = [])
    method text (line 108) | public function text($text = '', $options = [])
    method on (line 124) | public function on($icon, $options = [])

FILE: component/UnorderedList.php
  class UnorderedList (line 18) | class UnorderedList
    method __construct (line 36) | public function __construct($iconCssPrefix, $options = [])
    method __toString (line 52) | public function __toString()
    method item (line 62) | public function item($label, $options = [])

FILE: tests/unit/TestCase.php
  class TestCase (line 17) | abstract class TestCase extends \PHPUnit\Framework\TestCase
    method setUp (line 22) | protected function setUp()
    method mock_application (line 33) | protected function mock_application($appClass = '\yii\console\Applicat...
    method get_param (line 48) | public function get_param($name, $default = null)
    method tearDown (line 61) | protected function tearDown()
    method destroy_application (line 69) | protected function destroy_application()

FILE: tests/unit/fontawesome/MainTest.php
  class MainTest (line 18) | class MainTest extends \rmrevin\yii\fontawesome\tests\unit\TestCase
    method testMain (line 21) | public function testMain()
    method testStackOutput (line 35) | public function testStackOutput()
    method testUlOutput (line 107) | public function testUlOutput()
    method testAnotherPrefix (line 147) | public function testAnotherPrefix()
    method testIconOutput (line 171) | public function testIconOutput()
    method testIconSizeException (line 201) | public function testIconSizeException()
    method testIconRotateException (line 210) | public function testIconRotateException()
    method testIconFlipException (line 219) | public function testIconFlipException()
    method testIconAddCssClassCondition (line 228) | public function testIconAddCssClassCondition()
Condensed preview — 33 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (108K chars).
[
  {
    "path": ".gitignore",
    "chars": 78,
    "preview": "/.idea\n/vendor\n/coverage\n/node_modules\n/package.json\n/package.lock\n/yarn.lock\n"
  },
  {
    "path": ".scrutinizer.yml",
    "chars": 562,
    "preview": "build:\n    environment:\n        php:\n            version: 7.1\n    dependencies:\n        before:\n            - composer g"
  },
  {
    "path": ".travis.yml",
    "chars": 645,
    "preview": "dist: trusty\n\nlanguage: php\n\nphp:\n  - 7.1\n  - 7.2\n  - 7.3\n\nmatrix:\n  fast_finish: true\n\nsudo: false\n\ncache:\n  directorie"
  },
  {
    "path": "AssetBundle.php",
    "chars": 297,
    "preview": "<?php\n/**\n * AssetBundle.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawesome;\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 6280,
    "preview": "2021-01-13 - 3.7.0\n------------------\n* `Font Awesome` updated to version `5.15.1`.\n\n2020-06-27 - 3.6.0\n----------------"
  },
  {
    "path": "CdnFreeAssetBundle.php",
    "chars": 385,
    "preview": "<?php\n/**\n * CdnFreeAssetBundle.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontaw"
  },
  {
    "path": "CdnProAssetBundle.php",
    "chars": 382,
    "preview": "<?php\n/**\n * CdnProAssetBundle.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawe"
  },
  {
    "path": "FA.php",
    "chars": 282,
    "preview": "<?php\n/**\n * FA.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawesome;\n\n/**\n * C"
  },
  {
    "path": "FAB.php",
    "chars": 242,
    "preview": "<?php\n/**\n * FAB.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawesome;\n\n/**\n * "
  },
  {
    "path": "FAL.php",
    "chars": 242,
    "preview": "<?php\n/**\n * FAL.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawesome;\n\n/**\n * "
  },
  {
    "path": "FAR.php",
    "chars": 242,
    "preview": "<?php\n/**\n * FAR.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawesome;\n\n/**\n * "
  },
  {
    "path": "FAS.php",
    "chars": 242,
    "preview": "<?php\n/**\n * FAS.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawesome;\n\n/**\n * "
  },
  {
    "path": "FontAwesome.php",
    "chars": 53852,
    "preview": "<?php\n/**\n * FontAwesome.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawesome;\n"
  },
  {
    "path": "LICENSE",
    "chars": 1089,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2014 Revin Roman Borisovich\n\nPermission is hereby granted, free of charge, to any p"
  },
  {
    "path": "NpmFreeAssetBundle.php",
    "chars": 558,
    "preview": "<?php\n/**\n * NpmFreeAssetBundle.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontaw"
  },
  {
    "path": "NpmProAssetBundle.php",
    "chars": 569,
    "preview": "<?php\n/**\n * NpmProAssetBundle.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawe"
  },
  {
    "path": "README.md",
    "chars": 10622,
    "preview": "Yii 2 [Font Awesome](http://fortawesome.github.io/Font-Awesome/) Asset Bundle\n===============================\n\nThis exte"
  },
  {
    "path": "bin/.gitignore",
    "chars": 11,
    "preview": "result.txt\n"
  },
  {
    "path": "bin/convertNames.sh",
    "chars": 631,
    "preview": "#!/bin/bash\n\nDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n\nVARIABLES_PATH=\"${DIR}/../vendor/fortawesome/font-"
  },
  {
    "path": "cdn/AssetBundle.php",
    "chars": 350,
    "preview": "<?php\n/**\n * AssetBundle.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawesome\\c"
  },
  {
    "path": "component/Icon.php",
    "chars": 5843,
    "preview": "<?php\n/**\n * Icon.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawesome\\componen"
  },
  {
    "path": "component/Stack.php",
    "chars": 2984,
    "preview": "<?php\n/**\n * Stack.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawesome\\compone"
  },
  {
    "path": "component/UnorderedList.php",
    "chars": 1735,
    "preview": "<?php\n/**\n * UnorderedList.php\n * @author Revin Roman\n * @link https://rmrevin.com\n */\n\nnamespace rmrevin\\yii\\fontawesom"
  },
  {
    "path": "composer.json",
    "chars": 1138,
    "preview": "{\n  \"name\": \"rmrevin/yii2-fontawesome\",\n  \"description\": \"Asset Bundle for Yii2 with Font Awesome\",\n  \"keywords\": [\n    "
  },
  {
    "path": "phpunit.xml.dist",
    "chars": 781,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<phpunit bootstrap=\"./tests/unit/bootstrap.php\"\n         colors=\"true\"\n         c"
  },
  {
    "path": "tests/unit/.gitignore",
    "chars": 15,
    "preview": "runtime/cache/*"
  },
  {
    "path": "tests/unit/TestCase.php",
    "chars": 1865,
    "preview": "<?php\n/**\n * TestCase.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawesome\\test"
  },
  {
    "path": "tests/unit/bootstrap.php",
    "chars": 429,
    "preview": "<?php\n/**\n * bootstrap.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\ndefine('YII_ENABLE_ERROR_HANDLER', tr"
  },
  {
    "path": "tests/unit/config/.gitignore",
    "chars": 14,
    "preview": "main-local.php"
  },
  {
    "path": "tests/unit/config/main.php",
    "chars": 385,
    "preview": "<?php\n/**\n * main.php\n * @author Roman Revin http://phptime.ru\n */\n\n$baseDir = realpath(__DIR__ . '/..');\n\nreturn [\n    "
  },
  {
    "path": "tests/unit/fontawesome/MainTest.php",
    "chars": 9706,
    "preview": "<?php\n/**\n * MainTest.php\n * @author Revin Roman\n * @link https://rmrevin.ru\n */\n\nnamespace rmrevin\\yii\\fontawesome\\test"
  },
  {
    "path": "tests/unit/runtime/.gitignore",
    "chars": 21,
    "preview": "*\n!.gitignore\n!assets"
  },
  {
    "path": "tests/unit/runtime/assets/.gitignore",
    "chars": 13,
    "preview": "*\n!.gitignore"
  }
]

About this extraction

This page contains the full source code of the rmrevin/yii2-fontawesome GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 33 files (100.1 KB), approximately 31.4k tokens, and a symbol index with 58 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!