<htmlarea>, нужны мнения
От: c-smile Канада http://terrainformatica.com
Дата: 22.10.05 16:21
Оценка:
Вот на очереди (в HTMLayout) имплементация <htmlarea>

<htmlarea> — это WYSIWYG редактор аналогичный <textarea> — т.е. submitable как и все остальные input fields.

Извиняюсь что на буржуйском — просто этот текст из моего сообщения на W3C группе

major attributes of htmlarea:

src — url, source of the content, optional.
Otherwise takes initial content in-place between
<htmlarea> and </htmlarea>
allow — string, comma delimited list of tag names of allowed
elements in the content.
reject — string, comma delimited list of tag names of forbidden
elements in the content.
format — string, name of "rich text" format of the value of
the field, possible values: "html", "wiki", "blog", some other.
imagelist — url, list of images allowed to be inserted,


Our htmlarea input element is a block element and can be placed as display:
block and display:inline-block.
It inherits CSS styling of the content from its host document. It also knows
about overflow CSS attribute
so it can be used as pure in-place editor or as editable area with fixed size.


Пример:

<htmlarea>
  <strong>Маша</strong> мыла <em>Вову</em>
</htmlarea>


Предполагется также некий механизм позволяющий цеплять внешние "кнопки-регистры"
отображающие состяние в текущей позиции и управляющие оным.

Пока видится нечто типа этого:

<div id="toolbar">
  <input type="checkbox" for="editor" bindto="strong">
</div>
<htmlarea id="editor">
  <strong>Маша</strong> мыла <em>Вову</em>
</htmlarea>


На самом деле <htmlarea> можно управлять по всякому и так но
нужен некий простой набор по умолчанию.

Что бы еще сообществу хотелось видеть?
Re: Также по поводу <textarea> нужен совет
От: c-smile Канада http://terrainformatica.com
Дата: 23.10.05 05:57
Оценка:
Хочу сделать поддержку syntax highlighting в моей имплементации
<textarea> элемента (plain text editor input field)

Т.е. предлагается нечто типа:

<textarea syntax="cpp.stx">
...
</textarea>

Т.е. внутри текст:

int foo() { return 1; }



будет представлен как:

<pre>
<span class="keyword">int</span> foo() { <span class="keyword">return</span> <span class="const">1</span>; }
</pre>


Собственно то что делает генератор страниц на RSDN.

Файл stx содержит нечто что ставит в соответствие
фрагментам текста имена CSS классов span'ов или может быть блоков.


Кто-нибудь знает или имеет мысли по поводу как этот самый stx файл должен выглядеть?
Re[2]: Также по поводу <textarea> нужен совет
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.10.05 05:47
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Хочу сделать поддержку syntax highlighting в моей имплементации

CS><textarea> элемента (plain text editor input field)
Хороший вопрос.
Скорее всего, хайлайтинг будет применяться не для абы чего, а для ЯП. У ЯП обычно есть грамматика. Может, скармливать описание такой грамматики? При этом названия элементов грамматики станут названиями классов.
Примерно так:
<span class=method>
  <span class=method-header>
      <span class="return-type">int</span>
        <span class="method-name">foo</span>
        <span class="arglist">()</span>
    </span>
    <span class=method-body>
    {
        <span class=statement><span class=return>return</span><span class=const>1</span>;</span>
    }
    </span>
</span>

А уже раскраску придется делать в виде CSS для конкретного синтаксиса.
?
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Также по поводу <textarea> нужен совет
От: c-smile Канада http://terrainformatica.com
Дата: 24.10.05 21:37
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Хороший вопрос.


Хороший ответ


S>Скорее всего, хайлайтинг будет применяться не для абы чего, а для ЯП. У ЯП обычно есть грамматика. Может, скармливать описание такой грамматики? При этом названия элементов грамматики станут названиями классов.


Не обязательно для ЯП. Например wiki текст имело бы смысл раскрашивать...


S>Примерно так:

S>
S><span class=method>
S>  <span class=method-header>
S>      <span class="return-type">int</span>
S>        <span class="method-name">foo</span>
S>        <span class="arglist">()</span>
S>    </span>
S>    <span class=method-body>
S>    {
S>        <span class=statement><span class=return>return</span><span class=const>1</span>;</span>
S>    }
S>    </span>
S></span>
S>


S>А уже раскраску придется делать в виде CSS для конкретного синтаксиса.


Это как раз не проблема.
Проблема в том что для построения такого AST нужен полномасштабный компилятор, раз.
И два — его нужно вызывать на каждый чих.

