[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Тема для тестов новой подсветки кода
kirik
PHP
/**
* SHPHP - Syntax Highlighter in PHP
* Developer: kirik [
kirik-san@users.sourceforge.net]
* Website:
http://sourceforge.net/projects/shphp/ (all details you can find here)
* Version: 0.1.2
**/


Class SHPHP {
// the result array
private static $str_stack;
// pattern stack - each element is a language pattern
private static $patt_stack;
// the current position in input array
private static $pos;
// current style - name of current style, or null if there is no current style
private static $curr_style;
private static $language;
// Vars to automatic load LDF (language definition files)
public static $languages;
public static $langs_dir = null;

/**
Highlights all elements containing code in a text string.

@param $input a text string
@param $language a language definition array
@return highlighted string
**/

public static function highlight($input, $language)
{
if(empty($input))
{
return null;
}

if(is_array($language))
{
self::$language = $language;
}
else
{
// Set default LDF dir
if(self::$langs_dir === null)
{
self::$langs_dir = dirname(__FILE__) . '/langs';
}

if(isset(self::$languages[$language]))
{
self::$language = self::$languages[$language];
}
elseif(file_exists($include = self::$langs_dir . '/sh_' . $language . '.php')) // Autoload LDF (if possible)
{
include($include);
self::$language = $sh_languages[$language];
}
}
}
}


HTML
<?php
error_reporting(E_ALL | E_STRICT);
header('Content-Type: text/html; charset=cp1251');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>
SHPHP - Syntax Highliter in PHP</title>
<style>

pre.sh_sourceCode {
border: 1px solid #ccc;
overflow: auto;
padding: 10px 0 10px 10px;
color: #000;
font-weight: normal;
font-style: normal;
/* font-size: 13px; */
}

/* if, break, for, return.... */
pre.sh_sourceCode .sh_control {
color: #ACAD23;
font-weight: normal;
font-style: normal;
}
</style>
<script>

/**
* Event component
* Developer: KiriK
**/

var CTevent = {
attach: function (obj, event, fn) {
if(obj.attachEvent) {
obj.attachEvent(event, fn);
} else if(obj.addEventListener) {
obj.addEventListener(this.ff(event), fn, false);
} else {
alert('Your browser does not support events.');
}
}
,

detach: function (obj, event, fn) {
if(obj.detachEvent) {
obj.detachEvent(event, fn);
} else if(obj.addEventListener) {
obj.removeEventListener(this.ff(event), fn, false);
} else {
alert('Your browser does not support events.');
}
}
,

ff: function (str) {
return str.replace(/on/i, '');
}
}
;
</script>
</head>
<body>
<?php

// инклюдим необходимые файлы
include('./includes/sh_functions.php');
include('./includes/sh_main.php');

/// Автоматическая подгрузка языков
// // определяем папку с языками (для автоматической подгрузки языковых файлов):
// SHPHP::$langs_dir = './langs';


/// Ручная подгрузка языков
// или подключаем все языки, и определяем их в классе:
include('./langs/sh_php_mix.php');
include('./langs/sh_sql_mod.php');
include('./langs/sh_css_mod.php');
include('./langs/sh_js_mod.php');
include('./langs/sh_php_mod.php');
SHPHP::$languages = $sh_languages;


SQL
SELECT	`m`.`msg_id` as `msg_id`,
`m`.`msg_status` as `msg_status`,
`m2u`.`msg_read` as `msg_read`
FROM `{$_db['prefix']}messages` AS `m`
INNER JOIN `{$_db['prefix']}messages2users` AS `m2u` ON `m`.`msg_id` = `m2u`.`msg_id`
WHERE `m2u`.`m2u_id` = {$this->msg_id} AND `m2u`.`recipient_id` = {$this->author_id}
LIMIT 1




Спустя 2 минуты, 42 секунды (5.11.2009 - 20:49) twin написал(а):
о, а я как раз ищу где позябать smile.gif
<?php

/**
* Загрузка файлов
*/

if($ok && $form['f5'] == $_SESSION['f5'])
{

$values = array();

foreach($_FILES as $files => $val)
{
$img = new IRB_Uploader($form['fon']);
$img -> set_language($LangUploader);
$fileinfo = $img -> create_image($val['tmp_name']);
$size += $fileinfo['size'];

if($size > MAX_FILE_SIZE * 1024)
$_SESSION['info'][] = array(
'info' => LIMIT_EXCEEDED,
'error' => 1

);
else
$_SESSION['info'][] = $fileinfo;

if($fileinfo['error'] == 0)
{

$fileinfo = escape_string($fileinfo);

$values[] = "('', NOW(),
'"
. $fileinfo['filename'] ."',
'"
. $fileinfo['width_full'] ."',
'"
. $fileinfo['height_full'] ."',
'"
. $fileinfo['width'] ."',
'"
. $fileinfo['height'] ."')";
}

unset($img);
}

if(count($values))
query("INSERT INTO `". DB_PREFIX ."photo`
(`id`, `date`, `filename`, `width_full`, `heigth_full`, `width`, `height`)
VALUES "
. implode(', ', $values)
,
__FILE__, __LINE__);

redirect();
}



$data = array();
$row = '';

if(isset($_SESSION['info']))
{
$cont = get_tpl('add_rows');

foreach($_SESSION['info'] as $finfo => $images)
{
$images['full'] = ($images['error'] == 0)? src($images['filename'], 'full'):src('no.png', 'images');
$images['icon'] = ($images['error'] == 0)? src($images['filename'], 'icon'):src('no.png', 'images');
$row .= parse_tpl($cont, $images);
}
session_unset();
}
else
{
$cont = get_tpl('welcome');
$data['language'] = $language;
$row = parse_tpl($cont, $data);
}

$_SESSION['f5'] = $form['f5'] = rand(100,1000);

Спустя 34 секунды (5.11.2009 - 20:49) kirik написал(а):
Обратные слэши, экранирование:
$var = "n";
echo 'test's';


SELECT * FROM `table` WHERE `name` = 'test's'


Да, вот тут проблемо.. мож magic quotes как-то влияют..

Спустя 1 минута, 7 секунд (5.11.2009 - 20:51) twin написал(а):
Вот еще один косячек. И сурьёзный... Надо как то табуляторы на пробелы менять по ходу движения. Разьезжается с табами.

Спустя 36 секунд (5.11.2009 - 20:51) twin написал(а):
И чего не красненько? sad.gif

Спустя 3 минуты, 42 секунды (5.11.2009 - 20:55) kirik написал(а):
Цитата (twin @ 5.11.2009 - 12:51)
Надо как то табуляторы на пробелы менять по ходу движения.

Они вроде бы тут поменялись.. может наоборот не нужно менять? smile.gif

Спустя 59 секунд (5.11.2009 - 20:56) kirik написал(а):
Цитата (twin @ 5.11.2009 - 12:51)
И чего не красненько?

Иде не красненько?

Спустя 3 минуты, 2 секунды (5.11.2009 - 20:59) kirik написал(а):
Строка JS:
var str = "test
test";

--- не работают JS тэги.. вру, я кривой..
<script>
var
str = "test
test";
</script>

- отлично, так и должно быть (что вторая строчка не подсветилась) - это ошибка JS синтаксиса

Спустя 4 минуты, 17 секунд (5.11.2009 - 21:03) kirik написал(а):
CSS (однострочный):
#messenger{width:774px; border-right:1px solid #ccc; color:#3c3c3c; margin-bottom:-10px}#messenger .folders{width:140px}#messenger .folders a{display:block; padding:3px 0 3px 20px; text-decoration:none}#messenger .folders hr{border:0; height:1px; background:#ccc}#messenger .folders input{border:1px solid #ccc; width:113px; margin:3px 2px; background:transparent url('../images/mess_find.gif') no-repeat 1px 2px; padding-left:18px; color:#3c3c3c; font-size:11px}#messenger .folders .inbox{background:transparent url('../images/mess_inbox.gif') no-repeat 3px 4px}#messenger .folders .outbox{background:transparent url('../images/mess_outbox.gif') no-repeat 3px 4px}#messenger .folders .selected{background-color:#678db2; color:#fff}#messenger .folders .refresh{background:transparent url('../images/mess_refresh.gif') no-repeat 3px 3px}#messenger .folders .delete{background:transparent url('../images/mess_delete_mini.gif') no-repeat 3px 4px}


.txt {
height: 17px;
border: 1px solid #cecbc6;
color: #4c4c4c;
font-weight: bold;
font-size: 12px;
margin: 1px;
width: 180px;
background: #f6f6f6;
}

.txt:hover, .txt:focus {
border: 1px solid #ccc;
background: #fff;
}

.large {
font-weight: normal;
font-size: 22px;
height: 26px;
width: 100%;
}

Спустя 44 секунды (5.11.2009 - 21:04) twin написал(а):

Табулятроы вот:
<?php
$text = 'Это восемь пробелов';
$text = 'А это два таба';


А вот не красненько...

Спустя 2 минуты, 58 секунд (5.11.2009 - 21:07) twin написал(а):
А в мазиле норм... Опера моя не видит подсветку

Спустя 1 минута, 54 секунды (5.11.2009 - 21:09) kirik написал(а):
Цитата (twin @ 5.11.2009 - 13:07)
Опера моя не видит подсветку

Кэш похоже обновить нужно - css не подгрузился.

Цитата (twin @ 5.11.2009 - 13:04)
Табулятроы вот

Просто если весь код с табами будет - он покажется нормально, так же как и если весь будет с пробелами. А если менять табы на пробелы, то тогда код лучше выглядеть не будет..

Спустя 18 минут, 50 секунд (5.11.2009 - 21:28) glock18 написал(а):
чих-пых:

Свернутый текст
<?php
/**
* LangpackGen model.
* Provides functionality regarding js langpack scaffolding.
*
@author Vasiliy Naumov <nomail.com>
* @since 2009/10/27
*/

class LangpackGen
{
/**
* Error array.
*
*
@var array
*/

private $errors = array();

/**
* Language completness status array.
*
*
@var array
*/

private $statuses = array();

/**
* Available list types.
*
*
@var array
*/

private $availableTypes = array('controller', 'page');

/**
* Runs langpack generation. Optional parameter may contain languages, which should be ignored.
*
*
@param array $exceptions Languages to be ignored.
*
@return array
* Return array elements:
* - 'success' (boolean) true if no errors occured.
* - 'exceptions' (array) if language presented in $exceptions argument is found, it will be pushed to this array.
* - 'errors' (array) errors occured during generation.
* - 'statuses' (array) language pack generation statuses.
*/

public function run($exceptions = array())
{
$result = array(
'success' => false,
'exceptions' => array(),
);


try {
$localeDir = self::getLocaleDir(true);

$localeList = scandir($localeDir);
foreach ($localeList as $lang) {
if ($lang[0] == '.') {
// missing ., .svn and .. directories
continue;
}

if (in_array($lang, $exceptions)) {
$result['exceptions'][] = $lang;
continue;
}

self::createLangpack($lang, true, false);
}
}
catch (Exception $e) {
// no more actions needed. error is already added
}

$result['errors'] = $this->getErrors();
$result['statuses'] = $this->getStatuses();
$result['success'] = empty($result['errors']);

return $result;
}

/**
* Creates single langpack js file.
*
*
@param string $lang Language name.
*
@param boolean $checkLangDirExistance Whether to check lang dir is valid.
*
@param boolean $checkLocaleDirExistance Whether to check locale dir is valid.
*/

public function createLangpack($lang, $checkLangDirExistance = true, $checkLocaleDirExistance = false)
{
$langPack = array();

try {
// $localeDir = self::getLocaleDir($checkLocaleDirExistance);
$langDir = self::getLangDir($lang, $checkLangDirExistance, $checkLocaleDirExistance);

foreach ($this->availableTypes as $type) {
$typeDir = $langDir . DIRECTORY_SEPARATOR . $type;
if (file_exists($typeDir) && is_dir($typeDir)) {
$langList = scandir($typeDir);

foreach ($langList as $list) {
if ($list[0] == '.') {
// missing ., .svn and .. directories
continue;
}

$listFile = $typeDir . DIRECTORY_SEPARATOR . $list;

if (!is_file($listFile)) {
$this->errors[] = 'Impossible to include non-file item: ' . $listFile;
continue;
}
// if (!is_executable($listFile)) {
// $this->errors[] = 'Language list file is not executable: ' . $listFile;
// continue;
// }

$words = include($listFile);
if (!is_array($words)) {
$this->errors[] = 'Invalid language list file: ' . $listFile;
continue;
}

$listName = substr($list, 0, strrpos($list, '.'));
$langPack[$type][$listName] = $words;
}

if (!empty($langPack)) {
$this->statuses[$lang] = self::generateJsLangPack($lang, $langPack);
}
else {
$this->errors[] = 'Empty langpack received: ' . $langDir;
}
}

else {
$this->errors[] = $type . ' directory for ' . $lang . ' language has not been found';
}
}
}
catch (Exception $e) {
// no more actions needed. error is already added
}
}


/**
* Returns locale dir full path.
* If $checkExistance parameter is true, the checkLocaleDir method will be called at first.
* Note that 'check' methods may throw exception.
*
*
@param boolean $checkExistance Whether to check directory existance.
*
@return string
*/

protected function getLocaleDir($checkExistance = true)
{
if ($checkExistance) {
self::checkLocaleDir();
}
return Engine_Config::getInstance()->documentRoot . DIRECTORY_SEPARATOR . 'locale';
}

/**
* Checks whether locale dir is valid.
* If directory is not valid, exception will be thrown and error added.
*
@throws Exception
*/

protected function checkLocaleDir()
{
$localeDir = self::getLocaleDir(false);
if (!file_exists($localeDir) || !is_dir($localeDir)) {
$this->errors[] = 'Locale directory does not exist: ' . $localeDir;
throw new Exception();
}
}


/**
* Returns language dir full path.
* Calls self::getLocaleDir method passing it $checkLocaleDirExistance argument.
* If $checkExistance parameter is true, the self::checkLangDir method will be called at first.
* Note that 'check' methods may throw exception.
*
*
@param boolean $checkExistance Whether to check lang directory existance.
*
@param boolean $checkLocaleDirExistance Whether to check locale directory existance.
*
@return string
*/

protected function getLangDir($lang, $checkExistance = true, $checkLocaleDirExistance = false)
{
$localeDir = self::getLocaleDir($checkLocaleDirExistance);

if ($checkExistance) {
self::checkLangDir($lang, false);
}
return $localeDir . DIRECTORY_SEPARATOR . $lang;
}

/**
* Check whether the language dir is valid.
* If dir is not valid, exception will be thrown.
*
*
@param string $lang
*
@param boolean $checkLocaleDirExistance
*/

protected function checkLangDir($lang, $checkLocaleDirExistance = true)
{
$localeDir = self::getLocaleDir($checkLocaleDirExistance);
$langDir = $localeDir . DIRECTORY_SEPARATOR . $lang;

if (!file_exists($langDir) || !is_dir($langDir)) {
$this->errors[] = 'Language directory does not exist: ' . $langDir;
throw new Exception();
}


if (!is_readable($langDir)) {
$this->errors[] = 'Language directory is not readable: ' . $langDir;
throw new Exception();
}
}


/**
* Generates single langpack and saves it at target directory.
* Throws exception if unable to write to target directory.
* Returns true if file was generated succesfully, otherwise false.
*
*
@param string $lang
*
@param array $langPack
*
@return boolean
*/

public function generateJsLangPack($lang, $langPack)
{
try {
$targetDir = Engine_Config::getInstance()->documentRoot . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . 'scripts' . DIRECTORY_SEPARATOR . 'langpack';
if (!file_exists($targetDir) || !is_dir($targetDir)) {
$this->errors[] = 'Js langpack directory does not exist: ' . $targetDir;
throw new Exception();
}

if (!is_writable($targetDir)) {
$this->errors[] = 'Js langpack directory is not writable: ' . $targetDir;
throw new Exception();
}

$jsCode = "if (Core && Core.translate) {n" .
" Core.translate.language = '" . addslashes($lang) . "';n" .
" Core.translate.list = 'all';n" .
" Core.translate.type = 'controller';n" .
" Core.translate.langpack['" . addslashes($lang) . "'] = " . json_encode($langPack) . ";" .
"}";

return (boolean) file_put_contents($targetDir . DIRECTORY_SEPARATOR . $lang . '.js', $jsCode);

} catch (Exception $e) {

}

}


/**
* Returns error array.
*
@return array
*/

public function getErrors()
{
return $this->errors;
}

/**
* Returns status array.
*
@return array
*/

public function getStatuses()
{
return $this->statuses;
}
}


жээс:

Свернутый текст

<script type="text/javascript">
var
Core = {
addEvent : function(obj, evType, fn)
{
if(obj.addEventListener)
{
obj.addEventListener(evType, fn, false);
return true;
}
else if(obj.attachEvent)
return obj.attachEvent("on" + evType, fn);

return false;
},
uploader : null
};

AjaxUploader = function (options) {
if (!options['form'])
throw new "error";

this.form = options['form'];
var uploader = this;
Core.addEvent(this.form, 'submit', function() {
uploader.sendFiles(uploader);
});

this.startCallback = typeof options['onStart'] == 'function' ? options['onStart'] : null;
this.completeCallback = typeof options['onComplete'] == 'function' ? options['onComplete'] : null;
}

AjaxUploader.prototype.sendFiles = function(uploader) {
uploader.createFrame();
if (typeof uploader.startCallback == 'function')
// {
return uploader.startCallback();
// }
else
return true
;
}

AjaxUploader.prototype.createFrame = function() {
var frameId;
do {
frameId = 'f' + Math.floor(Math.random() * 99999);
} while (document.getElementById(frameId));

var d = document.createElement('DIV');
d.innerHTML = '<iframe style="display:none" src="about:blank" id="' + frameId + '" name="' + frameId + '"></iframe>';
var uploader = this;
document.body.appendChild(d);

var i = document.getElementById(frameId);
Core.addEvent(i, 'load', function() {
uploader.frameOnLoad(frameId);
});
if (typeof this.completeCallback == 'function') {
i.onComplete = this.completeCallback;
}

this.form.setAttribute('target', frameId);
}

AjaxUploader.prototype.frameOnLoad = function(id) {
var i = document.getElementById(id),
d;
if (i.contentDocument)
d = i.contentDocument;
else if (i.contentWindow)
d = i.contentWindow.document;
else
d = window.frames[id].document;

if (d.location.href == "about:blank")
return;

if (typeof(i.onComplete) == 'function')
i.onComplete(d.body.innerHTML);
}
</script>

Спустя 4 минуты, 4 секунды (5.11.2009 - 21:32) kirik написал(а):
glock18
твой код даже редактируется теперь smile.gif

Спустя 4 минуты, 21 секунда (5.11.2009 - 21:36) glock18 написал(а):
kirik
аха ))) круто, мне нравится )

