Skip to content
Snippets Groups Projects
Select Git revision
  • 5f99851efe8fe1c9643c8b9c59492101369891d1
  • main default protected
  • studip-rector
  • ci-opt
  • course-members-export-as-word
  • data-vue-app
  • pipeline-improvements
  • webpack-optimizations
  • rector
  • icon-renewal
  • http-client-and-factories
  • jsonapi-atomic-operations
  • vueify-messages
  • tic-2341
  • 135-translatable-study-areas
  • extensible-sorm-action-parameters
  • sorm-configuration-trait
  • jsonapi-mvv-routes
  • docblocks-for-magic-methods
19 results

SmileyFormat.php

Blame
  • Forked from Stud.IP / Stud.IP
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    SmileyFormat.php 1.42 KiB
    <?php
    /**
     * SmileyFormat.php
     *
     * Provides a formatting object for smileys.
     *
     * @author   Jan-Hendrik Willms <tleilax+studip@gmail.com>
     * @category Stud.IP
     * @package  smiley
     * @since    2.3
     * @uses     Smiley
     */
    class SmileyFormat extends TextFormat
    {
        const REGEXP = '(\>|^|\s):([_a-zA-Z][_a-z0-9A-Z-]*):(?=$|\<|\s)';
    
        public function __construct()
        {
            $rules = [];
    
            // Smiley rule
            $rules['smileys'] = [
                'start'    => self::REGEXP,
                'callback' => 'SmileyFormat::smiley'
            ];
    
            // Smiley short notation rule
            $needles = array_keys(Smiley::getShort());
            $needles = array_map('preg_quote', $needles);
            $rules['smileys_short'] = [
                'start'    => '(>|^|\s)(' . implode('|', $needles) . ')(?=$|<|\s)',
                'callback' => 'SmileyFormat::short'
            ];
    
            parent::__construct($rules);
        }
    
        /**
         * Smiley notation defined by name (:name:)
         */
        public static function smiley($markup, $matches)
        {
            return $matches[1] . Smiley::getByName($matches[2])->getImageTag();
        }
    
        /**
         * Smiley short notation as defined in database
         */
        public static function short($markup, $matches)
        {
            $smileys = Smiley::getShort();
            $name    = $smileys[$matches[2]] ?? '';
            return $name
                ? $matches[1] . Smiley::getByName($name)->getImageTag()
                : $matches[0];
        }
    }