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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

Открыть новую тему     Написать ответ в эту тему

Jenyay



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


Текущая стабильная версия: 3.0.0

Текущая бета-версия: 3.0.0.888 (13.05.2021)



 
Поддерживаемые операционные системы: Windows / Linux.
 
Программа OutWiker предназначена для хранения заметок в виде дерева. Такие программы называют outliner'ами, персональными вики или древовидными редакторами. Я долго подбирал для себя подобную программу из имеющихся, но в итоге решил сделать свой outliner в том виде, как он мне представляется наиболее удобным для использования.
Основное отличие OutWiker от других подобных программ заключается в том, что OutWiker не только хранит дерево заметок в виде обычных директорий на диске, но и поощряет изменение такой базы внешними средствами. Также к программе может быть прикреплено любое количество файлов.
Кроме того, OutWiker может содержать страницы разного типа, в данный момент поддерживаются два типа страниц: обычный текст и HTML, но в будущем количество типов страниц будет увеличиваться.
 
Основные возможности
* База хранится в виде директорий на диске.
* Поддержка плагинов
* К каждой заметке можно прикреплять любое количество файлов.
* Страницы могут быть разных типов. В данный момент поддерживаются текстовые страницы, страницы в формате HTML и вики-страницы.
* Прикрепленные картинки могут быть вставлены в HTML-страницы.
* Раскраска синтаксиса HTML.
* Поддержка тегов.
* Поддержка закладок на страницы.
* Каждая ветвь дерева может быть открыта как отдельная вики.
* Иконки для страниц.
* Кроссплатформенность (поддержка Windows и Linux).
* Портабельность. Программа все настройки хранит рядом с запускаемым файлом.
* Программа распространяется с открытыми исходниками.
* Возможность создания ссылок между страницами.
* Есть глобальный поиск по заметкам и поиск по тегам.
* К программе прилагается справка.

Всего записей: 1737 | Зарегистр. 13-10-2001 | Отправлено: 19:47 04-05-2010 | Исправлено: Jenyay, 19:39 13-05-2021
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ИМХо, косячок.
Код вида @@#asfff@@, '^*^' становится списком.

Всего записей: 6605 | Зарегистр. 14-02-2005 | Отправлено: 18:56 02-07-2013 | Исправлено: unreal666, 12:31 03-07-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
еще одно.
если юзать символ \ вот так:

Код:
||x01\
    ||x02,1\
       x02.2\
    ||x03 ||
||x11\
    ||x12\
    ||x13 ||

то в тексте остаются символы \ .
косяк

Всего записей: 6605 | Зарегистр. 14-02-2005 | Отправлено: 12:31 03-07-2013
Jenyay



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

Цитата:
ИМХо, косячок.  
Код вида @@#asfff@@, '^*^' становится списком.

 
Про такое поведение я знаю, но считать ли это глюком - вопрос философский, потому что с точки зрения всего, что внутри @@ ... @@ на первом месте стоит действительно знак списка. Тем более это легко исправить, если перед решеткой добавить пробел, или обернуть ее в [=...=].
 

Цитата:
||x01\  
    ||x02,1\  
       x02.2\  
    ||x03 ||  
||x11\  
    ||x12\  
    ||x13 ||

 
После \ не должно быть пробелов, только тогда \ считается как перенос строки.

----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1737 | Зарегистр. 13-10-2001 | Отправлено: 17:58 03-07-2013 | Исправлено: Jenyay, 17:59 03-07-2013
unreal666



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

Цитата:
Про такое поведение я знаю, но считать ли это глюком - вопрос философский, потому что с точки зрения всего, что внутри @@ ... @@ на первом месте стоит действительно знак списка. Тем более это легко исправить, если перед решеткой добавить пробел, или обернуть ее в [=...=].

это и есть глюк, т.к "способность" обрабатываться как список из-за добавления тегов форматирования текста - это именно косяк. Сам текст и его форматирование - одного уровня (phrasing content). Как-то неожиданно, что, к примеру, добавление жирности надо отслеживать на дополнительную обработку.

Цитата:
Тем более это легко исправить, если перед решеткой добавить пробел, или обернуть ее в [=...=].

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

Цитата:
После \ не должно быть пробелов, только тогда \ считается как перенос строки.

