Gå til innhold

Tilrettelagt CODE tag for kildekode


Anbefalte innlegg

Er det mulig å konfigurere CODE tagen til å beholde tabulator (evnt. konvertere til space), samt bruke courier font? Tror det vil gjøre lesing av postet kildekode langt enklere på programmeringsdelen av forumet. Noen programmeringsspråk er også avhengig av riktig indentering.

 

Eksempel slik det er nå:

 

bool XmlParser::ParsePrologDoctypeExternalId()
// @summary
//
// @returns 'true' if parsing succeeded.
//  	'false' if parsing failed.
//
// @throws  XmlParser::XmlParserException
//
{
bool parse_literal = true;
char c;
string s;

// ::todo implement!
throw XmlParserException(current_parse_line, ERROR_MESSAGE_PROLOG_12);

// Read identifier.
s = PeekChars(6);

if(s == "SYSTEM")
{
 ParseChars(6);

 // Read whitespace.
 ParseWhitespace();

 // Read systemliteral.
 // ::todo - add new execption.
 c = ParseChar();
 if(c != '"' && c != '\'') throw XmlParserException(current_parse_line, ERROR_MESSAGE_PROLOG_12);

 while( ParseChar() != c )
 {
 }

 return true;
}

if(s == "PUBLIC")
{
 ParseChars(6);

 // Read whitespace.
 ParseWhitespace();

 // Read pubidliteral
 // ::todo - add new execption.
 // ::todo - halt on tab character.
 // ::todo - add alpha test for IsCharacter!
 c = ParseChar();
 if(c == '"')
 {
 	while(parse_literal)
 	{
   c = PeekChar();
   if(IsCharacter(c) || IsDigitChar(c))
   {
   	ParseChar();
   	continue;
   }

   // ::todo improve
   switch(c)
   {
   	case '-':  case '\'':  case '(':  case ')': 
   	case '+':  case ',':   case '.':  case '/': 
   	case ':':  case '=':   case '?':  case ';': 
   	case '!':  case '*':   case '#':  case '@': 
   	case '$':  case '_':   case '%':  case ' ': 
   	case 0xD:  case 0xA: ParseChar(); break;
   	default: parse_literal = false; break;
   }
 	}
 }
 else if(c == '\'')
 {
 	while(parse_literal)
 	{
   c = PeekChar();
   if(IsCharacter(c) || IsDigitChar(c))
   {
   	ParseChar();
   	continue;
   }

   // ::todo improve
   switch(c)
   {
   	case '-':  case '(':  case ')': 
   	case '+':  case ',':   case '.':  case '/': 
   	case ':':  case '=':   case '?':  case ';': 
   	case '!':  case '*':   case '#':  case '@': 
   	case '$':  case '_':   case '%':  case ' ': 
   	case 0xD:  case 0xA: ParseChar(); break;
   	default: parse_literal = false; break;
   }
 	}
 }
 else
 {
 	throw XmlParserException(current_parse_line, ERROR_MESSAGE_PROLOG_12);
 }

 // Read whitespace.
 ParseWhitespace();

 // Read systemliteral.
 // ::todo - add new execption.
 c = ParseChar();
 if(c != '"' && c != '\'') throw XmlParserException(current_parse_line, ERROR_MESSAGE_PROLOG_12);

 while( ParseChar() != c )
 {
 }

 return true;
}

return false;
}

 

 

Forslag (font=courier, size=1, tabs=3space):

QUOTE
bool XmlParser::ParsePrologDoctypeExternalId()
// @summary
//
// @returns 'true' if parsing succeeded.
//          'false' if parsing failed.
//
// @throws  XmlParser::XmlParserException
//
{
  bool parse_literal = true;
  char c;
  string s;

  // ::todo implement!
  throw XmlParserException(current_parse_line, ERROR_MESSAGE_PROLOG_12);

  // Read identifier.
  s = PeekChars(6);

  if(s == "SYSTEM")
  {
      ParseChars(6);

      // Read whitespace.
      ParseWhitespace();

      // Read systemliteral.
      // ::todo - add new execption.
      c = ParseChar();
      if(c != '"' && c != '\'') throw XmlParserException(current_parse_line, ERROR_MESSAGE_PROLOG_12);

      while( ParseChar() != c )
      {
      }

      return true;
  }

  if(s == "PUBLIC")
  {
      ParseChars(6);

      // Read whitespace.
      ParseWhitespace();

      // Read pubidliteral
      // ::todo - add new execption.
      // ::todo - halt on tab character.
      // ::todo - add alpha test for IsCharacter!
      c = ParseChar();
      if(c == '"')
      {
        while(parse_literal)
        {
            c = PeekChar();
            if(IsCharacter© || IsDigitChar©)
            {
              ParseChar();
              continue;
            }

            // ::todo improve
            switch©
            {
              case '-':  case '\'':  case '(':  case ')':
              case '+':  case ',':  case '.':  case '/':
              case ':':  case '=':  case '?':  case ';':
              case '!':  case '*':  case '#':  case '@':
              case '$':  case '_':  case '%':  case ' ':
              case 0xD:  case 0xA: ParseChar(); break;
              default: parse_literal = false; break;
            }
        }
      }
      else if(c == '\'')
      {
        while(parse_literal)
        {
            c = PeekChar();
            if(IsCharacter© || IsDigitChar©)
            {
              ParseChar();
              continue;
            }

            // ::todo improve
            switch©
            {
              case '-':  case '(':  case ')':
              case '+':  case ',':  case '.':  case '/':
              case ':':  case '=':  case '?':  case ';':
              case '!':  case '*':  case '#':  case '@':
              case '$':  case '_':  case '%':  case ' ':
              case 0xD:  case 0xA: ParseChar(); break;
              default: parse_literal = false; break;
            }
        }
      }
      else
      {
        throw XmlParserException(current_parse_line, ERROR_MESSAGE_PROLOG_12);
      }

      // Read whitespace.
      ParseWhitespace();

      // Read systemliteral.
      // ::todo - add new execption.
      c = ParseChar();
      if(c != '"' && c != '\'') throw XmlParserException(current_parse_line, ERROR_MESSAGE_PROLOG_12);

      while( ParseChar() != c )
      {
      }

      return true;
  }

  return false;
}
Endret av hishadow
Lenke til kommentar
Videoannonse
Annonse

