Как удалить разрывы строк, которые создают шаблоны lodash? - PullRequest
0 голосов
/ 15 января 2019

Я рендеринг HTML из шаблонов lodash (с помощью веб-пакета), но шаблоны lodash создают новые разрывы строк. Украшение HTML не поможет, поскольку эти строки не являются «ошибками».

Что я использую:

<!-- Theme
============================================= -->
<%if (theme == "main") { %>
<link rel="stylesheet" href="css/theme.css" />
<% } %>

Результат. Новые переводы строк выше и ниже HTML <link>

<!-- Theme
============================================= -->

<link rel="stylesheet" href="css/theme.css" />


Вот как я хочу это без каких-либо новых разрывов строк выше и ниже:

<!-- Theme
============================================= -->
<link rel="stylesheet" href="css/theme.css" />

Есть хак, чтобы сделать все это в одной строке, как это, но это будет ужасно с длинным кодом.

<!-- Theme
============================================= -->
<%if (theme == "main") { %><link rel="stylesheet" href="css/theme.css" /><% } %>

1 Ответ

0 голосов
/ 15 января 2019

Вы можете использовать _.trim() для удаления \n из начала и конца результата и _.replace() с RegExp для преобразования нескольких последовательных \n в один:

const str = `<!-- Theme
============================================= -->
<%if (theme == "main") { %>
<link rel="stylesheet" href="css/theme.css" />
<% } %>`;

const compiled = _.template(str);

const fn = _.flow([
  compiled,
  str => _.trim(str, '\n'),
  str => _.replace(str, /(\n)\1+/, '$1'),
]);

const result = fn({ 'theme': 'main' });

console.log(result);
.as-console-wrapper {
  top: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
...