vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 2.x Full Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=4)
-   -   [Release v2] Visual Basic Colour coding (https://vborg.vbsupport.ru/showthread.php?t=19005)

John Percival 06-01-2001 10:00 PM

My first hack for vB :D

In functions.php, add this in at line 425, just after several lines of code about $replacearray

PHP Code:

// START VISUAL BASIC PARSING HACK
if (!function_exists("visbasparse")) {
  global 
$kw;
  if (
$incp) {
    include(
"./visbas.php");
  } else {
    include(
"./admin/visbas.php");
  }
}
$searcharray[] = "/(\[)(vbcode)(])(\r\n)*(.*)(\[\/vbcode\])/esiU";
$replacearray[] = "visbasparse('\\5')";
// END VISUAL BASIC PARSING HACK 

And then upload visbas.php to the admin directory:
PHP Code:

<?php
error_reporting
(7);
$kw=array("#Const","#If","Abs","Add","Alias","And","Any","AppActivate","Array","As","Asc","Atn","Base","Beep",
"Boolean","Byte","ByVal","CBool","CByte","CCur","CDBl","CDate","CDec","CInt","CLng","CSng","CStr","CVErr","CVar",
"Call","Case","ChDir","ChDrive","Chr","Clear","Close","Collection","Command","Compare","Const","Cos","CreateObject",
"CurDir","Currency","DDB","Date","DateAdd","DateDiff","DatePart","DateSerial","DateValue","Day","Debug","Declare",
"DefBool","DefByte","DefCur","DefDate","DefDbl","DefDec","DefInt","DefLng","DefObj","DefSng","DefStr","DefVar",
"DeleteSetting","Dim","Dir","Do","DoEvents","Double","EOF","Each","Else","ElseIf","End","Endif","Environ","Eqv",
"Erase","Err","Error","Exit","Exp","Explicit","FV","FileAttr","FileCopy","FileDateTime","FileLen","Filelen","Fix",
"For","Format","Function","Get","GetAllSettings","GetAttr","GetObject","GetSetting","Global","GoSub","GoTo","Hex",
"Hour","IIR","IPmt","If","Imp","In","InStr","Input #","Int","Integer","Is","IsArray","IsDate","IsEmpty","IsError",
"IsMissing","IsNull","IsNumeric","IsObject","Item","Kill","LBound","LCase","LOF","LSet","LTrim","Left","Len","Let",
"Lib","Like","Line Input #","Loc","Lock","Log","Long","Loop","MIRR","Me","Mid","Minute","MkDir","Mod","Module",
"Month","MsgBox","NPV","NPer","Name","New","Next","Not","Now","Object","Oct","On","Open","Option","Or","PPmt","PV",
"Pmt","Print","Print #","Private","Property","Public","Put","QBColor","RGB","RSet","RTrim","Raise","Randomize",
"Rate","ReDim","Remove","Reset","Resume","Return","Right","RmDir","Rnd","SLN","SYD","SaveSetting","Second","Seek",
"Select","SendKeys","Set","SetAttr","Sgn","Shell","Sin","Single","Space","Spc","Sqr","Static","Step","Stop","Str",
"StrComp","StrConv","String","Sub","Switch","Tab","Tan","Then","Time","TimeSerial","TimeValue","Timer","To","Trim",
"Type","TypeName","UBound","UCase","Unlock","Until","Val","VarType","Variant","Weekday","Wend","While","Width #",
"With","Write #","Xor","Year",
"Optional","InStrRev","Replace","Split","Join");

function 
visbasparse($text) {
  global 
$kw;

  
$text=str_replace("\\'""'"$text);

    
$lines=explode("\n",$text);
    
$val="";
    while (list(
$brr,$line)=each($lines)) {

        if (
substr(trim($line),0,1)=="'" or strtolower(substr(trim($line),0,4))=="rem ") {
            
$line="<font color=\"#007F00\">$line</font>";
        } else {
            
$quoteplace=strrpos($line,"'");
            if (
$quoteplace>0) {
                
$beforequote=substr($line,0,$quoteplace);
                if (
countchar($beforequote,"\"")%2==0) {
                    
$afterquote="<font color=\"#007F00\">".substr($line,$quoteplace)."</font>";
                    
$codebit=$beforequote;
                } else {
                    
$afterquote="";
                    
$codebit=$line;
                }
            } else {
                
$afterquote="";
                
$codebit=$line;
            }

            
reset ($kw);

            
$codebit=$codebit";
            while (list(
$key,$keyword)=each($kw)) {

                
$codebit=ereg_replace("([\r\n\\(\\)>, .])$keyword([\r\n <,.$\\(\\)])","\\1<font color=\"#00007F\">$keyword</font>\\2",$codebit);

            }
            
$codebit=substr($codebit,1);

            if (
$afterquote!="") {
                
$line=$codebit.$afterquote;
            } else {
                
$line=$codebit;
            }
        }
        
$val.=$line;
    }

  
$val=str_replace("'""\'"$val);
  
$val str_replace("\\\"","\"",$val);
  if (
substr($val,0,1)=="\n" or substr($val,0,1)=="\r") {
    
$val=substr($val,1);
  }
  return 
"</normalfont><blockquote><pre><smallfont>visual basic code:</smallfont><hr>" str_replace("<br>"""$val) . "<hr></pre><normalfont></blockquote>";

}

?>

Users can then use [vbcode] tags to access this.

I know that this is not very useful for many people, but it could be easily modified for other programming languages.

John

[edit - there's something funny going on with the slashes in the PHP code. Quote this message, and use the code straight from the reply window to get it accurately within any escaping problems.]

ThomasP 06-02-2001 12:50 PM

Wow, this is amazing!!!

Together with the big amount of "wordfiles" at http://www.ultraedit.com/downloads/additional.html this is very helpful,

Thanks & cheers,
-Tom

filburt1 03-27-2002 12:20 AM

Anybody know how to install this on vB 2.2.4? I don't see anything about $replacearray on 425, so would somebody please quote a few lines of code I can search for?

filburt1 03-27-2002 07:53 PM

Um...please? :(

Admin 03-28-2002 08:31 AM

Add the code John posted right BEFORE this:
Code:

      }  // end version check
Nice hack John! Jelsoft should really hire you to work with them! ;)

filburt1 04-09-2002 01:54 AM

Cheers, Chen, it worked :) Like John said though, I still had to quote his message and then copy the text. Weird. *shrug*

inetd 04-09-2002 10:11 AM

please post screenshot of this hack. :)

eiSecure 06-12-2002 06:46 PM

Quote:

Originally posted by inetd
please post screenshot of this hack. :)
You can see it in action at: http://www.vbforums.com

cybrcyfr 08-09-2002 04:01 PM

I'm not so good at reg exp... Here you are only replacing if the keyword is found in the exact case it is in the $kw array. How can you change that? We have a ton of developers and they never follow standards.

What would be really nice is if it could find them in ANY case, and format them to the right case (and add color colding).

codebit=ereg_replace("([\r\n\\(\\)>, .])$keyword([\r\n <,.$\\(\\)])","\\1<font color=\"#FF0000\">$keyword</font>\\2",$codebit);

Admin 08-09-2002 04:06 PM

I haven't looked at the code, but from what you posted I think you will need to replace all calls to "ereg_replace" with calls to "eregi_replace".


All times are GMT. The time now is 01:46 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01245 seconds
  • Memory Usage 1,807KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_code_printable
  • (2)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete