Haml - Haml

Haml
Paradigma Motor de template
Projetado por Hampton Catlin
Desenvolvedores Natalie Weizenbaum (passado), Norman Clarke , Matt Wildig , Akira Matsuda , Tee Parham
Versão estável
5.1.2 / 6 de agosto de 2019 ; 23 meses atrás ( 06/08/2019 )
Linguagem de implementação Rubi
SO Plataforma cruzada
Licença Licença MIT e Unspace Interactive
Extensões de nome de arquivo .haml
Local na rede Internet haml .info

Haml ( HTML Abstraction Markup Language) é um sistema de modelos projetado para evitar a escrita de código embutido em um documento da web e tornar o HTML mais limpo. Haml oferece a flexibilidade de ter algum conteúdo dinâmico em HTML. Semelhante a outras linguagens da web como PHP , ASP , JSP e sistemas de template como eRuby , Haml também incorpora algum código que é executado durante o tempo de execução e gera código HTML para fornecer algum conteúdo dinâmico. Para executar o código Haml , os arquivos precisam ter uma extensão .haml . Esses arquivos são semelhantes aos arquivos .erb ou eRuby, que também ajudam a incorporar o código Ruby durante o desenvolvimento de um aplicativo da web .

Enquanto analisa os comentários de codificação, Haml usa as mesmas regras do Ruby 1.9 ou posterior. Haml entende apenas codificações compatíveis com ASCII, como UTF-8, mas não UTF-16 ou UTF-32, porque não são compatíveis com ASCII .

O Haml pode ser usado na linha de comando , como um módulo Ruby separado ou em um aplicativo Ruby on Rails , tornando o Haml adequado para uma ampla variedade de aplicativos.

História

Haml foi originalmente apresentado por Hampton Catlin com seu lançamento inicial em 2006 e seu trabalho foi levado adiante por algumas outras pessoas. Seu motivo era tornar o HTML mais simples, limpo e fácil de usar. Desde 2006, ele foi revisado várias vezes e novas versões foram lançadas. Até 2012, Natalie Weizenbaum foi o mantenedor principal do Haml, seguido por Norman Clarke até 2015. Natalie trabalhou para tornar o Haml utilizável em aplicativos Ruby , enquanto a marca e o design eram feitos por Nick Walsh. Outros que estão atualmente na equipe de manutenção são Matt Wildig, Akira Matsuda, Tee Parham e Takashi Kokubun.

Histórico de versão

A versão 2.2.0 foi lançada em julho de 2009 com suporte para Ruby 1.9 e Rails 2.0 ou superior. A versão 3.0.0 foi lançada em maio de 2010, adicionando suporte para Rails 3 e algumas melhorias de desempenho. A quarta versão principal quebrou a compatibilidade com as versões anteriores, suportando apenas Rails 3 e Ruby 1.8.7 ou superior, e marcou a mudança para versionamento semântico. Várias alterações como aumento de desempenho, correção de alguns avisos, compatibilidade com as últimas versões do Rails, correções na documentação e muito mais foram feitas na série Haml 4. A versão 5.0.0 foi lançada em abril de 2017. Ele suporta Ruby 2.0.0 ou superior e descarta a compatibilidade com Rails 3. Uma opção de ' trace ', que ajuda os usuários a realizar o rastreamento no template Haml, foi adicionada.

Recursos

Quatro princípios estiveram envolvidos no desenvolvimento do Haml.

Marcação amigável

A linguagem de marcação é amigável se aderir aos seguintes recursos:

  • Fácil de entender o idioma
  • Fácil de usar (implementação)

SECO

A linguagem de marcação deve aderir ao princípio Don't repeat yourself ( DRY ). Deveria:

  • Evite repetições desnecessárias
  • Foco no código limpo

Bem recortado

A linguagem de marcação com bom recuo melhora a aparência, facilita a leitura para os leitores e também para determinar onde um determinado elemento começa e termina.

Estrutura clara

Linguagem de marcação com uma estrutura clara ajudará na manutenção do código e compreensão lógica do resultado final. Não está claro se Haml oferece alguma vantagem diferencial a esse respeito.

Exemplos

A marcação Haml é semelhante ao CSS na sintaxe. Por exemplo, Haml tem a mesma .representação de pontos para classes que CSS, tornando mais fácil para os desenvolvedores usarem essa marcação.

"Olá Mundo!"

Haml como ferramenta de linha de comando

Os itens a seguir são equivalentes ao reconhecimento de seletores CSS por HAML :

%p{:class => "sample", :id => "welcome"} Hello, World!
%p.sample#welcome Hello, World!

Eles são processados ​​no seguinte código HTML :

<p class="sample" id="welcome">Hello, World!</p>

Haml como um complemento para Ruby on Rails

