[Kiev-pm] Как реализовать данный код с помощью Text::Haml
vti
viacheslav.t at gmail.com
Thu Jun 6 02:47:25 PDT 2013
Это баг интерполяции в фильтре. Постараюсь починить.
On 06/06/2013 12:14 PM, TheAthlete wrote:
> Нет..., добавил, но все равно не интерполируется, вот тестовый пример:
>
> #================ test_haml.pl
>
> #!/usr/bin/perl -w
> use Modern::Perl;
> use utf8::all;
>
> use Text::Haml;
>
> my $haml = Text::Haml->new;
>
> my $html = $haml->render_file('tmpl/index.haml',
> title => 'Hello from Haml',
> content => [qw/test1 test2/],
> test_hash => {
> sky => 'blue',
> grass => 'green',
> },
> settings => {
> charset => 'utf-8',
> },
> request => {
> uri_base => '/home/theathelete',
> },
> );
>
> say $html;
>
> #============== tmpl/index.haml
>
> !!! 5
> %html
> %head
> %meta(charset = $settings->{charset})
> %title= $title
> :javascript
> !window.jQuery && document.write('<script type="text/javascript"
> src=#{$request->{uri_base}}."/javascripts/jquery.js"><\/script>')
> %body
> #content
> %strong= $content->[1]
> %p= $test_hash->{grass}
>
> #================ Вывод:
>
> <!DOCTYPE html>
> <html>
> <head>
> <meta charset='utf-8' />
> <title>Hello from Haml</title>
> <script type='text/javascript'>
> //<![CDATA[
> !window.jQuery && document.write('<script type="text/javascript"
> src=}."/javascripts/jquery.js"></script>')
> //]]>
> </script>
> </head>
> <body>
> <div id='content'>
> <strong>test2</strong>
> </div>
> <p>green</p>
> </body>
> </html>
>
>
> vti <viacheslav.t ÎÁ gmail.com> писал(а) в своём письме Thu, 06 Jun 2013
> 11:56:13 +0300:
>
>> Так а сама переменная есть?
>>
>> On 06/06/2013 11:55 AM, TheAthlete wrote:
>>> Use of uninitialized value in substitution iterator at
>>> /usr/local/share/perl5/Text/Haml.pm line 942.
>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
>>> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>>> <html>
>>> <head>
>>> <meta charset='utf-8' />
>>> <title>Hello from Haml</title>
>>> <script type='text/javascript'>
>>> //<![CDATA[
>>> !window.jQuery && document.write('<script type="text/javascript"
>>> src=}."/javascripts/jquery.js"></script>')
>>> //]]>
>>> </script>
>>> </head>
>>> <body>
>>> <div id='content'>
>>> <strong>test2</strong>
>>> </div>
>>> <p>green</p>
>>> </body>
>>> </html>
>>>
>>> Это если использовать интерполяцию с помощью #{}
>>> :javascript
>>> !window.jQuery && document.write('<script type="text/javascript"
>>> src=#{$request->{uri_base}}."/javascripts/jquery.js"><\/script>')
>>>
>>>
>>> vti <viacheslav.t ÎÁ gmail.com> писал(а) в своём письме Thu, 06 Jun
>>> 2013 11:46:40 +0300:
>>>
>>>> Насколько я помню правильный способ второй, используя интерполяцию
>>>> #{}. А что именно не работает? Какая ошибка?
>>>>
>>>> On 06/06/2013 11:40 AM, TheAthlete wrote:
>>>>> Здравствуйте!
>>>>> Подскажите пожайлуста, как с помощью Haml для Text::Haml
>>>>> реализовать следующий код:
>>>>>
>>>>> <script type="text/javascript">/* <![CDATA[ */
>>>>> !window.jQuery && document.write('<script
>>>>> type="text/javascript" src="<% request.uri_base
>>>>> %>/javascripts/jquery.js"><\/script>')
>>>>> /* ]]> */</script>
>>>>>
>>>>> Пробую слеюующим образом:
>>>>>
>>>>> :javascript
>>>>> !window.jQuery && document.write('<script type="text/javascript"
>>>>> src=$request->{uri_base}."/javascripts/jquery.js"><\/script>')
>>>>>
>>>>> но не работает - не получается интерполировать $request->{uri_base}
>>>>> #{$request->{uri_base}} тоже не работает
>>>>> _______________________________________________
>>>>> Kiev-pm mailing list
>>>>> Kiev-pm ÎÁ pm.org
>>>>> http://mail.pm.org/mailman/listinfo/kiev-pm
>>>>
>>>> _______________________________________________
>>>> Kiev-pm mailing list
>>>> Kiev-pm ÎÁ pm.org
>>>> http://mail.pm.org/mailman/listinfo/kiev-pm
>>>
>>>
>>
>> _______________________________________________
>> Kiev-pm mailing list
>> Kiev-pm ÎÁ pm.org
>> http://mail.pm.org/mailman/listinfo/kiev-pm
>
>
More information about the Kiev-pm
mailing list