Зело накладно будет...
Re[2]: Также по поводу <textarea> нужен совет
От: Mamut Швеция http://dmitriid.com
Дата: 25.10.05 09:44
Оценка: 20 (1)
CS>Кто-нибудь знает или имеет мысли по поводу как этот самый stx файл должен выглядеть?

Хм. Можно сделать весьма "тупо", как, например делается в TypoScript для CMS Typo3:
// Например, можно сделать так:

PHP {
    keywords = return, function
    keywords.wrap = <span class="php_keyword"> | </span>

    textWrap = // текст ничем не обрамляется
    textWrap.int = <span class="php_int"> | </span>
    textWrap.quotedString = <span class="quoted_string"> | </span>
}


Ну или в таком стиле. Все декларативно, лишнего мусора (aka XML Tags) — минимум.


dmitriid.comGitHubLinkedIn
Re[3]: Также по поводу <textarea> нужен совет
От: Аноним  
Дата: 28.10.05 13:06
Оценка:
Здравствуйте, Mamut, Вы писали:

CS>>Кто-нибудь знает или имеет мысли по поводу как этот самый stx файл должен выглядеть?


В UltraEdit есть wordfile.txt с описанием синтаксиса языков. Если его творчески переработать в XML, можно будет пользоваться синтаксисом сотен языков, уже описанных в рамках этого редактора. Единственное, чего там нет (а важно) — такое же текстовое описание раскраски синтаксиса.
Re[4]: Также по поводу <textarea> нужен совет
От: Mamut Швеция http://dmitriid.com
Дата: 28.10.05 16:33
Оценка:
CS>>>Кто-нибудь знает или имеет мысли по поводу как этот самый stx файл должен выглядеть?

А>В UltraEdit есть wordfile.txt с описанием синтаксиса языков. Если его творчески переработать в XML, можно будет пользоваться синтаксисом сотен языков, уже описанных в рамках этого редактора. Единственное, чего там нет (а важно) — такое же текстовое описание раскраски синтаксиса.


Можно взглянуть на PHP::PEAR::Text_Highlighter

Вот куски кода оттуда:

С++
<default innerClass="code" />
    <block name="escaped" match="\\" innerClass="special" contained="yes">
        <onlyin region="strdouble"/>
    </block>

    <region name="strdouble" delimClass="quotes" innerClass="string" start="&quot;" end="&quot;"/>

    <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}">
        <contains all="yes"/>
    </region>

    <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)">
        <contains all="yes"/>
    </region>

    <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]">
        <contains all="yes"/>
    </region>

    <block name="identifier" match="[a-z_]\w*" innerClass="identifier" case="no"/>

    <block name="hexinteger" match="\b0[xX][\da-f]+" innerClass="number" contained="yes"/>
    <block name="integer" match="\b\d\d*|\b0\b" innerClass="number" contained="yes"/>
    <block name="octinteger" match="\b0[0-7]+" innerClass="number" contained="yes"/>
    <block name="float" match="\b(\d*\.\d+)|(\d+\.\d*)" innerClass="number" contained="yes"/>

    <region name="strincl" delimClass="quotes" innerClass="string" start="&lt;" end="&gt;">
        <onlyin region="include" />
    </region>

    <!-- <block name="preprocessor" match="^#[azAZ_]\w*" innerClass="prepro"/> -->
    <region name="include" innerClass="prepro" start="/^[ \t]*#include/m" end="/(?&lt;!\\)$/m">
        <contains region="strdouble"/>
        <contains region="strincl"/>
    </region>
...


CSS
    <block name="atrule" match="(@[a-z\d]+)" 
        innerClass="var" never-contained="yes"/>

    <region name="property" start="[a-z][a-z\d\-]*\s*:" end="(?=;|\})"
        innerClass="code" delimClass="reserved" contained="yes"/>

    <block name="selector" match="(((\.|#)?[a-z]+[a-z\d\-]*(?![a-z\d\-]))|(\*))(?!\s*:\s*[\s\{])" 
        innerClass="identifier" >
    </block>

    <block name="pseudo" match=":[a-z][a-z\d\-]*" 
        innerClass="special" />

    <block name="bescaped" match="\\[\\(\\)\\]" 
        innerClass="string" contained="yes"/>

    <region name="paramselector" start="\[" end="\]" innerClass="code" 
        delimClass="brackets" >
        
        <contains block="paramname" />
        <not-contains block="identifier" />
        <contains region="strdouble" />
        <contains region="strsingle" />
    </region>
...


Ну и так далее.

Правда, сама подсветка там в отдельных РНР файлах, но ее тоже можно упростить до ХМЛ, по-моему.


dmitriid.comGitHubLinkedIn
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.