Para usar Haml com Ruby , o Ruby Gemfiledeve incluir esta linha:

gem 'haml'

Semelhante ao eRuby , Haml também pode acessar variáveis ​​locais (declaradas no mesmo arquivo no código Ruby). Este exemplo usa um arquivo de controlador Ruby de amostra.

  • Arquivo: app/controllers/messages_controller.rb
    class MessagesController < ApplicationController
      def index
        @message = "Hello, World!"
      end
    end
    
  • Arquivo: app/views/messages/index.html.haml
    #welcome
        %p= @message
    

Isso renderiza para:

<div id="welcome">
    <p>Hello, World!</p>
</div>

Haml como um módulo Ruby

Para usar Haml independente de Rails e ActionView , instale haml gem , inclua-o Gemfilee simplesmente importe [Usage: require 'haml']-o no script Ruby ou invoque o interpretador Ruby com -rubygemsflag.

welcome = Haml::Engine.new("%p Hello, World!")
welcome.render

Saída:

<p>Hello, World!</p>

Haml :: Engine é uma classe Haml.

Exemplo básico

Haml usa recuo de espaço em branco (dois espaços) para aninhamento de tag e escopo. Isso atua como um substituto para os pares de tags de extremidade aberta, tornando-o SECO e mais limpo. O exemplo a seguir compara as sintaxes de Haml e eRuby (Embedded Ruby), junto com a saída HTML.

Haml ERB HTML
%div.category
    %div.recipes
        %h1= recipe.name
        %h3= recipe.category
    %div
        %h4= recipe.description
<div class="category">
    <div class="recipes">
        <h1><%= recipe.name %></h1>
        <h3><%= recipe.category %></h3>
    </div>
    <div>
        <h4><%= recipe.description %></h4>
    </div>
</div>
<div class="category">
    <div class="recipes">
        <h1>Cookie</h1>
        <h3>Desserts</h3>
    </div>
    <div>
        <h4>Made from dough and sugar. Usually circular in shape and has about 400 calories.</h4>
    </div>
</div>


As principais diferenças são:

  • Haml não tem início e fim para cada elemento como eRuby
  • A sintaxe do eRuby se parece muito com HTML e, portanto, é mais semelhante a HTML, enquanto Haml é mais semelhante a CSS .
  • Haml usa recuo para aninhar elementos de tag, enquanto eRuby usa a mesma representação HTML
  • Em Haml, propriedades como class, idpodem ser representadas por ., #respectivamente , em vez de regular classe idpalavras - chave. Haml também usa %para indicar um elemento HTML em vez de <>eRuby.

Exemplo com código Ruby incorporado

Observação: este é um exemplo de visualização simples e pode não refletir a versão atual do idioma.

!!!
%html{ :xmlns => "http://www.w3.org/1999/xhtml", :lang => "en", "xml:lang" => "en"}
  %head
    %title BoBlog
    %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"}
    %link{"rel" => "stylesheet", "href" => "main.css", "type" => "text/css"}
  %body
    #header
      %h1 BoBlog
      %h2 Bob's Blog
    #content
      - @entries.each do |entry|
        .entry
          %h3.title= entry.title
          %p.date= entry.posted.strftime("%A, %B %d, %Y")
          %p.body= entry.body
    #footer
      %p
        All content copyright © Bob

O Haml acima produziria este XHTML :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
  <head>
    <title>BoBlog</title>
    <meta content='text/html; charset=utf-8' http-equiv='Content-Type' />
    <link href="/stylesheets/main.css" media="screen" rel="Stylesheet" type="text/css" />
  </head>
  <body>
    <div id='header'>
      <h1>BoBlog</h1>
      <h2>Bob's Blog</h2>
    </div>
    <div id='content'>
      <div class='entry'>
        <h3 class='title'>Halloween</h3>
        <p class='date'>Tuesday, October 31, 2006</p>
        <p class='body'>
          Happy Halloween, glorious readers! I'm going to a party this evening... I'm very excited.
        </p>
      </div>
      <div class='entry'>
        <h3 class='title'>New Rails Templating Engine</h3>
        <p class='date'>Friday, August 11, 2006</p>
        <p class='body'>
          There's a very cool new Templating Engine out for Ruby on Rails. It's called Haml.
        </p>
      </div>
    </div>
    <div id='footer'>
      <p>
        All content copyright © Bob
      </p>
    </div>
  </body>
</html>

Implementações

A implementação oficial do Haml foi construída para Ruby com plug-ins para Ruby on Rails e Merb , mas a implementação do Ruby também funciona de forma independente. Haml pode ser facilmente usado junto com outras línguas. Abaixo está uma lista de linguagens em que Haml tem implementações:

Veja também

Referências

links externos