Se você está lendo isso, é porque você quer uma maneira elegante de comentar várias linhas no ERB e não está feliz com a sintaxe feia que outros hacks têm.
Configuração
Defina um método vazio em seu script Ruby.
def comment
end
Se você estiver usando Rails, você pode adicionar isso a application_helpers.rb
:
module ApplicationHelper
def comment
end
end
Usar
Agora você pode usar o novo método:
<% comment do %>
<div class="field">
<%= f.label :title %><br>
<%= f.text_field :title %>
</div>
<% end %>
Ou até mesmo ajustá-lo um pouco para maior legibilidade:
<% comment do %>
<div class="field">
<%= f.label :title %><br>
<%= f.text_field :title %>
</div>
<% comment end %>
A coisa boa sobre o último é que você pode facilmente adicionar uma correspondência para isso e obter destaque de sintaxe!
Destaque de sintaxe para texto sublime
Comece localizando a pasta Packages para a instalação do Sublime Text. No OSX, o local padrão é ./Users/xxxxx/Library/Application Support/Sublime Text 3/Packages
Dentro desse local, crie uma nova pasta chamada Rails
e crie um arquivo com o seguinte conteúdo:HTML (Rails).tmLanguage
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>rhtml</string>
<string>erb</string>
<string>html.erb</string>
</array>
<key>foldingStartMarker</key>
<string>(?x)
(<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)\b.*?>
|<!--(?!.*-->)
|\{\s*($|\?>\s*$|//|/\*(.*\*/\s*$|(?!.*?\*/)))
)</string>
<key>foldingStopMarker</key>
<string>(?x)
(</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)>
|^\s*-->
|(^|\s)\}
)</string>
<key>keyEquivalent</key>
<string>^~R</string>
<key>name</key>
<string>HTML (Rails)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string><% +comment do +%></string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.erb</string>
</dict>
</dict>
<key>end</key>
<string><% +comment end +%></string>
<key>name</key>
<string>comment.block.erb</string>
</dict>
<dict>
<key>begin</key>
<string><%+#</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.erb</string>
</dict>
</dict>
<key>end</key>
<string>%></string>
<key>name</key>
<string>comment.block.erb</string>
</dict>
<dict>
<key>begin</key>
<string><%+(?!>)[-=]?</string>
<key>captures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.ruby</string>
</dict>
</dict>
<key>end</key>
<string>-?%></string>
<key>name</key>
<string>source.ruby.rails.embedded.html</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.ruby</string>
</dict>
</dict>
<key>match</key>
<string>(#).*?(?=-?%>)</string>
<key>name</key>
<string>comment.line.number-sign.ruby</string>
</dict>
<dict>
<key>include</key>
<string>source.ruby.rails</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>text.html.basic</string>
</dict>
</array>
<key>scopeName</key>
<string>text.html.ruby</string>
<key>uuid</key>
<string>45D7E1FC-7D0B-4105-A1A2-3D10BB555A5C</string>
</dict>
</plist>
Agora, toda vez que você usa a segunda sintaxe, você obtém uma aparência de comentário. Muito arrumado!
Se você quiser reverter para o estado original, você só precisa remover a pasta Rails e o Sublime Text usará o pacote pristine sem as modificações.
Atalho para Texto Sublime
Mesmo depois de instalar a nova sintaxe, você notará que o atalho para comentários (CMD + /) ainda usará o formato de comentário HTML. Crie outro arquivo dentro do pacote Rails com o seguinte conteúdo:Comments.tmPreferences
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>Comments</string>
<key>scope</key>
<string>text.html.ruby</string>
<key>settings</key>
<dict>
<key>shellVariables</key>
<array>
<dict>
<key>name</key>
<string>TM_COMMENT_START</string>
<key>value</key>
<string><% comment do %> </string>
</dict>
<dict>
<key>name</key>
<string>TM_COMMENT_END</string>
<key>value</key>
<string> <% comment end %></string>
</dict>
</array>
</dict>
<key>uuid</key>
<string>B79BDBCF-D0C9-468E-BE62-744074D7825F</string>
</dict>
</plist>
Por favor, deixe seus comentários ou ideias para melhorar isso e se você achar útil, vote positivamente!
Aproveitar! 🙂
Este hack é inspirado na solução fornecida por Adam Block em http://stackoverflow.com/a/24131080/230371 .