<?

$IncludeDir  = "./includes";
$DefaultPath = "./includes/index.inc";

if (isset($page)) {
$page = stripslashes(strip_tags($page));
$Forbidden1 = ereg("\.\./", $page);
$Forbidden2 = ereg("/", $page);

 if ($Forbidden1 OR $Forbidden2) {
 echo "<h1>Advarsel</h1>\n";
 echo "<p>Forespørsler på tvers av definerte \n";
 echo "områder er ikke tillatt.</p>\n";
 }
 else {
   if (@fopen("$IncludeDir/$page.inc", "r")) {
   include ("$IncludeDir/$page.inc");
   }
   elseif (!(@fopen("$IncludeDir/$page.inc", "r"))) {
   echo "<h1>Server Error 404</h1>\n";
   echo "<p>The page you requested can not be found</p>\n";
   }
 }
}
else {
include("$DefaultPath");
}

?>

Ser bedre ut nå, gjør det ikke? Men mangler det ikke highlight? :hmm:

Lenke til kommentar
  • 3 måneder senere...
En ny og bedre CODE-tagg vil være tilgjengelig etter forumoppgraderingen.

4981149[/snapback]

 

Synes ikke den ser så veldig mye bedre ut. Er dette noe det jobbes med?

 

Ørjan...

 

import shlex

class Node:
def __init__(self, l, r, d):
 # initialize members.	
 self.left = l
 self.right = r
 self.data = d

# Function that takes a token list as input and
# return a reversed string.
def reverceTokens(tok):
s = tok.get_token()
t = ''
if s != '':
 t=reverseTokens(tok)
if t == ' ':
 return(s)
else:
 return(t + " " + s)

# Function that returns a precedence number based on the operator.
def returnPrecedence(operator):
if operator == ')':
 return 3
elif operator == '*':
 return 2
elif operator == '/':
 return 2
elif operator == '+':
 return 1
elif operator == '-':
 return 1

 

Skulle sett slik ut.

 

import shlex

class Node:
   def __init__(self, l, r, d):
       # initialize members.	
       self.left = l
       self.right = r
       self.data = d

# Function that takes a token list as input and
# return a reversed string.
def reverceTokens(tok):
   s = tok.get_token()
   t = ''
   if s != '':
       t=reverseTokens(tok)
   if t == ' ':
       return(s)
   else:
       return(t + " " + s)

# Function that returns a precedence number based on the operator.
def returnPrecedence(operator):
   if operator == ')':
       return 3
   elif operator == '*':
       return 2
   elif operator == '/':
       return 2
   elif operator == '+':
       return 1
   elif operator == '-':
       return 1

Endret av Orjanp
Lenke til kommentar

Det er ikke snakk om at vi ikke "gidder". En oppgradering av forumet er en prosess som tar veldig lang tid, og krever nøye planlegging og testing. Vi har testet siste versjon av IPB, og det viser seg at denne versjonen har langt dårligere ytelse enn den versjonen vi kjører i dag. Ytelse er vår første prioritet, og det er ikke aktuelt å oppgradere bare for å få enda mer bloats i bytte mot lavere ytelse. Når det er sagt, så er ikke en oppgradering utelukket. Vi kjører hele tiden nye tester, og vurderer resultatene av disse fortløpende.

 

Nå sier jeg ikke at den ønskete funksjonen i dette tilfellet er bloatete og unyttig, jeg er faktisk fullstendig enig i at dette burde være implementert. Men det er dessverre ikke gjort ved et lite fingerknips.

Lenke til kommentar
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...