Мені погано писати окрему відповідь лише для розширення відповіді на @ NateFerrero , але я також не вважаю, що редагування його відповіді також підходить, тому, будь ласка, зверніться до @NateFerrero, якщо ця відповідь вам була корисною.
tl; dr - для тих, хто бажає використовувати блокові коментарі у своєму гередоку ...
В основному мені потрібні були гередоки Javascript для зберігання блоку CSS, наприклад
var css = heredoc(function() {/*
/**
* Nuke rounded corners.
*/
body div {
border-top-left-radius: 0 !important;
border-top-right-radius: 0 !important;
border-bottom-right-radius: 0 !important;
border-bottom-left-radius: 0 !important;
}
*/});
Як ви можете бачити, мені подобається коментувати свій CSS, і, на жаль (як натякає виділення синтаксису) перший */
закінчується загальним коментарем, порушуючи гередок.
Для цієї конкретної мети (CSS) було додати моє вирішення
.replace(/(\/\*[\s\S]*?\*) \//g, '$1/')
до ланцюга всередині @ NateFerrero's heredoc
; у повному вигляді:
function heredoc (f) {
return f.toString().match(/\/\*\s*([\s\S]*?)\s*\*\//m)[1].replace(/(\/\*[\s\S]*?\*) \//g, '$1/');
};
і використовувати його, додавши пробіл між коментарями блоку *
та /
для внутрішнього коментаря, наприклад:
var css = heredoc(function() {/*
/**
* Nuke rounded corners.
* /
body div {
border-top-left-radius: 0 !important;
border-top-right-radius: 0 !important;
border-bottom-right-radius: 0 !important;
border-bottom-left-radius: 0 !important;
}
*/});
replace
Просто знаходить /* ... * /
і видаляє простір , щоб зробити /* ... */
, тим самим зберігаючи Heredoc до запитання.
Звичайно, ви можете повністю видалити коментарі, використовуючи
.replace(/\/\*[\s\S]*?\* \//g, '')
Ви також можете підтримати //
коментарі, якщо ви додасте їх до ланцюжка:
.replace(/^\s*\/\/.*$/mg, '')
Крім того, ви можете зробити щось інше, ніж єдиний пробіл між *
і /
, як -
:
/**
* Nuke rounded corners.
*-/
якщо ви просто оновите регулярний вираз:
.replace(/(\/\*[\s\S]*?\*)-\//g, '$1/')
^
А може, ви хочете довільну кількість пробілів замість одного пробілу?
.replace(/(\/\*[\s\S]*?\*)\s+\//g, '$1/')
^^^