Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсветка синтаксиса, прога, перегоняющая *.py в *.html 
:(
    Опции темы
DronXaker
Дата 21.12.2007, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.12.2007

Репутация: нет
Всего: нет



""Раскрашиватель синтаксиса" преобразовывает файлы питона с расширением ".py" в файлы с расширением ".html" при этом раскрашивая "ключевые" слова питона."

мне по проге в универе нужно написать такую прогу... написал следующее, но [censored 6] фигня это всё... багов дохера, не любой код переводит и синтаксис не соблюдает...

Вот ОНО:

файл MAIN.py
Код

import function
import edit_html
file=str(raw_input('FileName?'))
f=open(file+'.py', "r")
edit_html.create_html(file) #создает хтмл
s= f.readline()                    #читает исходный файл по строкам
while s != "":
    print s
    s= f.readline()
    function.edit(s)          #передает в другой блок
f.close()
edit_html.close()
raw_input('exit1?')





файл EDIT_HTML.py содержит ф-ии, работающие с хтмл'ем
Код

h=None

def create_html(name_py):
    global h
    h=open(name_py+'.html', 'w')
    h.write("<html>\n<head>\n<title>"+name_py+".py</title>\n</head>\n<body>\n")    

def write_html_symbol(text):
    global h 
    h.write(text)

def write_html(text, color):
    global h
    h.write("<font color="+color+">"+text+"</font>")    

def close_html():
    global h
    h.write("</body></html>")
    h.close




файл FUNCTION.py по-моему это я слишком херово написал... он должен смотреть че в начале строки стоит, если че-нить есть, то в хтмл отправляет и обрезает строку с начала и повторяет цикл
Код

import masstr
import masnumb
import masf
import mascomment
import edit_html
def edit(s):
        r=s
    for i in range(len(r)):
        k=masf.search(r)
        if k[0]==0:
                        k=masstr.search(r)
            if k[0]==0:
                k=masnumb.search(r)
                if k[0]==0:
                    k=mascomment.search(r)
                    if k[0]==0:
                        edit_html.write_html_symbol(r[0:1])                             
                        r = r[1:len(r)]
                    else:                     
                        edit_html.write_html(r[0:k[1]], k[2])    
                        r = r[k[0]:len(r)]
                                else:
                    edit_html.write_html(r[0:k[1]], k[2])    
                    r = r[k[0]:len(r)]    
            else:
                edit_html.write_html(r[0:k[1]], k[2])
                r = r[k[0]:len(r)]
        else:
            edit_html.write_html(k[1]+' ', k[2])
        r = r[k[0]:len(r)]





файл MASF.py ищет ключевые слова в строке
Код

fun=['and', 'del', 'for', 'is', 'raise', 'assert', 'import', 'def', 'print', 'for', 'in']

def search(s):
    global fun
    for i in range(len(fun)):
        if fun[i]==s[0:len(fun[i])]:
            if len(fun[i])<len(s):
                if s[len(fun[i])]==' ':
                    return [len(fun[i]), fun[i+1], "orange"]
            else:
                return [len(fun[i]), fun[i], "orange"]
    return [0, 0] 




файл MASSTR.py должен искать строки в кавычках
Код

def search(s):
    if (s[0] == '\"') or (s[0] == "\'"):                            #не знаю как указать кавычки-.". и кавычки-.'. поэтому коменты он не ищет
        for i in range(1, len(s)):
            if s[i] == s[0]:
                return [i+1, "green"]
    else:                          
        return [0, 0]



MASSNUMB.py ищет цифры и знаки
Код

digits=['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '+', '-', '*', '/']
def search(s):              
    x=""
    for i in range(len(s)):
        if not s[i] in digits:
            return [i, "green"]
        x = x + digits[i]
    return [len(s), "black"]
    



MASCOMMENTS.py ищет комменты
Код

def search(s):
    if s[0] == "#":
        return [len(s), "red"]
    return [0, 0]



подскажите че сможете, помогите поправить.... может вообще другой алгоритм писать? или где исходники чего-нибудь подобного можно качнуть?
и еще вопрос: как можно выбор файла *.py организовать ч/з HTML? чтобы визуальное оформление сделать...
PM MAIL   Вверх
Void
Дата 21.12.2007, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: нет
Всего: 173



У питоновских строк есть метод для поиска подстрок, называется, как ни странно, find.
Цитата(DronXaker @  21.12.2007,  21:55 Найти цитируемый пост)
fun=['and', 'del', 'for', 'is', 'raise', 'assert', 'import', 'def', 'print', 'for', 'in']
бла-бла

Здесь не все ключевые слова. Можно проще:
Код
from keyword import kwlist

Ещё больше упростить себе жизнь можно воспользовавшись модулем tokenize.

Отличный настраиваемый syntax highlighter на Питоне — Pygments.

И зачем в веб-разработку?


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
DronXaker
Дата 22.12.2007, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.12.2007

Репутация: нет
Всего: нет



Спасибо за помощь, а как пользоваться 
Цитата

from keyword import kwlist

я в этом языке почти не шарю... первый раз увидел 2 месяца назад...
PM MAIL   Вверх
Void
Дата 22.12.2007, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: нет
Всего: 173



kwlist — это и есть список ключевых слов. Использовать так же, как fun в той функции.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема »


 




[ Время генерации скрипта: 0.0458 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.