В конечном счете все регулярные выражения ожидают получить инвокант типа Match
или некоторый подкласс Match
. В Perl 6 инвокант - это просто первый аргумент, и он не является чем-то особенным.
Те регулярные выражения, объявленные с помощью rule
, token
или regex
внутри пакета, будут установлены как методы для этого пакета. Наиболее типично, они объявлены в grammar
, который является не чем иным как class
, чей родитель по умолчанию - Grammar
, а не Any
. Grammar
является подтипом Match
.
grammar G {}.^mro.say # ((G) (Grammar) (Match) (Capture) (Cool) (Any) (Mu))
Таким образом, вполне естественно рассматривать их как просто методы, но с телом, написанным на другом языке. На самом деле, это именно то, что они есть.
Немного сложнее увидеть, как анонимные регулярные выражения являются методами, поскольку они не устанавливаются в таблицу методов любого типа. Однако, если мы напишем:
class C {
method foo() { 42 }
}
my $m = anon method () { self.foo }
say C.$m()
Тогда мы увидим, что мы можем разрешить символы в инвоканте через self
, даже если этот метод фактически не установлен в классе C
. То же самое с анонимными регулярными выражениями. Причина, по которой это имеет значение, заключается в том, что утверждения типа <ident>
, <.ws>
, <?before foo>
и друзья фактически скомпилированы в вызовы методов.
Таким образом, анонимные регулярные выражения, являющиеся методами, и, таким образом, трактующие свой первый аргумент как инвокант, позволяют разрешать различные встроенные правила, объявленные в Match
.
Элемент DIV имеет (а также другие элементы) свойство contentEditable
, которое вы можете установить в Javascript в значение true.
getElementById('YourDiv').contentEditable = true;
Вы можете сделать div доступным для редактирования, установив его атрибут / свойство contentEditable
на правда
. Однако для чего-либо, что немного более мощно или гибко, чем очень простое редактирование, вы можете посмотреть на существующие решения, такие как:
I Предлагаю вам использовать текстовое поле, а если этого недостаточно, используйте редактор WYSIWYG, например tinyMCE или FCKeditor.
насколько я понимаю вашу проблему, вы можете решить ее, добавив textarea
в свой div
. Очень просто сделать это текстовое поле
автоматическим размером, чтобы оно занимало всю область div
и выглядело как этот div
.
Что касается contentEditable
, Я видел некоторые браузеры, которые поддерживали эту функцию для div
-элемента, но не поддерживают. В любом случае, вы можете использовать iframe
в своем div. Это документ
-элемент может иметь contentEditable
.
contenteditable attribute could be used for this purpose. Following code line has been tested in IE7 and Firefox 3.0.10. One part, I have noticed that this attribute should be used in lower case only; else it wont work in Firefox.
<div id="Div_ID" contenteditable="true" tabindex="0">
Enter text here
</div>