Fixed https://github.com/vti/text-haml/commit/67cde2d07e859fbb2cd758d71aac50a7e32d83e0

On 06/06/2013 01:19 PM, TheAthlete wrote:
Хорошо

vti <[email protected]> писал(а) в своём письме Thu, 06 Jun 2013 12:47:25 +0300:

Это баг интерполяции в фильтре. Постараюсь починить.

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 <[email protected]> писал(а) в своём письме 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 <[email protected]> писал(а) в своём письме 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
[email protected]
http://mail.pm.org/mailman/listinfo/kiev-pm

_______________________________________________
Kiev-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/kiev-pm



_______________________________________________
Kiev-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/kiev-pm



_______________________________________________
Kiev-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/kiev-pm



_______________________________________________
Kiev-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/kiev-pm

Ответить