Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Как прикрутить тег [autoit] к форуму? (http://forum.oszone.net/showthread.php?t=148733)

Belfigor 24-08-2009 11:33 1201745

Как прикрутить тег [autoit] к форуму?
 
Никто не подскажет что надо прикрутить к форуму, чтобы можно постить код без Au3Post а просто заключив его в теги [autoit][/autoit]?

Medic84 24-08-2009 13:50 1201877

Это не сюда :) Это в раздел Javascript.

Creat0R 24-08-2009 16:20 1202010

Вопрос интересны, я бы и сам не против был узнать на него ответ.
По идее это можно спросить у Jon'а, как он это сделал на оф. форуме.

P.S
А заголовок темы неудачный.

Belfigor 24-08-2009 18:29 1202096

А кто имеет контакт с Джоном? Я даже вопрос то так на английском сформулировать не смогу чтобы он меня понял :(
Просто если мне не изменяет память когда я начинал пользоваться AutoIt там то ли на главной странице то ли на самом форуме светилось нечто типа "Для веб разработчиков" и там вроде бы вобъяснялось как это сделать и был вроде какой-то файлик, или же кусок кода для форумов.

DedAlex 25-08-2009 10:19 1202529

Belfigor, посмотрите GeSHi

Belfigor 25-08-2009 23:55 1203273

Огромное спасибо :)

Creat0R 26-08-2009 00:12 1203283

Цитата:

Цитата DedAlex
посмотрите GeSHi »

Интересно. Вот теперь бы ещё узнать как это прикручивать ...

Creat0R 27-08-2009 21:41 1204916

Оказывается прикрутиь GeSHi проще простого...

Метод для SMF (2.0):
  • Качаем архив geshi (GeSHi-1.0.8.4.zip).
  • Распаковываем его куда нибудь.
  • И заливаем следующие файлы/папки, желательно в подпапку, не в корень:

    \My_Tags\....
    Код:

    geshi [Папка]
    geshi.php

  • Далее в файл «Sources/Subs.php» добавляем перед (ну или просто в начало файла)

    Код:

    // Update some basic statistics...
    инклуд «geshi.php»:

    Код:

    include_once('тут\путь\до\geshi.php');
    И добавляем тег в массивы тегов чуть ниже (в том же файле - ищем "$codes = array(...."):

    Код:

                            array(
                                    'tag' => 'autoit',
                                    'type' => 'unparsed_content',
                                    'content' => '<div class="codeheader">AutoIt: <a href="javascript:void(0);" onclick="return smfSelectText(this);" class="codeoperation">' . $txt['code_select'] . '</a></div><blockquote style="background-color: #ffffff;font-size: 11px;">$1</blockquote>',
                                    'validate' => isset($disabled['autoit']) ? null : create_function('&$tag, &$data, $disabled', '
                                            $lang = \'autoit\';
                                            $path = \'\';
                                           
                                            $data = str_replace("&lt;", "<", $data);
                                            $data = str_replace("&gt;", ">", $data);
                                            $data = str_replace("&quot;", "\"", $data);
                                            $data = str_replace("&nbsp;", " ", $data);
                                            $data = str_replace("<br />", "\r\n", $data);
                                           
                                            //$code = geshi_highlight($data, $lang, $path, true);
                                            //$data = $code;
                                           
                                            $geshi = new GeSHi($data, $lang);
                                            $data = $geshi->parse_code();
                                           
                                            '),
                                    'block_level' => true,
                            ),

  • Всё, теперь при использовании тега [autoit] код внутри будет подсвечиваться синтаксисом AutoIt'а. Хотя следует заметить, что autoit.php (файл отвечающий за подсветку), немного(?) устарел, и замечаются некоторы глюки... если есть умельцы и знатоки в php/geshi, прошу подсказать как исправить некоторые из этих глюков, если что, напишу конкретно какие.

P.S
Теперь таким же способом можно подсвечивать синтаксис не только autoit тега, но и почти любого языка (список поддерживаемых языков есть на главной страничке GeSHi) - достаточно только поменять в коде выше (в переменной $lang) \'autoit\' на имя нужного языка.

P.P.S
Как всё это прикручивается я узнал прочитав документацию к GeSHi, что ещё раз свидетельствует о том, что подобные документации пишутся не зря, и не нужно лениться читать их, иногда оно даётся не просто, но без этого обычно никак.

DedAlex 27-08-2009 23:11 1205031

Цитата:

Цитата Creat0R
прошу подсказать как исправить некоторые из этих глюков, если что, напишу конкретно какие. »

Напишите, может смогу помочь.

Creat0R 28-08-2009 00:34 1205098

Цитата:

Цитата DedAlex
Напишите, может смогу помочь »

Проблема первая - в AutoIt как известно есть #include, после которого идёт имя файл либо в кавычках (как обычная строка), либо в треугольных скобках, вот так:

Код:

#include <GUIConstants.au3>
Так вот в последнем случае, скобки подсвечиваются отдельно, а должно быть как обычная строка:

Код:

#include <GUIConstants.au3>
Проблема вторая - Цифры подсвечиваются не всегда, например вот тут:

Код:

$sVar = 12345

Sleep(10)

Из за вызова функции (даже если перед ней есть переменная), 12345 не подсвечивается как должно быть (как цифры в Sleep к примеру).

Если нужна среда тестирования, могу дать в ПМ логин и пароль тестового юзера у меня на форуме.

Creat0R 07-09-2009 01:15 1212985

Ещё баги:
  • Макросы не всегда подсвечиваются: Поправил.

    Код:

    ConsoleWrite(@HOUR & ":" &@MIN & ":" & @SEC)
    ConsoleWrite(@HOUR& ":" & @MIN& ":" & @SEC)

  • Строки в полукруглых скобках:

    Код:

    Send("{!}")
    Должно быть так:
    Код:

    Send("{!}")
  • Комментарии неправильно подсвечиваются если нет парных обозначении в том же регистре букв: Поправил.

    Код:

    #cs Тут комент должен начинаться
    #CE А тут он должен заканчиваться

    Но по необъяснимому стечению обстоятельств этого не происходит

    А те что совпадают в регистре букв, тоже имеют багу:
    Код:

    #cs тут
    #ce
    все работает нормально

    За исключением того момента что вся строка #ce должна быть зеленой


Creat0R 19-10-2009 16:15 1247029

DedAlex, Вы ещё заинтересованы помочь?


Время: 19:08.

Время: 19:08.
© OSzone.net 2001-