UNPKG

popstar-file-reader

Version:

A package that allows using directories filled with markdown files as a CMS, an API, or other purposes. Popstar parses through the markdown files in a format and returns it in an array.

97 lines (80 loc) 3.08 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } require('core-js/shim'); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var parser = (function () { function parser(options) { _classCallCheck(this, parser); this.globalOptions = { split: /-{3,}(\r\n|\r|\n)/g, varSplit: /^(\w+)(\[\])?:/, arraySplit: /\[\]/ }; if (options) { _lodash2['default'].extend(this.globalOptions, options); } } _createClass(parser, [{ key: 'options', value: function options(_options) { if (_options) { _lodash2['default'].extend(this.globalOptions, _options); return this; } else { return this.globalOptions; } } }, { key: 'parseFile', value: function parseFile(fileString) { var parts = fileString.split(this.globalOptions.split); var data = {}; var self = this; _lodash2['default'].each(parts, function (part) { var parsed = self.parseVariable(part); if (parsed !== false) { if (parsed.array == true) { if (!_lodash2['default'].isArray(data[parsed.name])) { data[parsed.name] = []; } data[parsed.name].push(parsed.content); } else { data[parsed.name] = parsed.content; } } }); return data; } }, { key: 'parseVariable', value: function parseVariable(varString) { var parsedString = {}; var name = varString.match(this.globalOptions.varSplit); if (_lodash2['default'].isEmpty(name)) { return false; } else { parsedString.array = this.arrayCheck(name[0]); parsedString.name = name[0].slice(0, parsedString.array ? -3 : -1).trim(); parsedString.content = varString.replace(this.globalOptions.varSplit, '').trim(); return parsedString; } } }, { key: 'arrayCheck', value: function arrayCheck(varString) { if (!_lodash2['default'].isEmpty(varString.match(this.globalOptions.arraySplit))) { return true; } return false; } }]); return parser; })(); exports['default'] = parser; module.exports = exports['default'];