Замена Regex с Emacs

MVC для Интернета должен быть намного проще, чем традиционный MVC.

Традиционный MVC включает в себя код, который «прослушивает» «события», так что представление может постоянно обновляться, чтобы отражать текущее состояние модели. Однако в веб-парадигме веб-сервер уже выполняет прослушивание, и запрос является событием. Поэтому MVC для сети должен быть только конкретным экземпляром шаблона-посредника: контроллеры, обеспечивающие связь между представлениями и моделью. Если веб-фреймворк создан правильно, ядро ​​многократного использования, вероятно, не должно превышать 100 строк. В этом ядре должна быть реализована только парадигма «контроллера страницы», но она должна быть расширяемой, чтобы поддерживать парадигму «фронт-контроллера».

Ниже приведен метод, который является сутью моей собственной инфраструктуры, успешно используемой во встроенном потребительском устройстве, производимом производителем сетевого оборудования Fortune 100, для медиа-компании Fortune 50. Мой подход был уподоблен Smalltalk бывшим программистом Smalltalk и автором книги Орейли о самой выдающейся веб-инфраструктуре на Java; Более того, я перенес ту же платформу в mod_python / psp.

static function sendResponse(IBareBonesController $controller) {
  $controller->setMto($controller->applyInputToModel());
  $controller->mto->applyModelToView();
}
8
задан Paul Nathan 29 June 2009 в 21:40
поделиться

4 ответа

Обратите внимание, что скобки и круглые скобки необходимо экранировать («лишние косые черты») в регулярном выражении search , но не в replace regexp.

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

Но, если вы пишете программно (в отличие от интерактивного ввода), вам нужно избегать экранирования! ай-йи-йи ....

interactive:
M-x replace-regexp RET \(obj.method(.*)\{1\}\) RET trim$(\1)

programmatic:
(replace-regexp "\\(obj.method(.*)\\{1\\}\\)" "trim$(\\1)")

экранированные пары экранированы, потому что они группируются, неэкранированные парены являются буквальными скобками.

Возможно, вы захотите ознакомиться с Emacs Wiki Regex Crash Course и раздел эффективного регулярного выражения Emacs Стива Йегге .

8
ответ дан 5 December 2019 в 13:01
поделиться

Попробуйте что-нибудь вроде этого \ (foo [1-4 ] \. txt \)

2
ответ дан 5 December 2019 в 13:01
поделиться

Регулярные выражения Emacs всегда меня ловят, потому что они не Perl:

\(foo[1-4]\.txt\)

Вам нужно поставить обратную косую черту в скобках в Emacs.

2
ответ дан 5 December 2019 в 13:01
поделиться

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

C-x ( " M-f M-f " C-f C-f C-x )

То есть начать запись макроса, вставить цитату, перейти на два слова вперед, вставить цитату, перейти на два символа вперед для следующего элемента и остановить запись макроса.

Затем запустите макрос с помощью Cx e . Чтобы повторить, просто нажмите e еще раз.

(В Emacs 23 вы можете использовать F3 вместо ' Cx (' и F4 вместо обоих '

1
ответ дан 5 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: