रेल डिफ़ॉल्ट रूप से stdlib के ERB का उपयोग नहीं करता है , यह एरबिस का उपयोग करता है । सूत्रों का कहना है: इस देव की टिप्पणी , ActionView के रत्न , इस अनुरोध को स्वीकार करते हुए मैंने इसे लिखा ।
वहाँ रहे हैं कैसे हाइफन ऑपरेटरों पर उन दोनों के बीच व्यवहार मतभेद, विशेष रूप से %-
और -%
काम करते हैं।
प्रलेखन दुर्लभ है, रूबी का ईआरबी प्रारूप "आधिकारिक तौर पर" कहां परिभाषित किया गया है? तो क्या निम्नलिखित अनुभवजन्य निष्कर्ष हैं।
सभी परीक्षण मान लेते हैं:
require 'erb'
require 'erubis'
जब आप उपयोग कर सकते हैं -
- ईआरबी: आपको इसका उपयोग
-
करने के trim_mode
विकल्प के पास होना चाहिए ERB.new
।
- erubis: डिफ़ॉल्ट रूप से सक्षम।
उदाहरण:
begin ERB.new("<%= 'a' -%>\nb").result; rescue SyntaxError ; else raise; end
ERB.new("<%= 'a' -%>\nb" , nil, '-') .result == 'ab' or raise
Erubis::Eruby.new("<%= 'a' -%> \n b").result == 'a b' or raise
क्या -%
करता है:
उदाहरण:
# Remove
ERB.new("a \nb <% 0 -%>\n c", nil, '-').result == "a \nb c" or raise
# Don't do anything: not followed by newline, but by space:
ERB.new("a\n<% 0 -%> \nc", nil, '-').result == "a\nb \nc" or raise
# Remove the current line because only whitesapaces:
Erubis::Eruby.new(" <% 0 %> \nb").result == 'b' or raise
# Same as above, thus useless because longer.
Erubis::Eruby.new(" <% 0 -%> \nb").result == 'b' or raise
# Don't do anything because line not empty.
Erubis::Eruby.new("a <% 0 %> \nb").result == "a \nb" or raise
Erubis::Eruby.new(" <% 0 %> a\nb").result == " a\nb" or raise
Erubis::Eruby.new(" <% 0 -%> a\nb").result == " a\nb" or raise
# Don't remove the current line because of `=`:
Erubis::Eruby.new(" <%= 0 %> \nb").result == " 0 \nb" or raise
# Remove the current line even with `=`:
Erubis::Eruby.new(" <%= 0 -%> \nb").result == " 0b" or raise
# Remove forward only because of `-` and non space before:
Erubis::Eruby.new("a <%= 0 -%> \nb").result == "a 0b" or raise
# Don't do anything because non-whitespace forward:
Erubis::Eruby.new(" <%= 0 -%> a\nb").result == " 0 a\nb" or raise
क्या %-
करता है:
ईआरबी: टैग से पहले और पिछली नई लाइनों के बाद व्हाट्सएप को हटा दें, लेकिन केवल पहले व्हाट्सएप होने पर ही।
erubis: बेकार क्योंकि (बिना ) <%- %>
के समान है , और इसका उपयोग नहीं किया जा सकता है जिसके साथ एकमात्र मामला है जहां उपयोगी हो सकता है। इसलिए कभी भी इसका उपयोग न करें।<% %>
=
=
-%
उदाहरण:
# Remove
ERB.new("a \n <%- 0 %> b\n c", nil, '-').result == "a \n b\n c" or raise
# b is not whitespace: do nothing:
ERB.new("a \nb <%- 0 %> c\n d", nil, '-').result == "a \nb c\n d" or raise
क्या %-
और -%
एक साथ क्या करते हैं
दोनों प्रभावों का अलग-अलग संयोजन।