: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
'saxophone':'\ud83c\udfb7',
'school_satchel':'\ud83c\udf92',
'scissors':'\u2702\ufe0f',
'scorpion':'\ud83e\udd82',
'scorpius':'\u264f\ufe0f',
'scream_cat':'\ud83d\ude40',
'see_no_evil':'\ud83d\ude48',
'seedling':'\ud83c\udf31',
'shallow_pan_of_food':'\ud83e\udd58',
'shamrock':'\u2618\ufe0f',
'shaved_ice':'\ud83c\udf67',
'shinto_shrine':'\u26e9',
'shopping':'\ud83d\udecd',
'shopping_cart':'\ud83d\uded2',
'signal_strength':'\ud83d\udcf6',
'six_pointed_star':'\ud83d\udd2f',
'skull_and_crossbones':'\u2620\ufe0f',
'sleeping':'\ud83d\ude34',
'sleeping_bed':'\ud83d\udecc',
'slightly_frowning_face':'\ud83d\ude41',
'slightly_smiling_face':'\ud83d\ude42',
'slot_machine':'\ud83c\udfb0',
'small_airplane':'\ud83d\udee9',
'small_blue_diamond':'\ud83d\udd39',
'small_orange_diamond':'\ud83d\udd38',
'small_red_triangle':'\ud83d\udd3a',
'small_red_triangle_down':'\ud83d\udd3b',
'smile_cat':'\ud83d\ude38',
'smiley_cat':'\ud83d\ude3a',
'smiling_imp':'\ud83d\ude08',
'smirk_cat':'\ud83d\ude3c',
'smoking':'\ud83d\udeac',
'sneezing_face':'\ud83e\udd27',
'snowboarder':'\ud83c\udfc2',
'snowflake':'\u2744\ufe0f',
'snowman':'\u26c4\ufe0f',
'snowman_with_snow':'\u2603\ufe0f',
'space_invader':'\ud83d\udc7e',
'spaghetti':'\ud83c\udf5d',
'sparkle':'\u2747\ufe0f',
'sparkler':'\ud83c\udf87',
'sparkling_heart':'\ud83d\udc96',
'speak_no_evil':'\ud83d\ude4a',
'speaker':'\ud83d\udd08',
'speaking_head':'\ud83d\udde3',
'speech_balloon':'\ud83d\udcac',
'speedboat':'\ud83d\udea4',
'spider_web':'\ud83d\udd78',
'spiral_calendar':'\ud83d\uddd3',
'spiral_notepad':'\ud83d\uddd2',
'stadium':'\ud83c\udfdf',
'star_and_crescent':'\u262a\ufe0f',
'star_of_david':'\u2721\ufe0f',
'station':'\ud83d\ude89',
'statue_of_liberty':'\ud83d\uddfd',
'steam_locomotive':'\ud83d\ude82',
'stop_sign':'\ud83d\uded1',
'straight_ruler':'\ud83d\udccf',
'strawberry':'\ud83c\udf53',
'stuck_out_tongue':'\ud83d\ude1b',
'stuck_out_tongue_closed_eyes':'\ud83d\ude1d',
'stuck_out_tongue_winking_eye':'\ud83d\ude1c',
'studio_microphone':'\ud83c\udf99',
'stuffed_flatbread':'\ud83e\udd59',
'sun_behind_large_cloud':'\ud83c\udf25',
'sun_behind_rain_cloud':'\ud83c\udf26',
'sun_behind_small_cloud':'\ud83c\udf24',
'sun_with_face':'\ud83c\udf1e',
'sunflower':'\ud83c\udf3b',
'sunglasses':'\ud83d\ude0e',
'sunrise':'\ud83c\udf05',
'sunrise_over_mountains':'\ud83c\udf04',
'surfing_man':'\ud83c\udfc4',
'surfing_woman':'\ud83c\udfc4‍\u2640\ufe0f',
'suspension_railway':'\ud83d\ude9f',
'sweat_drops':'\ud83d\udca6',
'sweat_smile':'\ud83d\ude05',
'sweet_potato':'\ud83c\udf60',
'swimming_man':'\ud83c\udfca',
'swimming_woman':'\ud83c\udfca‍\u2640\ufe0f',
'symbols':'\ud83d\udd23',
'synagogue':'\ud83d\udd4d',
'syringe':'\ud83d\udc89',
'tanabata_tree':'\ud83c\udf8b',
'telephone_receiver':'\ud83d\udcde',
'telescope':'\ud83d\udd2d',
'thermometer':'\ud83c\udf21',
'thinking':'\ud83e\udd14',
'thought_balloon':'\ud83d\udcad',
'tickets':'\ud83c\udf9f',
'tipping_hand_man':'\ud83d\udc81‍\u2642\ufe0f',
'tired_face':'\ud83d\ude2b',
'tokyo_tower':'\ud83d\uddfc',
'tornado':'\ud83c\udf2a',
'trackball':'\ud83d\uddb2',
'tractor':'\ud83d\ude9c',
'traffic_light':'\ud83d\udea5',
'triangular_flag_on_post':'\ud83d\udea9',
'triangular_ruler':'\ud83d\udcd0',
'trident':'\ud83d\udd31',
'triumph':'\ud83d\ude24',
'trolleybus':'\ud83d\ude8e',
'tropical_drink':'\ud83c\udf79',
'tropical_fish':'\ud83d\udc20',
'trumpet':'\ud83c\udfba',
'tumbler_glass':'\ud83e\udd43',
'twisted_rightwards_arrows':'\ud83d\udd00',
'two_hearts':'\ud83d\udc95',
'two_men_holding_hands':'\ud83d\udc6c',
'two_women_holding_hands':'\ud83d\udc6d',
'u6307':'\ud83c\ude2f\ufe0f',
'u6708':'\ud83c\ude37\ufe0f',
'u7121':'\ud83c\ude1a\ufe0f',
'umbrella':'\u2614\ufe0f',
'unamused':'\ud83d\ude12',
'underage':'\ud83d\udd1e',
'unicorn':'\ud83e\udd84',
'upside_down_face':'\ud83d\ude43',
'vertical_traffic_light':'\ud83d\udea6',
'vibration_mode':'\ud83d\udcf3',
'video_camera':'\ud83d\udcf9',
'video_game':'\ud83c\udfae',
'volcano':'\ud83c\udf0b',
'volleyball':'\ud83c\udfd0',
'vulcan_salute':'\ud83d\udd96',
'walking_man':'\ud83d\udeb6',
'walking_woman':'\ud83d\udeb6‍\u2640\ufe0f',
'waning_crescent_moon':'\ud83c\udf18',
'waning_gibbous_moon':'\ud83c\udf16',
'warning':'\u26a0\ufe0f',
'wastebasket':'\ud83d\uddd1',
'water_buffalo':'\ud83d\udc03',
'watermelon':'\ud83c\udf49',
'wavy_dash':'\u3030\ufe0f',
'waxing_crescent_moon':'\ud83c\udf12',
'wedding':'\ud83d\udc92',
'weight_lifting_man':'\ud83c\udfcb\ufe0f',
'weight_lifting_woman':'\ud83c\udfcb\ufe0f‍\u2640\ufe0f',
'wheel_of_dharma':'\u2638\ufe0f',
'wheelchair':'\u267f\ufe0f',
'white_check_mark':'\u2705',
'white_circle':'\u26aa\ufe0f',
'white_flag':'\ud83c\udff3\ufe0f',
'white_flower':'\ud83d\udcae',
'white_large_square':'\u2b1c\ufe0f',
'white_medium_small_square':'\u25fd\ufe0f',
'white_medium_square':'\u25fb\ufe0f',
'white_small_square':'\u25ab\ufe0f',
'white_square_button':'\ud83d\udd33',
'wilted_flower':'\ud83e\udd40',
'wind_chime':'\ud83c\udf90',
'wind_face':'\ud83c\udf2c',
'wine_glass':'\ud83c\udf77',
'woman_artist':'\ud83d\udc69‍\ud83c\udfa8',
'woman_astronaut':'\ud83d\udc69‍\ud83d\ude80',
'woman_cartwheeling':'\ud83e\udd38‍\u2640\ufe0f',
'woman_cook':'\ud83d\udc69‍\ud83c\udf73',
'woman_facepalming':'\ud83e\udd26‍\u2640\ufe0f',
'woman_factory_worker':'\ud83d\udc69‍\ud83c\udfed',
'woman_farmer':'\ud83d\udc69‍\ud83c\udf3e',
'woman_firefighter':'\ud83d\udc69‍\ud83d\ude92',
'woman_health_worker':'\ud83d\udc69‍\u2695\ufe0f',
'woman_judge':'\ud83d\udc69‍\u2696\ufe0f',
'woman_juggling':'\ud83e\udd39‍\u2640\ufe0f',
'woman_mechanic':'\ud83d\udc69‍\ud83d\udd27',
'woman_office_worker':'\ud83d\udc69‍\ud83d\udcbc',
'woman_pilot':'\ud83d\udc69‍\u2708\ufe0f',
'woman_playing_handball':'\ud83e\udd3e‍\u2640\ufe0f',
'woman_playing_water_polo':'\ud83e\udd3d‍\u2640\ufe0f',
'woman_scientist':'\ud83d\udc69‍\ud83d\udd2c',
'woman_shrugging':'\ud83e\udd37‍\u2640\ufe0f',
'woman_singer':'\ud83d\udc69‍\ud83c\udfa4',
'woman_student':'\ud83d\udc69‍\ud83c\udf93',
'woman_teacher':'\ud83d\udc69‍\ud83c\udfeb',
'woman_technologist':'\ud83d\udc69‍\ud83d\udcbb',
'woman_with_turban':'\ud83d\udc73‍\u2640\ufe0f',
'womans_clothes':'\ud83d\udc5a',
'womans_hat':'\ud83d\udc52',
'women_wrestling':'\ud83e\udd3c‍\u2640\ufe0f',
'world_map':'\ud83d\uddfa',
'worried':'\ud83d\ude1f',
'writing_hand':'\u270d\ufe0f',
'yellow_heart':'\ud83d\udc9b',
'yin_yang':'\u262f\ufe0f',
'zipper_mouth_face':'\ud83e\udd10',
'octocat': '<img alt=":octocat:" height="20" width="20" align="absmiddle" src="https://assets-cdn.github.com/images/icons/emoji/octocat.png">',
'showdown': '<span style="font-family: \'Anonymous Pro\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;">S</span>'
* Created by Estevao on 31-05-2015.
* Showdown Converter class
* @param {object} [converterOptions]
showdown.Converter = function (converterOptions) {
* Options used by this converter
* Language extensions used by this converter
* Output modifiers extensions used by this converter
* The flavor set in this converter
setConvFlavor = setFlavor,
* Metadata of the document
* @type {{parsed: {}, raw: string, format: string}}
function _constructor () {
converterOptions = converterOptions || {};
for (var gOpt in globalOptions) {
if (globalOptions.hasOwnProperty(gOpt)) {
options[gOpt] = globalOptions[gOpt];
if (typeof converterOptions === 'object') {
for (var opt in converterOptions) {
if (converterOptions.hasOwnProperty(opt)) {
options[opt] = converterOptions[opt];
throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +
if (options.extensions) {
showdown.helper.forEach(options.extensions, _parseExtension);
* @param {string} [name='']
function _parseExtension (ext, name) {
// If it's a string, the extension was previously loaded
if (showdown.helper.isString(ext)) {
ext = showdown.helper.stdExtName(ext);
if (showdown.extensions[ext]) {
console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +
'Please inform the developer that the extension should be updated!');
legacyExtensionLoading(showdown.extensions[ext], ext);
// END LEGACY SUPPORT CODE
} else if (!showdown.helper.isUndefined(extensions[ext])) {
throw Error('Extension "' + ext + '" could not be loaded. It was either not found or is not a valid extension.');
if (typeof ext === 'function') {
if (!showdown.helper.isArray(ext)) {
var validExt = validate(ext, name);
throw Error(validExt.error);
for (var i = 0; i < ext.length; ++i) {
langExtensions.push(ext[i]);
outputModifiers.push(ext[i]);
if (ext[i].hasOwnProperty('listeners')) {
for (var ln in ext[i].listeners) {
if (ext[i].listeners.hasOwnProperty(ln)) {
listen(ln, ext[i].listeners[ln]);
function legacyExtensionLoading (ext, name) {
if (typeof ext === 'function') {
ext = ext(new showdown.Converter());
if (!showdown.helper.isArray(ext)) {
var valid = validate(ext, name);
throw Error(valid.error);
for (var i = 0; i < ext.length; ++i) {
langExtensions.push(ext[i]);
outputModifiers.push(ext[i]);
default:// should never reach here
throw Error('Extension loader error: Type unrecognized!!!');
* @param {function} callback
function listen (name, callback) {
if (!showdown.helper.isString(name)) {
throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');
if (typeof callback !== 'function') {
throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');
if (!listeners.hasOwnProperty(name)) {
listeners[name].push(callback);
function rTrimInputText (text) {
var rsp = text.match(/^\s*/)[0].length,
rgx = new RegExp('^\\s{0,' + rsp + '}', 'gm');
return text.replace(rgx, '');