Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » SciTE - Open Source Text Editor for Windows & Linux

Модерирует : gyra, Maz

Widok (09-10-2007 14:48): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

vladvro



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

скрипт по раскраске кода для форума, примером его работы является сам этот пост
 
code-poster.lua
Код:
-- Code Poster
-- Version: 1.4.4
-- Autor: VladVRO
---------------------------------------------------
-- Description:
-- конвертирует выделенный текст или весь файл в форматированный текст форума, используя
-- синтаксическую подсветку самого редактора (номер стиля) и таблицу цветов STYLES.
-- корректно работает для: C/C++, CSS, JavaScript, Lau, VB, VBscript, Properties
 
-- Для подключения добавьте в свой файл .properties следующие строки:
--  command.name.125.*=Преобразовать в код для форума
--  command.125.*=dofile $(SciteDefaultHome)\tools\code-poster.lua
--  command.mode.125.*=subsystem:lua,savebefore:no
 
-- ремарки по использованию:
--  - в скрипте используется функция editor.LexerLanguage (сборка Ru-Board,
--    http://scite.ruteam.ru/scite/sborki/scite-ru-board)
---------------------------------------------------
 
local STYLES = {
  comment = {color="008000", no=true},
  number = {color="AC00A9"},
  string = {color="9999CC", no=true},
  preproc = {color="7F7F00"},
  operator = {color="FF0000"},
  keyword = {color="0000DF"},
  keyword2 = {color="0080C0"},
  keyword3 = {color="8000FF"},
  keyword4 = {color="FF8000"},
  keyword5 = {color="660000"},
  keyword6 = {color="004080"},
  keyword7 = {color="408080"},
  keyword8 = {color="AAAA00"},
}
STYLES.default = {
  [1] = STYLES.comment,
  [2] = STYLES.comment,
  [3] = STYLES.comment,
  [4] = STYLES.number,
  [5] = STYLES.keyword,
  [6] = STYLES.string,
  [7] = STYLES.string,
  [8] = STYLES.string,
  [9] = STYLES.preproc,
  [10] = STYLES.operator,
  [13] = STYLES.keyword2,
  [14] = STYLES.keyword3,
  [15] = STYLES.keyword4,
  [16] = STYLES.keyword5,
  [17] = STYLES.keyword6,
  [18] = STYLES.keyword7,
  [19] = STYLES.keyword8,
}
STYLES.others = {
  [1] = STYLES.comment,
  [2] = {color="0080C0", no=true},
  [3] = STYLES.operator,
  [4] = STYLES.preproc,
  [5] = STYLES.keyword,
}
STYLES.props = STYLES.others
STYLES.vb = {
  [1] = STYLES.comment,
  [2] = STYLES.number,
  [3] = STYLES.keyword,
  [4] = STYLES.string,
  [5] = STYLES.preproc,
  [6] = STYLES.operator,
  [8] = STYLES.number,
  [10] = STYLES.keyword2,
  [11] = STYLES.keyword3,
  [12] = STYLES.keyword4,
}
STYLES.vbscript = STYLES.vb
STYLES.css = {
  [1] = STYLES.keyword,
  [3] = STYLES.keyword2,
  [5] = STYLES.operator,
  [6] = STYLES.keyword3,
  [8] = STYLES.string,
  [9] = STYLES.comment,
  [10] = STYLES.number,
  [12] = STYLES.preproc,
  [13] = STYLES.string,
  [14] = STYLES.string,
  [15] = STYLES.keyword4,
  [16] = STYLES.keyword5,
}
STYLES.cpp = {
  [1] = STYLES.comment,
  [2] = STYLES.comment,
  [3] = STYLES.comment,
  [4] = STYLES.number,
  [5] = STYLES.keyword,
  [6] = STYLES.string,
  [7] = STYLES.string,
  [8] = STYLES.string,
  [9] = STYLES.preproc,
  [10] = STYLES.operator,
  [13] = STYLES.keyword4,
  [14] = STYLES.keyword3,
  [15] = STYLES.comment,
  [16] = STYLES.keyword2,
  [17] = STYLES.comment,
  [18] = STYLES.comment,
}
STYLES.cppnocase = STYLES.cpp
 
local LEXSTYLES
local lex = editor.LexerLanguage
if lex == nil then
  LEXSTYLES = STYLES.others
else
  LEXSTYLES = STYLES[lex]
  if LEXSTYLES == nil then
    LEXSTYLES = STYLES.default
  end
end
 
local new = ""
local text = editor:GetSelText()
local line
if text == "" then
  editor:SelectAll()
  text = editor:GetSelText()
elseif string.len(text) ~= editor.Length then
  line = scite.SendEditor(SCI_LINEFROMPOSITION, editor.SelectionStart) + 1
end
local pos = editor.SelectionStart
 
local text = text.."\n"
for str in string.gfind(text, "([^\n]*)\n") do
  -- format next line
  local newstr = ""
  local fin = ""
  local len = string.len(str)
  if string.sub(str,len,len) == "\r" then
    len = len - 1
    str = string.sub(str,1,len)
    fin = "\r"
  end
  local style = LEXSTYLES[scite.SendEditor(SCI_GETSTYLEAT, pos)]
  local i0,i = 1,1
  while i <= len do
    local nstyle
    repeat
      pos = pos + 1
      i = i + 1
      nstyle = LEXSTYLES[scite.SendEditor(SCI_GETSTYLEAT, pos)]
    until nstyle ~= style or i > len
    local txt = string.sub(str,i0,i-1)
    i0 = i
    txt = string.gsub(txt, string.char(9), "  ") -- change tab to spaces
    if style ~= nil then
      if style.no then
        txt = "[no]"..string.gsub(txt,"%[(/*)no%]","[%1n[/no][no]o]").."[/no]"
      end
      if style.color then
        txt = "[color="..style.color.."]"..txt.."[/color]"
      end
    end
    newstr = newstr..txt
    style = nstyle
  end
  -- append line to formated text
  if new ~= "" then new = new.."\n" end
  new = new..newstr..fin
  pos = pos + string.len(fin) + 1
end
 
-- add remarks
local header = ""
if props["FileNameExt"] ~= "" then
  header = "[b][color=Blue]"..props["FileNameExt"].."[/color][/b] "
  if line ~= nil then
    header = header.." [b][s]строка "..line.."[/s][/b] "
    -- remove empty line after code block
    local l = string.len(new)
    if string.sub(new,l,l) == "\n" then
      if string.sub(new,l-1,l-1) == "\r" then
        new = string.sub(new,1,l-2)
      else
        new = string.sub(new,1,l-1)
      end
    end
  end
end
local footer = " [color=Gray][i][s]Данный код внедрен в форум с помощью [/s][url=http://forum.ru-board.com/topic.cgi?forum=5&topic=3215&start=1558&limit=1&m=1#1][s]скрипта[/s][/url] [s][b]vladvro[/b][/s][/i][/color]\n"
new = header.."[code]"..new.."[/code]"..footer
 
-- update text in editor
local ss = editor.SelectionStart
editor:ReplaceSel(new)
editor:SetSel(ss, ss+string.len(new))
Данный код внедрен в форум с помощью скрипта vladvro

Всего записей: 281 | Зарегистр. 05-04-2006 | Отправлено: 14:52 26-03-2007 | Исправлено: vladvro, 11:55 05-07-2007
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » SciTE - Open Source Text Editor for Windows & Linux
Widok (09-10-2007 14:48): лимит страниц. продолжаем здесь


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru