[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