LINUX.ORG.RU
ФорумTalks

YAML: совет по указанию кода


0

1

Скажем, я в YAML описываю класс. С параметрическими полями — вопроса нет. Но, скажем, я хочу описать в каком-то поле код, который должен прописаться при генерации класса. Ну, скажем, что-то в духе:

title: Привет %s!
title_html: return str_replace('%s', $this->user_name(), $this->title());

Вот как бы красиво и максимально стандартно записать этот title_html?

★★★★★

например такой г-внокод

<?php

date_default_timezone_set('Europe/Moscow');

$ya = <<< EOY
version: <# phpversion() #>
date: <# strftime("%c") #>
smth: <#=smth#> <# '13'.'666' #>
EOY;

function yayaml($ya, $args = array()) {
    return preg_replace_callback(
        '/<#(=(.*?)|(.*?))#>/',
        function ($m) use ($args) {
            if (!empty($m[2])) {
                return $args[$m[2]];
            } else {
                return eval('return '.$m[3].';');
            }
        },
        $ya
    );
}

$ya = /*yaml_parse(*/yayaml(
    $ya,
    array(
        'smth' => 'test test test'
))/*)*/;

var_dump($ya);

?>

% php ya.php
string(83) "version: 5.3.6-pl1-gentoo
date: Thu Jun 30 02:09:42 2011
smth: test test test 13666"
d0de-stillhet
()
Ответ на: комментарий от d0de-stillhet

>например такой г-внокод

Сам код мне не интересен :) Мне интересны варианты оформления записи кода в YAML'е

<# … #>


Ага, понятный вариант. А почему тогда сразу не «<?php … ?>» ?

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от d0de-stillhet

как я это вижу:
из yaml в сыром виде пихаются проперти в объект,
потом в конструкторе последовательно проперти обрабатываются (с учетом областей видимости, вручную переданных параметров и всего прочего)

d0de-stillhet
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.