пробелы только при выделении текста на этой самой странице, тынки на ссылку "Редактировать" в моем посте - пробелов нет.

Всего записей: 6605 | Зарегистр. 14-02-2005 | Отправлено: 18:27 03-07-2013 | Исправлено: unreal666, 16:46 05-07-2013
Jenyay



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

Цитата:
это и есть глюк, т.к "способность" обрабатываться как список из-за добавления тегов форматирования текста - это именно косяк. Сам текст и его форматирование - одного уровня (flow content). Как-то неожиданно, что, к примеру, добавление жирности надо отслеживать на дополнительную обработку.  

 
Возможно. Добавлю в ToDo, но скорое исправление пока обещать не буду.
 

Цитата:
пробелы только при выделении текста на этой самой странице, тынки на ссылку "Редактировать" в моем посте - пробелов нет.

 
Хм, без пробелов под Линуксом у меня все нормально работает. Потом попробую под Виндой.

----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1737 | Зарегистр. 13-10-2001 | Отправлено: 18:40 03-07-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хм.
Данный код и меня показал нормально почему-то (я его прямо здесь набирал без проверки).
А так реальный текст?

Код:
 
||  
|| Элементы || Категория || Контекст, в котором может использоваться элемент || Модель содержимого || Список атрибутов || DOM-интерфейс ||
||P \
    ||%flow-content, %palpable-content\
    ||Где ожидается %flow-content.\
    ||%phrasing-content\
    ||%attrs\
    ||HTMLParagraphElement ||

Всего записей: 6605 | Зарегистр. 14-02-2005 | Отправлено: 19:00 03-07-2013 | Исправлено: unreal666, 19:00 03-07-2013
Jenyay



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

Цитата:
Хм.  
Данный код и меня показал нормально почему-то (я его прямо здесь набирал без проверки).  
А так реальный текст?

 
Да, а вот с этим текстом какие-то непонятки, надо будет разобраться.

----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1737 | Зарегистр. 13-10-2001 | Отправлено: 19:04 03-07-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
это где-то конфликт парсинга таблиц и этого символа \.

Всего записей: 6605 | Зарегистр. 14-02-2005 | Отправлено: 01:52 04-07-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
понятно, почему есть косяк в таблицах с символом \  перед ||.
из-за ф-и strip() в tokentable.py:

Код:
    def __convertTableCell (self, s, loc, toks):
        text = toks["text"]
 
        leftAlign = toks["text"][-1] in " \t"
         
        # Условие в скобках связано с тем, что первый пробел попадает  
        # или не попадает в токен в зависимости от того, первая ячейка в строке или нет
        rightAlign = loc > 0 and (s[loc - 1] in " \t" or s[loc] in " \t")
 
        align = u''
 
        if leftAlign and rightAlign:
            align = u' ALIGN="CENTER"'
        elif leftAlign:
            align = u' ALIGN="LEFT"'
        elif rightAlign:
            align = u' ALIGN="RIGHT"'
 
        result = u'<TD%s>%s</TD>' % (align, self.parser.parseWikiMarkup (text.strip() ) )
 
        return result

наверно надо бы заменить strip() на lstrip() или в wikiparser.py создать отдельную ф-ю для обработки с помощью self.lineJoin, после выполнения которой уже и делать этот strip().
 
ЗЫ.
кстати, наверно надо везде в исходниках заменить везде "\\r?\n" на "\\\r?\n". А то в таком варианте он должен искать символ \, сопровождаемый буквой r.

Всего записей: 6605 | Зарегистр. 14-02-2005 | Отправлено: 12:54 05-07-2013 | Исправлено: unreal666, 13:15 05-07-2013
Jenyay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Я еще с этой проблемой не разбирался, но при чем тут strip?

----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1737 | Зарегистр. 13-10-2001 | Отправлено: 12:57 05-07-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
strip съедает переносы строк и, соответственно, в данном месте не срабатывает self.lineJoin.
до меня это доперло, когда в PyCharm поставил брейкпоинт на эту строку, вошел в pyparsing и увидел что входящая строка без переносов.
 
Добавлено:
ЗЫ.
Маленькое предложение. Может сделаешь так, что плагин source не съедал начальные пробелы/табы, по крайней мере пробелы на той строке, где начинается текст?
А то если текст в исходниках идет в самом начале с отступами, то они съедаются.

Всего записей: 6605 | Зарегистр. 14-02-2005 | Отправлено: 13:07 05-07-2013 | Исправлено: unreal666, 13:15 05-07-2013
Jenyay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
strip удаляет пробелы и переносы только слева и справа до первого символа. Внутри строки они не удаляются.  
 

Цитата:
кстати, наверно надо везде в исходниках заменить везде "\\r?\n" на "\\\r?\n". А то в таком варианте он должен искать символ \, сопровождаемый буквой r.

 
Посмотрю, но скорее всего \r - это перестраховка, питон умный и обычно ему хватает просто \n.
 
Добавлено:

Цитата:
Маленькое предложение. Может сделаешь так, что плагин source не съедал начальные пробелы/табы, по крайней мере пробелы на той строке, где начинается текст?  
А то если текст в исходниках идет в самом начале с отступами, то они съедаются.

 
Ok, добавлю в ToDo.

----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1737 | Зарегистр. 13-10-2001 | Отправлено: 13:15 05-07-2013
unreal666



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

Цитата:
strip удаляет пробелы и переносы только слева и справа до первого символа. Внутри строки они не удаляются.  

мое:

Код:
||x01\
    ||x02,1\
       x02.2\
    ||x03 ||
||x11\
    ||x12\
    ||x13 ||

выделенные символы и есть в конце строки, т.к. они идут сразу перед || и переносы после них как раз и съедаются.

Всего записей: 6605 | Зарегистр. 14-02-2005 | Отправлено: 13:19 05-07-2013 | Исправлено: unreal666, 13:20 05-07-2013
Jenyay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Тогда да, похоже.

----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1737 | Зарегистр. 13-10-2001 | Отправлено: 13:21 05-07-2013
unreal666



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

Цитата:
Посмотрю, но скорее всего \r - это перестраховка, питон умный и обычно ему хватает просто \n.

зато если в тексте будет

Код:
ssss\r
asff

то питон это тоже посчитает за команду слияния строк

Всего записей: 6605 | Зарегистр. 14-02-2005 | Отправлено: 13:22 05-07-2013
Jenyay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Тогда да, баг.

----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1737 | Зарегистр. 13-10-2001 | Отправлено: 13:24 05-07-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кстати, а почему слияние строк задействовано не во всех элементах?
к примеру, в списках \ не обрабатывается как символ слияния строк.
 
ЗЫ.
и что значит вот это?

Код:
    def getToken (self):
        token = Regex (r"\\\r?\n")
        token = token.setParseAction (lambda s, l, t: u"")("linejoin")
        return token

Всего записей: 6605 | Зарегистр. 14-02-2005 | Отправлено: 13:50 05-07-2013 | Исправлено: unreal666, 13:53 05-07-2013
Jenyay



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

Цитата:
кстати, а почему слияние строк задействовано не во всех элементах?  
к примеру, в списках \ не обрабатывается как символ слияния строк.  

 
Не помню уже почему.
 

Цитата:
и что значит вот это?  

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

----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1737 | Зарегистр. 13-10-2001 | Отправлено: 14:10 05-07-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
у себя сделал переносы для списков и заголовков

Код:
class ListToken (object):
...
    def getToken (self):
        regex = "^(?P<level>["
 
        for param in self.allListsParams:
            regex += param.symbol
 
        regex += r"]+) *(?P<item>(\\\n|.)*?)$\n{0,2}"
 
        item =  Regex (regex, re.MULTILINE).setParseAction (noConvert).leaveWhitespace()
 
        fullList = OneOrMore (item).setParseAction (self.__convertList)("list")

 

Код:
class HeadingToken (object):
    def __init__ (self, parser):
        self.heading_Regex = r"^(?P<header>!!+)\s+(?P<title>(\\\n|.)*)$"
        self.parser = parser

Всего записей: 6605 | Зарегистр. 14-02-2005 | Отправлено: 15:57 05-07-2013 | Исправлено: unreal666, 16:07 05-07-2013
Jenyay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В репозитории исправил баг со слешами в таблицах (просто сделал более умное регулярное выражение) и проблему с \r в конце строки.

----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1737 | Зарегистр. 13-10-2001 | Отправлено: 19:03 05-07-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

Компьютерный форум Ru.Board » Компьютеры » Программы » OutWiker


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru