multi-ini-class.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. 'use strict';
  2. const fs = require('fs');
  3. const _ = require('lodash');
  4. const Parser = require('./parser');
  5. const Serializer = require('./serializer');
  6. const Constants = require('./constants');
  7. const defaults = {
  8. encoding: 'utf8',
  9. line_breaks: 'unix',
  10. };
  11. class MultiIni {
  12. constructor(options = {}) {
  13. this.options = Object.assign({}, defaults, options);
  14. this.parser = new Parser(this.options);
  15. this.serializer = new Serializer(this.options);
  16. }
  17. read(filename) {
  18. if (!filename) {
  19. throw new Error('Missing filename.');
  20. }
  21. const lines = this.fetchLines(filename);
  22. return this.parser.parse(lines);
  23. }
  24. fetchLines(filename) {
  25. const content = fs.readFileSync(filename, this.options);
  26. return content.split(Constants.line_breaks[this.options.line_breaks]);
  27. }
  28. write(filename, content = {}) {
  29. fs.writeFileSync(filename, this.serializer.serialize(content), this.options);
  30. return ;
  31. }
  32. }
  33. module.exports = MultiIni;