রেয়েলগুলি ডিফল্টরূপে stdlib এর ERB ব্যবহার করে না , এটি ইরুবিস ব্যবহার করে । উত্স: এই দেবের মন্তব্য , অ্যাকশনভিউর রত্নপেক , মার্জ করার অনুরোধটি গ্রহণ করার সময় আমি করেছি ।
সেখানে হয় কিভাবে হাইফেন অপারেটর তাদের মধ্যে আচরণ পার্থক্য, বিশেষ করে %-
এবং -%
হবে।
ডকুমেন্টেশন অপ্রতুল, রুবির ERB ফর্ম্যাট "অফিসিয়ালি" সংজ্ঞায়িত কোথায়? সুতরাং এরপরে যা যা ঘটছে তা অনুভবযোগ্য সিদ্ধান্ত।
সমস্ত পরীক্ষা অনুমান:
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
কি %-
করে:
ইআরবি: ট্যাগের আগে এবং পূর্ববর্তী নিউলাইনগুলির পরে শ্বেতস্পেসগুলি সরিয়ে ফেলুন, তবে কেবল সেখানে কেবল শ্বেতস্থান থাকলে।
ইরুবিস: অকেজো কারণ এটি (ব্যতীত ) <%- %>
একই , এবং <% %>
এটি =
ব্যবহার করা যায় না =
যা কেবলমাত্র কার্যকর যেখানে কার্যকর -%
হতে পারে is সুতরাং এটি কখনও ব্যবহার করবেন না।
উদাহরণ:
# 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
কি %-
এবং -%
একসাথে করবেন
পৃথকভাবে উভয় প্রভাবের সঠিক সংমিশ্রণ।