GeSHI

GeSHi czylo Generic Syntax Highlighter to klasa służąca do wyświetlania pokolorowanej składni kodu wielu języków programistycznych. Obecnie GeSHi obsługuje języki takie jak: HTML, CSS, C, PHP, JAVA, SQL i inne.

Podstawowe opcje GeSHi

Wraz z klasą mamy plik example.php - jest to w pełni działający skrypt pokazujący możliwości klasy. Wpisujemy kod, wybieramy język i wysyłamy formularz. Zaczniemy od podstaw. Oto przykład kodu kolorującego składnię wybranego języka:
<?php

<?PHP
include('geshi.php');
$language = 'php'; // język kodu
$patch = 'geshi/'; // ścieżka do plików językowych

ob_start(); // tworzymy zmienną przechowującą kod do pokolorowania
?>
echo $foo;
// tutaj jakiś kod PHP do kolorowania
<?PHP
$source = ob_get_contents();
// Cały powyższy kod znajduje się w zmiennej $source
ob_end_clean();

// Tworzymy nowy obiekt klasy
$geshi = new GeSHi($source, $language, $path);
// Wyświetlamy
echo $geshi->parse_code();
To wyświetli "pokolorowany" kod, lecz brakować będzie formatowania i kolorów takich jak w example.php. Rozbudujmy przykład:
<?PHP
ob_start(); // tworzymy zmienną przechowującą kod do pokolorowania
?>
echo $foo;
// tutaj jakiś kod PHP do kolorowania
<?PHP
$source = ob_get_contents();
// Cały powyższy kod znajduje się w zmiennej $source
ob_end_clean();
$language = 'php'; // język kolorowanego kodu

include('geshi.php');
// Tworzymy obiekt
$geshi = new GeSHi($source, $language);
$geshi->enable_classes();
$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 5); // Numerowanie wierszy
$geshi->set_overall_style('font-size: 90%; color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;', true); // ogólne formatowanie (obramowanie i tło)
$geshi->set_line_style('font: normal normal 95% 'Courier New', Courier, monospace; color: #003030;', 'font: bold normal 95% 'Courier New', Courier, monospace; color: #006060;', true);  // wygląd numerów wieszy
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>GeSHi examples</title>
	<style type="text/css">
	<!--
	<?php
		echo $geshi->get_stylesheet(); // style dla danego kodu
	?>
	-->
	</style></head><body>
<?php
// wyświetlenie wyniku
		echo $geshi->parse_code();
?>
enable_line_numbers określa czy numeracja jest włączona i jak ma wyglądać. Jako parametry mamy do wyboru: GESHI_NORMAL_LINE_NUMBERS - normalne numerowanie, GESHI_FANCY_LINE_NUMBERS co X wierszy numer będzie wyszczególniony, GESHI_NO_LINE_NUMBERS - brak numerowania (domyślne). Przy 2 typie podajemy również co ile wierszy wyszczególnić numer: (GESHI_FANCY_LINE_NUMBERS, 5) tj. co pięć. Kolejną opcją dodatkową jest set_case_keywords co może zamienić na duże lub małe litery odpowiednie słowa w kodzie, np dla SQL: "SELECT * FROM tabela". Dodajemy: $geshi->set_case_keywords(GESHI_CAPS_UPPER); lub z GESHI_CAPS_LOWER by mieć małe litery.
Po szczegółowy opis odsyłam do dokumentacji klasy (w katalogu doc/)
RkBlog

PHP w Akcji, 14 July 2008

Comment article
Comment article RkBlog main page Search RSS Contact