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 .







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



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



All Articles