habratopiksのソース構文の強調表示

こんにちは

まず第一に、私は招待してくれたw999dに感謝したいです:)それに応えて、Habrachanのために何かいいことをしたかったです:)

サンドボックスでHabréの最初の投稿を書いたとき、Habrは、何らかの不思議な理由で、投稿の構文強調タグをサポートしていないことに気付きました。 プログラミングに関する記事を書くときは、ソースコードをフォーマットする必要があります。そうしないと、誰も読むことができません。 それから私は何らかの形でサードパーティのフォーマッタで管理しましたが、そのPHPコードの作業は私にはあまり向いていません。 しかし、habrachanの通常のフォーマッタを作成するという考えは頭に浮かびました。 しかし、自転車を発明したことが判明したとしても、フォーマッターのソースを整理するのに費やした時間は間違いなく無駄では​​ありませんでした。


そこで、HabraSyntaxフォーマッターの最もアルファ版を紹介します: http ://habrasyntax.fractalizer.ru

フォーマット後、次のようになります。

<?php
/* ======================================================================*\
|| #################################################################### ||
|| # vBulletin 3.7.3
|| # ---------------------------------------------------------------- # ||
|| # Copyright ©2000-2008 Jelsoft Enterprises Ltd. All Rights Reserved. ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
|| # www.vbulletin.com | www.vbulletin.com/license.html # ||
|| #################################################################### ||
\*======================================================================
*/

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting ( E_ALL & ~ E_NOTICE ) ;

// #################### DEFINE IMPORTANT CONSTANTS #######################
define ( ' THIS_SCRIPT ' , ' ajax ' ) ;
define ( ' CSRF_PROTECTION ' , true ) ;
define ( ' LOCATION_BYPASS ' , 1 ) ;
define ( ' NOPMPOPUP ' , 1 ) ;

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$ phrasegroups = array ( ' posting ' ) ;
switch ( $ _POST [ ' do ' ] )
{
case ' fetchuserfield ' :
case ' saveuserfield ' :
$ phrasegroups [ ] = ' cprofilefield ' ;
$ phrasegroups [ ] = ' user ' ;
}

// get special data templates from the datastore
$ specialtemplates = array ( ' bbcodecache ' ) ;

// pre-cache templates used by all actions
$ globaltemplates = array ( ) ;

// pre-cache templates used by specific actions
$ actiontemplates = array (
' fetchuserfield ' = > array (
' memberinfo_customfield_edit ' ,
' userfield_checkbox_option ' ,
' userfield_optional_input ' ,
' userfield_radio ' ,
' userfield_radio_option ' ,
' userfield_select ' ,
' userfield_select_option ' ,
' userfield_select_multiple ' ,
' userfield_textarea ' ,
' userfield_textbox ' ,
)
) ;

$ _POST [ ' ajax ' ] = 1 ;

// ######################### REQUIRE BACK-END ############################
require_once ( ' ./global.php ' ) ;
require_once ( DIR . ' /includes/class_xml.php ' ) ;

// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################

( $ hook = vBulletinHook :: fetch_hook ( ' ajax_start ' ) ) ? eval ( $ hook ) : false ;

// #############################################################################
// user name search

if ( $ _POST [ ' do ' ] = = ' usersearch ' )
{
$ vbulletin -> input -> clean_array_gpc ( ' p ' , array ( ' fragment ' = > TYPE_STR ) ) ;

$ vbulletin -> GPC [ ' fragment ' ] = convert_ urlencode d_unicode ( $ vbulletin -> GPC [ ' fragment ' ] ) ;

if ( $ vbulletin -> GPC [ ' fragment ' ] ! = ' ' AND strlen ( $ vbulletin -> GPC [ ' fragment ' ] ) > = 3 )
{
$ fragment = htmlspecialchars_uni ( $ vbulletin -> GPC [ ' fragment ' ] ) ;
}
else
{
$ fragment = ' ' ;
}

$ xml = new vB_AJAX_XML_Builder ( $ vbulletin , ' text/xml ' ) ;
$ xml -> add_group ( ' users ' ) ;

if ( $ fragment ! = ' ' )
{
$ users = $ db -> query_read_slave ( "
SELECT userid, username FROM
" . TABLE_PREFIX . " user
WHERE username LIKE('
" . $ db -> escape_string_like ( $ fragment ) . " %')
ORDER BY username
LIMIT 15
" ) ;
while ( $ user = $ db -> fetch_array ( $ users ) )
{
$ xml -> add_tag ( ' user ' , $ user [ ' username ' ] , array ( ' userid ' = > $ user [ ' userid ' ] ) ) ;
}
}

$ xml -> close_group ( ) ;
$ xml -> print_xml ( ) ;
}
FractalizeR's HabraSyntax Source Code Highlighter .


コードは書かれているだけなので、コメントやコメントを歓迎します。

十分な数のプログラミング言語がサポートされているため、... :)楽しんでください。

Source: https://habr.com/ru/post/J75505/


All Articles