Спустя 12 минут, 19 секунд (5.11.2009 - 21:48) twin написал(а):
Цвета непривычные... sad.gif
А ваще круто...
А с табами прошлая подсветка нормально обходилась. Знач есть какой то выход.

Спустя 18 минут, 2 секунды (5.11.2009 - 22:06) WhiteKnight написал(а):
наконец то дружелюбная подсветка. smile.gif

p.s.
даешь веб 2.0

Спустя 2 часа, 9 минут, 40 секунд (6.11.2009 - 00:16) kirik написал(а):
Еще раз тест экранирования
$var = "\n";
echo 'test\'s';
SELECT * FROM `table` WHERE `name` = 'test\'s'


И спецсимвол:
echo "\$var";

Спустя 8 минут, 14 секунд (6.11.2009 - 00:24) kirik написал(а):
Цитата (WhiteKnight @ 5.11.2009 - 14:06)
даешь веб 2.0

вебдваноль - не тру smile.gif

Цитата (twin @ 5.11.2009 - 13:48)
А с табами прошлая подсветка нормально обходилась. Знач есть какой то выход.

Хе) Выход-то всегда есть smile.gif Седня займусь.

Спустя 44 минуты, 3 секунды (6.11.2009 - 01:08) kirik написал(а):
Че там с табами..? Меняем табы на 4 пробела? Иль на 5?

