Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Давайте уже сделаем подсветку кода в тегах [code]
Flash Zone Forum > Общие форумы > Флейм
tiHo
Поднимал уже эту тему когдато, поднимаю снова.

Давайте уже сделаем подсветку кода actionScript, чтобы приятнее было его читать.

Как вариант хочу предложить встраиваемый модуль php - GeSHi (ссылка на офф.сайт) в котором есть поддержка подсветки многих языков, таких как наш любимый AS (2,3) , php, css, html, js и много других.

Благо есть у нас человек (Евгений MustLive) (и наверно еще кто-то обязательно умеет) который разбирается в php и сможет модуль установить на наш сайт.

Надоело скучной монотонности, давайте становиться лучше!
HaWK
Да, очень отличная идея. С подсветкой. Я за. Да и вообще много чего б надо еще нового. Форум сдувается. Надо бы вернуть ему былую активность.
HaWK
Что не нужна не кому подсветка чтоль ?
MustLive
Цитата
Давайте уже сделаем подсветку кода в тегах [code]

Да, это будет полезной фишкой для нашего форума. Как и раньше, так и сейчас я это поддерживаю.

GeSHi - интересная программа, она поддерживаем синтаксис 201 языка программирования. Но она не поддерживает IPB (в списке поддерживаемых систем наш движок не указан, по крайней мере автор GeSHi не знает о возможной поддержке в Invision Power Board).

Нужен плагин для IPB (причём 2.x) для добавления подсветки синтаксиса AS. И тогда вопрос будет решён. Времени на то, чтобы разбираться с кодом движка и интегрировать отдельное приложение в код IPB у меня не было ранее и нет его сейчас, так что нужно найти готовый плагин.

Цитата
Форум сдувается. Надо бы вернуть ему былую активность.

HaWK, активность у нас и так большая, чем успевают отвечать на вопросы участников (с учётом отлынивания модераторов), так что нередко у нас встречаются темы без ответов. И это нужно исправлять - более активно отвечать на вопросы и не оставлять темы без ответов (уже при текущей активности и быть готовым успевать при большей активности участников). А посещаемость в марте я уже немного поднял (через "напоминания" неактивным участникам).

Цитата
Что не нужна не кому подсветка чтоль ?

Базовая подсветка - для html и общая для кода - на форуме уже есть (встроенная). А вот подсветка AS без сомнения пригодится всем. Так что вопрос лишь в нахождении нужного плагина для IPB и его установке.
MustLive
Информирую вас ребята, что ни официального плагина для подсветки синтаксиса, ни от сторонних разработчиков для IPB 2.2.х нет. Зато, как я выяснил, в IPB 3, в отличии от первой и второй версии, сделали наконец-то встроенную поддержку подсветки синтаксиса (для разных языков программирования).

Зато есть ряд решений для IPB от пользователей данного движка, которые несовместимы с нашей версией (использующие GeSHi или другие движки). А также есть множество движков подсветки, которые можно самому интегрировать в форум. В обоих случаях подразумевается возня с кодом, чтобы сделать рабочий код для подсветки синтаксиса на нашем форуме. Поиском и анализом различных решений я уже занялся, и как только я найду время чтобы интегрировать какое-либо из решений в наш форум, я это сделаю, что вы увидите по появившейся подсветке синтаксиса smile.gif.
tiHo
Будем ждать..
MustLive
Цитата
Будем ждать..

Дождались.

Сегодня я уже добавил подсветку синтаксиса на форум. Пользуйтесь wink.gif.

Подсветка осуществляется в блоках code:

Код
var i;
for (i=1;i<=10;i++){
    _root["var"+i] = new Object();
    _root["var"+i].property = "i = "+i;
}

В блоках html и sql подсветка осуществляется встроенным алгоритмом:
HTML
<p align="center"><b>HTML</b></p>

SQL
select * from table

Подсветка поддерживает синтаксисы HTML, XML, ActionScript и JavaScript. Можете высказывать пожелания по поводу подсветки. Любые улучшения в подсветку будут вноситься в не оперативном режиме smile.gif, так что радуйтесь и пользуйтесь текущей версией.
HaWK
А подсветка AS только для для 1-ой версии чтоль? Или для AS3 тоже имеется?

Ща проверим:
Код
package {

    import flash.display.Sprite;
    import flash.events.MouseEvent;

    public class Main extends Sprite {

          private function Main():void {
                  trace(' - ');
                  stage.addEventListener(MouseEvent.MOUSE_MOVE, handler);
          }


          private function handler(e:MouseEvent = null):void {
                  trace(' - ');
          }  

    }

}


. . .

Да, только для AS1 smile.gif А как же AS3?

_____________________
UPD:
Уже работает для AS3.
tiHo
Скорее всего нужно просто отредактировать список слов для подсветки. (и сделать ее поярче чтоле)
HaWK
Цитата
и сделать ее поярче чтоле

