Skrypt kolorujący kod programu

Stronę tą wyświetlono już: 433 razy

W końcu ruszyłem swoje cztery litery (a w zasadzie dwie moje ręce) i napisałem skrypt, który koloruje składnię kilku języków programowania, takich jak: C++, Libre Office BASIC, PHP oraz html. Samego skryptu nie publikuję bo raz, że trochę nad nim posiedziałem a dwa, że jest on zoptymalizowany pod moją stronę.

Kolorowanie składni kodu napisanego w C++

Poniżej zamieszczam przykładowy kod źródłowy prostego programu, aby pokazać, jak mój skrypt koloruje kod napisany w tym języku:

Listing 1
  1. // Kod programu liczącego liczbę <b>π</b> z zadanym odchyleniem maksymalnym z wykorzystaniem wzoru Leibniz-a
  2. #define _USE_MATH_DEFINES
  3. #include <math.h>
  4. #include <stdlib.h>
  5. #include <iostream>
  6. int main()
  7. {
  8. double pi = 0;
  9. int n = 1;
  10. double prec = 0;
  11. std::cout<<"Maksymalne odchylenie:";
  12. std::cin>>prec;
  13. while(abs(pi - M_PI) > prec){
  14. pi += 4 * (n % 2 == 0? -1.0: 1.0) / (2 * n - 1);
  15. printf("%.12f %.12f %i
  16. ",pi,abs(pi - M_PI),n);
  17. n++;
  18. }
  19. getchar();
  20. getchar();
  21. return 0;
  22. }

Powyższy kod został użyty przeze mnie na stronie Matematyka → Zagadnienia ogólne → Liczba pi i jej wyznaczanie.

Kolorowanie składni programu napisanego w PHP

Poniżej zamieszczam wycinek kodu źródłowego, skryptu który omawiany był na stronie Programowanie → Skrypty PHP → Skrypt klasy tworzącej wykres słupkowy:

Listing 2
  1. <?
  2. // Skrypt do tworzenia wykresów słupkowych
  3. // Strona domowa: http://obliczeniowo.com.pl/?id=165---skrypt-klasy-tworzacej-wykres-slupkowy
  4. header('Content-type: image/png');
  5. class cValue{
  6. public $v;
  7. public $color;
  8. public $color2;
  9. public $color3;
  10. public $name;
  11. public function __construct($v, $color, $color2, $color3, $name){
  12. $this->v = $v;
  13. $this->color = $color;
  14. $this->color2 = $color2;
  15. $this->color3 = $color3;
  16. $this->name = $name;
  17. }
  18. }

Kolorowanie składni Libre Office BASIC

Przykładowy kod funkcji, którą wcześniej umieściłem na stronie Programowanie → OpenOffice BASIC → Generator liczb losowych z kolorowaniem tła komórek:

Listing 3
  1. Function SetColor(k as double, w as double)
  2. Dim document as object
  3. Dim dispatcher as object
  4. document = ThisComponent.CurrentController.Frame
  5. dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
  6. Dim args2(0) as new com.sun.star.beans.PropertyValue
  7. args(0).Name = "BackgroundColor"
  8. args(0).Value = Int(255 * w / k) * 256 * 256 + Int(255 - 255 * w / k) * 256
  9. dispatcher.executeDispatch(document, ".uno:BackgroundColor","",0,args())
  10. End Function
  11. Sub Generator
  12. Dim document as object
  13. Dim dispatcher as object
  14. document = ThisComponent.CurrentController.Frame
  15. dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
  16. Dim args(0) as new com.sun.star.beans.PropertyValue
  17. args(0).Name = "ToPoint"
  18. args(0).Value = "$B$2"
  19. dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args())
  20. Dim i as integer
  21. Dim j as integer
  22. For j = 1 To 10
  23. For i = 1 To 10
  24. Dim str as string
  25. Dim w as double
  26. w = rnd()
  27. str = w
  28. args(0).Name = "StringName"
  29. args(0).Value = str
  30. dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args())
  31. SetColor(1, w)
  32. dispatcher.ExecuteDispatch(document, ".uno:GoDown", "" , 0 ,Array())
  33. Next i
  34. For i = 1 To 10
  35. dispatcher.ExecuteDispatch(document, ".uno:GoUp", "", 0, Array())
  36. Next i
  37. dispatcher.ExecuteDispatch(document, ".uno:GoRight", "", 0, Array())
  38. Next j
  39. End Sub

Kolorowanie składni html

Ostatni przykład, który zamieściłem już wcześniej na stronie Programowanie → Skrypty PHP → Prosta przeglądarka plików graficznych:

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html;
  4. charset=windows-1250">
  5. <title>Przeglądanie zdjęć w katalogu</title>
  6. </head>
  7. <body>
  8. <?
  9. function CreateImArr($directory, $extension){ // Funkcja tworząca tablicę zawierającą ścieżki do plików o rozszerzeniu extension
  10. $kartoteka = opendir($directory);
  11. while($nazwa_pliku = readdir($kartoteka)){
  12. $arr = pathinfo($nazwa_pliku);
  13. if(strtolower($arr["extension"])==$extension){
  14. $pathAndFileName[] = $directory . $nazwa_pliku;
  15. }
  16. }
  17. closedir($kartoteka);
  18. return $pathAndFileName;
  19. }
  20. $tab = CreateImArr("./Kwiaty/","jpg"); // Kwiaty - nazwa katalogu, który będzie przeszukiwany
  21. if(count($tab)):
  22. $left = intval($_POST["Poprzedni"]);
  23. $right = intval($_POST["Następny"]);
  24. $index = $left + $right - 1;
  25. if($index < 0){
  26. $index = 0;
  27. }elseif($index >= count($tab)){
  28. $index = count($tab) - 1;
  29. }
  30. echo("<p style="text-align:center"><img src="" . $tab[$index] . ""></p>");
  31. echo("<FORM action = "browser.php" method = POST>"); // browser.php - nazwa własna pliku tego skryptu
  32. echo("<p stule="text-align:center">");
  33. if($index > 0){
  34. echo("<input type="Submit" value="" . ($index) . "" name="Poprzedni"> - ");
  35. }
  36. echo($index +1);
  37. if($index < count($tab) - 1){
  38. echo(" - <input type="Submit" value="" . ($index + 2) . "" name="Następny">");
  39. }
  40. echo("</p></FORM>");
  41. }
  42. ?>
  43. </body>
  44. </html>

Komentarze