Спустя 3 минуты (6.11.2009 - 01:11) glock18 написал(а):
На 5.5 луче. в память о последней умершей версии ишака smile.gif

Спустя 11 минут, 8 секунд (6.11.2009 - 01:22) kirik написал(а):
Цитата (glock18 @ 5.11.2009 - 17:11)
На 5.5 луче. в память о последней умершей версии ишака

Почтим память! Значит 5.5 smile.gif

Спустя 8 часов, 32 минуты, 54 секунды (6.11.2009 - 09:55) Michael написал(а):
Свернутый текст

function koren($numb, $koren)
{
// $numb - строка bc с числом, $koren - значение корня
$ost = doubleval($numb);
if ($ost != INF) return pow($ost, 1/$koren);
$ch = pow(10,300);
$bch = bcpow('10','300');
$mnoz = pow($ch, 1/$koren); // выведенный из под корня множитель
$rez = 1;
$vih = false;
while (! $vih)
{//echo 'x<br>';
$ostbc = bcdiv($numb, $bch, 100);
$rez *= $mnoz;
$ost = doubleval($ostbc);
if ($ost != INF)
{
$rez *= pow($ost, 1/$koren);
$vih = true;
}
else $numb = $ostbc;

}
return $rez;
}


<script type="text/javascript">
function
menuClass(dynamic,poloz,pref,otstup)
{
this.dynamic=false;///////////
if (typeof(dynamic)!=undefined) {
if (dynamic) {
this.dynamic=true;
}
}


this.poloz='goriz';////////////
if (typeof(poloz)!=undefined) {
if (poloz=='vertik') {
this.poloz='vertik';
}
}


this.pref='';
if (typeof(pref)=='string') {
this.pref=pref;
}

this.otstup=0;
if (typeof(otstup)!='undefined'&&isFinite(otstup)) {
this.otstup=parseInt(otstup);
}

var self=this; // Замыкание
this.mainmenu=new Array();

this.tek_el=new Array();
this.tek_pl1=null;
this.tek_pl2=null;
this.timeout=0;
this.tektime=0;



this.createMainMenu=function (ind, one_pic, two_pic, text, what_do)
{
this.mainmenu[ind]=new Object();
this.mainmenu[ind].one_pic=new Image();
this.mainmenu[ind].one_pic.src=this.pref+one_pic;
this.mainmenu[ind].two_pic=new Image();
this.mainmenu[ind].two_pic.src=this.pref+two_pic;
this.mainmenu[ind].text=text;
this.mainmenu[ind].what_do=what_do;
this.mainmenu[ind].podmenu=new Array();
}
// ...
</script>


this.tek_el=new Array();
this.tek_pl1=null;
this.tek_pl2=null;
this.timeout=0;
this.tektime=0;

this.createMainMenu=function (ind, one_pic, two_pic, text, what_do)
{
this.mainmenu[ind]=new Object();
this.mainmenu[ind].one_pic=new Image();
this.mainmenu[ind].one_pic.src=this.pref+one_pic;
this.mainmenu[ind].two_pic=new Image();
this.mainmenu[ind].two_pic.src=this.pref+two_pic;
this.mainmenu[ind].text=text;
this.mainmenu[ind].what_do=what_do;
this.mainmenu[ind].podmenu=new Array();
}


Про табы twin уже заметил, потому что сам ни одного не вставишь так за тебя редактор десяток вставит ...
JS код в html да и еще обернутый в <script> - люди будут по старому кидать в php.
Может малоиспользуемый # по умолчанию для JS определить.
Насчет цветов - может для php стандарт оставить(как в хелпе)?
А для JS всякие this new тоже лучшее бы не только "жирностью" отличать, но и цветом.

P.S. Потом все доделаешь, ссылочку скачать the last edition не забудь где-то обронить smile.gif

Спустя 44 минуты, 56 секунд (6.11.2009 - 10:40) twin написал(а):
Про цвета я тож думаю луче стандартные пыховские оставить. Слишком тяжко так читать. Совсем непривычно.

Спустя 7 часов, 55 минут, 42 секунды (6.11.2009 - 18:36) kirik написал(а):
Цитата (Michael @ 6.11.2009 - 01:55)
Может малоиспользуемый # по умолчанию для JS определить.

Скоро будут кнопки CSS и JS.

Цитата (Michael @ 6.11.2009 - 01:55)
Насчет цветов - может для php стандарт оставить(как в хелпе)?

Да там в хелпе подсветка вообще не помогает, 4 цвета какие-то: синий (названия функций, переменных; числа), красный (строки), зеленый (символы, ключевые слова, операторы итд), оранжевый (комменты). Я бы не стал менять на стандартную подсветку, но такой жесткой привычки у меня нет, поэтому могу смириться smile.gif Поголосовать надо..

2FatCat а может можно как-то через настройки пользователя сделать выбор цвет подсветки (как со счетчиком "Не пью:")?

Спустя 12 минут, 52 секунды (6.11.2009 - 18:49) twin написал(а):
Комменты хотя бы желтые... сливается с кодом. А операторы совсем не подсвечиваются? И фореч какой то болезненно-бледно-зеленый... Повеселей нельзя его? sad.gif

Спустя 7 минут, 48 секунд (6.11.2009 - 18:57) glock18 написал(а):
Мне так нравится подсветка smile.gif

Спустя 22 минуты, 55 секунд (6.11.2009 - 19:20) kirik написал(а):
Цитата (twin @ 6.11.2009 - 10:49)
Комменты хотя бы желтые... сливается с кодом.

Дык это.. Комментарии они на то и есть, чтобы если ты хочешь их видеть - они будут, нет - читай код. Есть 3 типа комментов:
// обычный коммент
/* тоже обычный */
# еще один обычный

/** коммент с подсветками переменных:
*
@author ...
*
@param ...
*
@return ...
**/
/// просто важный коммент - "Обрати внимание!"


Цитата (twin @ 6.11.2009 - 10:49)
И фореч какой то болезненно-бледно-зеленый... Повеселей нельзя его?

Можно biggrin.gif Скажи какой smile.gif Вообще как время будет, можешь заточить свой цсс, поменяем потом.

ЗЫ кстати про бледность комментов - можно просто подложку сделать не серую, а белую - виднее будет. Или черную вообще, тогда будет андеграунд-стайл smile.gif

Спустя 5 дней, 4 часа, 50 минут, 18 секунд (12.11.2009 - 00:10) Gabriel написал(а):
Не.... с черной ето будет както жестоко.
С копированием кода ничего странного никто не наблюдал? у меня после вставки в любой редактор код идет чють-ли не спложным потоком

Спустя 13 часов, 40 минут, 8 секунд (12.11.2009 - 13:50) Gabriel написал(а):
в ИЕ 7 половина кода отображаеться как ссылка
http://phpforum.ru/index.php?act=ST&f=125&t=22675&st=0

Спустя 5 часов, 28 минут, 40 секунд (12.11.2009 - 19:19) kirik написал(а):
Цитата (Gabriel @ 12.11.2009 - 05:50)
половина кода отображаеться как ссылка

Да, есть такая проблемка.. Я FatCat уже попросил чтобы он сделал парсинг BB кодов после того как код подсвечивается. Иначе получается что код подсвечен, а в нем потом парсятся еще и BB тэги.

Спустя 17 часов, 27 минут, 45 секунд (13.11.2009 - 12:46) FatCat написал(а):
Цитата (kirik @ 12.11.2009 - 20:19)
Я FatCat уже попросил чтобы он сделал парсинг BB кодов после того как код подсвечивается.

Так и сделано. Сначала подсветка, потом парсинг кодов.
	function convert($in=array( 'TEXT' => "", 'SMILIES' => 0, 'CODE' => 0, 'SIGNATURE' => 0, 'HTML' => 0)) {
global $ibforums, $DB;

$this->in_sig = $in['SIGNATURE'];

$txt = $in['TEXT'];

//--------------------------------------
// Returns any errors as $this->error
//--------------------------------------

// Remove session id's from any post


$txt = preg_replace( "#(\?|&|;|&)s=([0-9a-zA-Z]){32}(&|;|&|$)?#e", "\$this->regex_bash_session('\\1', '\\3')", $txt );

//--------------------------------------
// convert <br> to \n
//--------------------------------------


$txt = preg_replace( "/<br>|<br \/>/", "\n", $txt );

//--------------------------------------
// Are we parsing iB_CODE and do we have either '[' or ']' in the
// text we are processing?
//--------------------------------------


if ( $in['CODE'] == 1 ) {

//---------------------------------
// Do [CODE] tag
//---------------------------------
// $txt = preg_replace( "#\[php\](.+?)\[/php\]#ies" , "\$this->regex_php_tag('\\1')" , $txt );
// $txt = preg_replace( "#\[code\](.+?)\[/code\]#ies", "\$this->regex_code_tag('\\1')", $txt );

$txt = preg_replace('#\[(php|code|html|js|css|sql)\](.+)\[/\\1\]#iesU', "\$this->highlighter('\\2', '\\1')", $txt);

Спустя 18 минут, 28 секунд (13.11.2009 - 13:05) FatCat написал(а):
Господа, у нас проблема...
Только что попробовал запостить всего 14 Кб кода - и подвесил сервер минут на 5... Другим браузером в это время лицезрел 502-ю страницу. И в результате пустое сообщение...
Что там с ресурсоемкостью? Или это просто совпало?

Спустя 3 минуты, 32 секунды (13.11.2009 - 13:08) Gabriel написал(а):
FatCat
наверное просто совпало у меня с утра из 5ти открытых страниц 3 были 502ми

Спустя 2 часа, 56 минут, 42 секунды (13.11.2009 - 16:05) FatCat написал(а):
Цитата (Gabriel @ 13.11.2009 - 14:08)
у меня с утра из 5ти открытых страниц 3 были 502ми

Вот я и думаю, может когда я вижу 502-ю - это кто-то в этот момент большой листинг кода запузыривает. unsure.gif

Хотя, фиг его знает.
Тестирую под денвером, который раз в 5 более тормознутый, чем здешний сервер, 50 Кб кода сожрал секунды за 2...

Спустя 3 часа, 25 минут, 12 секунд (13.11.2009 - 19:30) kirik написал(а):
Цитата (FatCat @ 13.11.2009 - 04:46)
Так и сделано. Сначала подсветка, потом парсинг кодов.

Там наверное по-сложнее немного нужно.. Чтобы код в php|css|html|... тэгах не отрабатывался еще и bb кодами. У меня есть идея, сегодня - завтра напишу.

Цитата (FatCat @ 13.11.2009 - 05:05)
Что там с ресурсоемкостью?

Да по-быстрее геши было. Мне кажется что совпадение. Ща попробую тоже подвесить smile.gif
------------
40 кб кода - моментом, а вот 120 кб почему-то отдали пустое сообщение..

Спустя 3 часа, 45 минут, 27 секунд (13.11.2009 - 23:16) Joker написал(а):
а может взять цвета подсветки кодов из дрима? а то насколько я знаю не малая часть людей в нём работает и он будет как то привычнее....

Спустя 12 минут, 21 секунда (13.11.2009 - 23:28) kirik написал(а):
Joker
не видел подсветку в дриме.. Да какая разница вообще какой цвет, главное чтобы видно было все.

Спустя 51 минута, 24 секунды (14.11.2009 - 00:19) Gabriel написал(а):
kirik
+ пиццот
Joker
оно привычнее но не оригинально......
П.С а линии у нас будут?

Спустя 35 минут, 50 секунд (14.11.2009 - 00:55) kirik написал(а):
Цитата (Gabriel @ 13.11.2009 - 16:19)
П.С а линии у нас будут?

Я кажись там просил че-нить придумать для линий, никто не откликнулся unsure.gif Я чутка посидел тогда, но ниче хорошего не придумал, а ща со временем нехватки.

Спустя 6 минут, 4 секунды (14.11.2009 - 01:01) Gabriel написал(а):
ну чтож бум ждать ( долго и настойчиво ждать ) smile.gif яб подумал да наврядли придумаеться dry.gif

Спустя 1 час, 40 минут (14.11.2009 - 02:41) Joker написал(а):
Цитата (Gabriel @ 14.11.2009 - 03:19)
оно привычнее но не оригинально......


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

Цитата (kirik @ 14.11.2009 - 02:28)
не видел подсветку в дриме.. Да какая разница вообще какой цвет, главное чтобы видно было все.


Ну вот не скажи но это моё мнение но когда из дрима выхожу и лажу по сайтам и в разных цветах разные коды иногда даже функции некоторые не узнаю.


Спустя 6 минут, 20 секунд (14.11.2009 - 02:48) FatCat написал(а):
Цитата (kirik @ 13.11.2009 - 20:30)
40 кб кода - моментом, а вот 120 кб почему-то отдали пустое сообщение..

Аналогично. Начиная кил с 60 кердык. По денвером без проблем сожрал 200 Кб.
Значит дело в памяти. Тут 24 Мб, а под денвером хоть гиг может жрать.

С другой стороны нефига тут портянки кода развешивать немерянные. 40 Кб за глаза хватит.



Спустя 7 минут, 6 секунд (14.11.2009 - 02:55) Gabriel написал(а):
Joker
ну ты конечно сравнил банан с пальцем

Спустя 27 минут, 45 секунд (14.11.2009 - 03:23) kirik написал(а):
Цитата (FatCat @ 13.11.2009 - 18:48)
С другой стороны нефига тут портянки кода развешивать немерянные. 40 Кб за глаза хватит.

Я кстати думал предложить сделать ограничение по размеру кода (еще давно). Но все равно это непорядок, когда появляются недокументировании фичи smile.gif
Попробую поставить у себя 20мб, гляну мож че заоптимизить можно еще.

Цитата (Joker @ 13.11.2009 - 18:41)
когда из дрима выхожу и лажу по сайтам и в разных цветах разные коды иногда даже функции некоторые не узнаю

Окей, а что делать тем, кто не юзает дримвивер? smile.gif

Спустя 8 часов, 56 минут, 9 секунд (14.11.2009 - 12:19) FatCat написал(а):
Цитата (kirik @ 14.11.2009 - 04:23)
непорядок, когда появляются недокументировании фичи

Можно урезать разрешенный размер сообщения, и фича станет документированной: вместо пустого поста будет выдаваться сообщение об ошибке - слишком большое сообщение.
Сейчас все лимиты сняты, швыряй до 7 Мб (пробовал, пролезает).

Спустя 1 час, 48 минут, 34 секунды (14.11.2009 - 14:07) twin написал(а):
В дреме подсветка похожа на дефолтную php. У Кирила лучше получилось, подсвечиваются функции и переменные разными цветами. Мне тож не совсем уютно было сначала, а сейчас очень нравится. Только комменты вышибают, привык к рыжим))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.