Да, кстати. Не помешало бы.
MustLive
Ребята, в качестве движка для подсветки синтаксиса используется highlight.js. Который полностью несовместим с движком IPB, который мы используем, поэтому для интеграции его с форумом, я, помимо установки кода на страницы форума, также переделал сам движок.

При этом код также весьма минимизирован - для уменьшения веса js-файла и ускорения его работы - в нём используется лишь подсветка HTML, XML, ActionScript и JavaScript (из всех возможных подсветок разработанных автором). Замечу, что официально движок не поддерживает подсветку ActionScript - я её сделал сам. И сделал её на основе подсветки JS. Оригинальная подсветка поддерживает не все, но большинство конструкций языка JS.

Учитывая, что синтаксис JS близок к AS1, то понятно что именно первая версия AS подсвечивается наилучшим образом. В версии AS2 добавили новых синтаксических конструкций, а в AS3 ещё больше - поэтому с каждой последующей версией AS подсветка работает менее эффективно. Что улучшается, путём добавления ключевых слов для подсветки.

Цитата
А подсветка AS только для для 1-ой версии чтоль? Или для AS3 тоже имеется?

HaWK

Подсветка осуществляется для ключевых слов, а не для версий того или иного языка. К примеру у JS (и других языков, поддерживаемых теми или иными подсветителями синтаксиса) тоже есть версии, но подстветка работает одинаково для любых версий языка (в рамках своих возможностей). Так что любой код на AS, независимо от версий, будет подсвечиваться - чем больше будет знакомых движку (т.е. присутствующих в AS1) конструкций в коде, тем лучше smile.gif.

Так что, если вам хочется "больше подсветки" в ваших же интересах писать код, знакомый движку wink.gif. Естественно нужно не самому подстраиваться под движок, а его подстроить под нас. Для этого нужно добавить ключевых слов для подсветки, как уже я и tiHo сказали ранее. Поэтому возьмите парочку примеров кода на разных версиях AS и посмотрите каким словам AS, что сейчас не подсвечиваются, вы хотите добавить подсветку - и я добавлю их в движок. Таким образом сделаем полную подсветку AS1, AS2 и AS3.

Вот пример таких ключевых слов: package, import, class, extends, public, private, protected, internal, static, dynamic. Добавляйте свои слова - как наберётся достаточный список, я их добавлю в движок.
tiHo
as, break , case, catch, class, const, continue, default, delete, do, else, extends, false, finally, for, function, if, implements, import, in, instanceof, interface, internal, is, native, new, null, package, private, protected, public, return, super, switch, this, throw, to, true, try, tiho, typeof, use, var, void, while, with, each, get, set, namespace, include, dynamic, final, native, override, static, хотябэ.
MustLive
Саша, спасибо за список. Лишь замечу тебе и всем, кто захочет поучаствовать в создании списка ключевых слов для подсветки wink.gif.

1. Указывайте только те слова, которые сейчас не подсвечивают (т.е. только новые для движка). Часть из тех, что ты указал уже подсвечивает, что можно увидеть на вышеупомянутых примерах. Стоит проверять слова перед публикацией своего списка (что можно проверить сделав "тестовый" пост с AS кодом, который потом заменить официальным постом, или же заглянув в js-код, ссылка на файл движка указана в коде страниц форума).

2. Указывайте только существующие языковые конструкции AS. Что это за "tiho" в твоём списке smile.gif.
HaWK
Ходовые слова перечислю:
String, int, uint, Number, Array, Object, Event, MouseEvent, addEventListener, removeEventListener, MovieClip, Sprite, DisplayObject, dispatchEvent, addChild, removeChild и ещё буду добавлять.

А вообще имена всех родных классов надо бы занести ещё в подсветку.
MustLive
tiHo и HaWK, спасибо за участие. Ваши пожелания по ключевым словам для подсветки я приму к сведению (с учётом вышесказанного). О том когда появится поддержка данных ключевых слов, вы сможете судить по данному AS коду:

Код
package {

    import flash.display.Sprite;
    import flash.events.MouseEvent;

    public class Main extends Sprite {
        public var1:Object;
        private var2:String;
        protected var3:int;
        internal var4:uint;
        static var5:Number;
        dynamic var6:Array;
        public var7:Boolean;
        private var8:MovieClip;
        protected var9:Sprite;

        private function Main():void {
            trace(' - ');
            stage.addEventListener(MouseEvent.MOUSE_MOVE, handler);
            DisplayObject();
        }

        private function handler1(e:Event = null):void {
            stage.removeEventListener(MouseEvent.MOUSE_MOVE, handler1);
            dispatchEvent();
        }

        private function handler2(e:MouseEvent = null):void {
            stage.addChild(var1);
            stage.removeChild(var2);
        }
    }

}
Русская версия IP.Board © 2001-2013 IPS, Inc.