JavaScript — синтаксис Ace Editor PHP для использования скобок

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

Простой шорткод будет [shortcode] в то время как расширенный будет иметь открытые и закрывающие скобки [shortcode]something[/shortcode]

function foo( $title ) {

// Example single shortcode (without closing shortcode), [...] will be replaced with "Some value entered by user"$site_name = [get_input type="text" desc="Please enter the site name"];

// Example with open closing shortcodes
[check_question question="Do you want to add period to the end of the title?"]
$title .= '.';
[/check_question]

$title = ucfirst( $title );

return $title;
}

Может ли кто-нибудь помочь мне выяснить, как расширить режим / рабочий режим PHP или что нужно сделать, чтобы предотвратить появление синтаксических ошибок PHP в редакторе при включении шорткодов? Все отлично работает, кроме простых синтаксических ошибок PHP на коротких кодах.

https://github.com/ajaxorg/ace/wiki/Creating-or-Extending-an-Edit-Mode

Пример скрипки:
http://jsfiddle.net/tripflex/crm4ywu0/

Регулярное выражение, которое используется в бэкэнде для замены [...] с пользовательскими значениями / кодом:

\[(\[?)(get_input|check_question)(?![\w-])([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)

Что прямо из обработки коротких кодов WordPress:
https://github.com/WordPress/WordPress/blob/master/wp-includes/js/shortcode.js#L105
https://github.com/WordPress/WordPress/blob/master/wp-includes/shortcodes.php#L264

0

Решение

Вы можете использовать это регулярное выражение для замены скобок в https://github.com/ajaxorg/ace/blob/v1.2.6/lib/ace/mode/php_worker.js#L51, перед передачей значения в лексер php.
К сожалению, нет способа сделать это без непосредственного изменения исходного кода в файле worker-php.js.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector