Haml - как заставить атрибуты тега использовать только двойные кавычки И как мне упорядочить атрибуты тега так, как я хочу? - PullRequest
18 голосов
/ 09 июня 2009

Я использую staticmatic для шаблонов, которые я использую позже с PHP. Существует странная ситуация, когда некоторые атрибуты тега имеют одинарные кавычки, а некоторые имеют двойные кавычки. Я хотел бы, чтобы у всех них были двойные кавычки (не то, чтобы это имело значение, я думаю, но я хочу, чтобы они были такими!)

Например, код haml:

!!! XML
%html{html_attrs('hr-HR')}
  %head
    %title Some title
    %meta{'http-equiv' => 'Content-Type', :content => 'text/html; charset=utf-8'}/
    %meta{'name' => "description", :content => 'Some title - YO!'}/
    = stylesheets
    = javascripts('test', :other)
  %body
    = yield

производит следующее:

<?xml version='1.0' encoding='utf-8' ?>
<html lang='hr-HR' xml:lang='hr-HR' xmlns='http://www.w3.org/1999/xhtml'>
  <head>
    <title>Some title</title>
    <meta content='text/html; charset=utf-8' http-equiv='Content-Type' />
    <meta content='Some title - YO!' name='description' />
    <link href="stylesheets/application.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/grid.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/text.css" media="all" rel="stylesheet" type="text/css"/>
    <script language="javascript" src="javascripts/test.js" type="text/javascript"></script><script language="javascript" src="javascripts/other.js" type="text/javascript"></script>

  </head>
  <body>
    <h1>some body stuff!</h1>
    utf test šđčćž ŠĐČĆŽ
  </body>
</html>

обратите внимание, что не имеет значения, использую ли я одинарные или двойные кавычки в коде haml, я всегда получаю один и тот же вывод!

Кроме того, похоже, что вывод haml-> html сортирует атрибуты тегов по алфавиту, а не так, как я их упорядочил в haml. Я подозреваю, что это как-то связано с массивами ruby, но я не уверен, поскольку не использую / не могу использовать Ruby, кроме haml, в staticmatic. Как я мог их заказать так же, как я заказал их в массиве ruby ​​в коде haml?

Ответы [ 3 ]

29 голосов
/ 09 июня 2009

Попробуйте следующее:

Haml::Template.options[:attr_wrapper] = '"'
2 голосов
/ 09 июня 2009

Haml действительно упорядочивает атрибуты в алфавитном порядке, и это действительно является следствием парсера Ruby. В будущем атрибуты могут быть упорядочены по порядку документов в максимально возможной степени, но это вряд ли произойдет до версии 2.2 или более поздней.

0 голосов
/ 05 февраля 2015

Цитата из: http://haml.info/docs/yardoc/file.REFERENCE.html#options

Haml понимает различные параметры конфигурации, которые влияют на его производительность и производительность.

В Rails параметры можно установить, установив Haml::Template.options хеш в инициализаторе:

# config/initializers/haml.rb

Haml::Template.options[:format] = :html5

Внешние Rails, вы можете установить их, настроив их глобально в Haml::Options.defaults:

Haml::Options.defaults[:format] = :html5

Наконец, вы также можете установить их, передав хеш опций [ Haml :: Engine # initialize ] [1]. За полный список доступных параметров см. в [ Haml :: Options ] [2].

[1]: http://haml.info/docs/yardoc/Haml/Engine.html#initialize-instance_method

[2]: http://haml.info/docs/yardoc/Haml/Options.html

...