eof-newline.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. var gonzales = require('gonzales-pe');
  2. module.exports = {
  3. name: 'eof-newline',
  4. syntax: ['css', 'less', 'sass', 'scss'],
  5. accepts: { boolean: [true, false] },
  6. /**
  7. * Processes tree node.
  8. * @param {node} node
  9. */
  10. process: function(node) {
  11. if (!node.is('stylesheet')) return;
  12. var lastChild = node.last();
  13. if (!lastChild.is('space')) {
  14. lastChild = gonzales.createNode({ type: 'space', content: '' });
  15. node.content.push(lastChild);
  16. }
  17. lastChild.content = lastChild.content.replace(/\n$/, '');
  18. if (this.getValue('eof-newline')) lastChild.content += '\n';
  19. },
  20. /**
  21. * Detects the value of an option at the tree node.
  22. *
  23. * @param {node} node
  24. */
  25. detect: function(node) {
  26. if (!node.is('stylesheet')) return;
  27. var lastChild = node.last();
  28. if (lastChild.is('space') && lastChild.content.indexOf('\n') !== -1) {
  29. return true;
  30. } else {
  31. return false;
  32. }
  33. }
  34. };