12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- module.exports = (function() {
- /**
- * Trim trailing spaces on each line.
- * @private
- * @param {String} string Spaceful string
- * @returns {String}
- */
- function trim(string) {
- return string.replace(/[ \t]+\n/g, '\n');
- }
- return {
- name: 'strip-spaces',
- syntax: ['css', 'less', 'sass', 'scss'],
- accepts: { boolean: [true] },
- /**
- * Processes tree node.
- * @param {node} node
- */
- process: function(node) {
- if (node.is('space')) {
- node.content = trim(node.content);
- } else if (node.is('stylesheet')) {
- var lastChild = node.last();
- if (lastChild.is('space')) {
- lastChild.content = trim(lastChild.content)
- .replace(/[ \t]+$/, '')
- .replace(/[\n]+/g, '\n');
- }
- }
- },
- detectDefault: true,
- /**
- * Detects the value of an option at the tree node.
- * This option is treated as `true` by default, but any trailing space would invalidate it.
- *
- * @param {node} node
- */
- detect: function(node) {
- if (node.is('space') &&
- node.content.match(/[ \t]\n/)) {
- return false;
- } else if (node.is('stylesheet')) {
- var lastChild = node.last();
- if (lastChild.is('space') &&
- lastChild.content !== '\n' &&
- lastChild.content.match(/^[ \n\t]+$/)) {
- return false;
- }
- }
- }
- };
- })();
|