vegan-ipsum
Version:
Generates passages of vegan-themed placeholder text suitable for use in web pages, graphics, and more. Works in the browser, NodeJS, and React Native.
131 lines (124 loc) • 17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _formats = require("../constants/formats");
var _lineEndings = require("../constants/lineEndings");
var _util = require("../util");
var _generator = _interopRequireDefault(require("./generator"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
/**
* A class for generating vegan ipsum text in various formats and units.
*/
var VeganIpsum = /*#__PURE__*/function () {
/**
* Creates an instance of the `VeganIpsum` class.
*
* @param {IGeneratorOptions} options - Configuration options for the text generator.
* @param {LoremFormat} format - The format of the generated text (e.g., plain or HTML).
* @param {string} [suffix] - A custom line ending or suffix for the generated text.
* @throws {Error} If the provided format is invalid.
*/
function VeganIpsum() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _formats.FORMAT_PLAIN;
var suffix = arguments.length > 2 ? arguments[2] : undefined;
_classCallCheck(this, VeganIpsum);
this.format = format;
this.suffix = suffix;
_defineProperty(this, "generator", void 0);
if (_formats.FORMATS.indexOf(format.toLowerCase()) === -1) {
throw new Error("".concat(format, " is an invalid format. Please use ").concat(_formats.FORMATS.join(" or "), "."));
}
this.generator = new _generator["default"](options);
}
/**
* Determines the appropriate line ending based on the environment and suffix.
*
* @returns {string} The line ending to use.
*/
return _createClass(VeganIpsum, [{
key: "getLineEnding",
value: function getLineEnding() {
if (this.suffix) {
return this.suffix;
}
if (!(0, _util.isReactNative)() && (0, _util.isNode)() && (0, _util.isWindows)()) {
return _lineEndings.LINE_ENDINGS.WIN32;
}
return _lineEndings.LINE_ENDINGS.POSIX;
}
/**
* Formats a single string based on the specified format (e.g., wraps in HTML tags if needed).
*
* @param {string} str - The string to format.
* @returns {string} The formatted string.
*/
}, {
key: "formatString",
value: function formatString(str) {
if (this.format === _formats.FORMAT_HTML) {
return "<p>".concat(str, "</p>");
}
return str;
}
/**
* Formats an array of strings based on the specified format.
*
* @param {string[]} strings - The array of strings to format.
* @returns {string[]} The array of formatted strings.
*/
}, {
key: "formatStrings",
value: function formatStrings(strings) {
var _this = this;
return strings.map(function (str) {
return _this.formatString(str);
});
}
/**
* Generates a specified number of words and formats them.
*
* @param {number} [num] - The number of words to generate. If not provided, a random number is used.
* @returns {string} A formatted string of generated words.
*/
}, {
key: "generateWords",
value: function generateWords(num) {
return this.formatString(this.generator.generateRandomWords(num));
}
/**
* Generates a specified number of sentences and formats them.
*
* @param {number} [num] - The number of sentences to generate. If not provided, a random number is used.
* @returns {string} A formatted string of generated sentences.
*/
}, {
key: "generateSentences",
value: function generateSentences(num) {
return this.formatString(this.generator.generateRandomParagraph(num));
}
/**
* Generates a specified number of paragraphs and formats them.
*
* @param {number} num - The number of paragraphs to generate.
* @returns {string} A formatted string of generated paragraphs.
*/
}, {
key: "generateParagraphs",
value: function generateParagraphs(num) {
var makeString = this.generator.generateRandomParagraph.bind(this.generator);
return this.formatStrings((0, _util.makeArrayOfStrings)(num, makeString)).join(this.getLineEnding());
}
}]);
}();
var _default = exports["default"] = VeganIpsum;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZm9ybWF0cyIsInJlcXVpcmUiLCJfbGluZUVuZGluZ3MiLCJfdXRpbCIsIl9nZW5lcmF0b3IiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZSIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfY2xhc3NDYWxsQ2hlY2siLCJhIiwibiIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiciIsInQiLCJsZW5ndGgiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX2RlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiU3RyaW5nIiwiTnVtYmVyIiwiVmVnYW5JcHN1bSIsIm9wdGlvbnMiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJmb3JtYXQiLCJGT1JNQVRfUExBSU4iLCJzdWZmaXgiLCJGT1JNQVRTIiwiaW5kZXhPZiIsInRvTG93ZXJDYXNlIiwiRXJyb3IiLCJjb25jYXQiLCJqb2luIiwiZ2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2V0TGluZUVuZGluZyIsImlzUmVhY3ROYXRpdmUiLCJpc05vZGUiLCJpc1dpbmRvd3MiLCJMSU5FX0VORElOR1MiLCJXSU4zMiIsIlBPU0lYIiwiZm9ybWF0U3RyaW5nIiwic3RyIiwiRk9STUFUX0hUTUwiLCJmb3JtYXRTdHJpbmdzIiwic3RyaW5ncyIsIl90aGlzIiwibWFwIiwiZ2VuZXJhdGVXb3JkcyIsIm51bSIsImdlbmVyYXRlUmFuZG9tV29yZHMiLCJnZW5lcmF0ZVNlbnRlbmNlcyIsImdlbmVyYXRlUmFuZG9tUGFyYWdyYXBoIiwiZ2VuZXJhdGVQYXJhZ3JhcGhzIiwibWFrZVN0cmluZyIsImJpbmQiLCJtYWtlQXJyYXlPZlN0cmluZ3MiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL1ZlZ2FuSXBzdW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRk9STUFUX0hUTUwsIEZPUk1BVF9QTEFJTiwgRk9STUFUUywgTG9yZW1Gb3JtYXQgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2Zvcm1hdHNcIjtcbmltcG9ydCB7IExJTkVfRU5ESU5HUyB9IGZyb20gXCIuLi9jb25zdGFudHMvbGluZUVuZGluZ3NcIjtcbmltcG9ydCB7IGlzTm9kZSwgaXNSZWFjdE5hdGl2ZSwgaXNXaW5kb3dzLCBtYWtlQXJyYXlPZlN0cmluZ3MgfSBmcm9tIFwiLi4vdXRpbFwiO1xuXG5pbXBvcnQgR2VuZXJhdG9yLCB7IElHZW5lcmF0b3JPcHRpb25zIH0gZnJvbSBcIi4vZ2VuZXJhdG9yXCI7XG5cbi8qKlxuICogQSBjbGFzcyBmb3IgZ2VuZXJhdGluZyB2ZWdhbiBpcHN1bSB0ZXh0IGluIHZhcmlvdXMgZm9ybWF0cyBhbmQgdW5pdHMuXG4gKi9cbmNsYXNzIFZlZ2FuSXBzdW0ge1xuICBwdWJsaWMgZ2VuZXJhdG9yOiBHZW5lcmF0b3I7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGBWZWdhbklwc3VtYCBjbGFzcy5cbiAgICpcbiAgICogQHBhcmFtIHtJR2VuZXJhdG9yT3B0aW9uc30gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRleHQgZ2VuZXJhdG9yLlxuICAgKiBAcGFyYW0ge0xvcmVtRm9ybWF0fSBmb3JtYXQgLSBUaGUgZm9ybWF0IG9mIHRoZSBnZW5lcmF0ZWQgdGV4dCAoZS5nLiwgcGxhaW4gb3IgSFRNTCkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbc3VmZml4XSAtIEEgY3VzdG9tIGxpbmUgZW5kaW5nIG9yIHN1ZmZpeCBmb3IgdGhlIGdlbmVyYXRlZCB0ZXh0LlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHByb3ZpZGVkIGZvcm1hdCBpcyBpbnZhbGlkLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgb3B0aW9uczogSUdlbmVyYXRvck9wdGlvbnMgPSB7fSxcbiAgICBwdWJsaWMgZm9ybWF0OiBMb3JlbUZvcm1hdCA9IEZPUk1BVF9QTEFJTixcbiAgICBwdWJsaWMgc3VmZml4Pzogc3RyaW5nXG4gICkge1xuICAgIGlmIChGT1JNQVRTLmluZGV4T2YoZm9ybWF0LnRvTG93ZXJDYXNlKCkpID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2Zvcm1hdH0gaXMgYW4gaW52YWxpZCBmb3JtYXQuIFBsZWFzZSB1c2UgJHtGT1JNQVRTLmpvaW4oXCIgb3IgXCIpfS5gKTtcbiAgICB9XG4gICAgdGhpcy5nZW5lcmF0b3IgPSBuZXcgR2VuZXJhdG9yKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIGFwcHJvcHJpYXRlIGxpbmUgZW5kaW5nIGJhc2VkIG9uIHRoZSBlbnZpcm9ubWVudCBhbmQgc3VmZml4LlxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbGluZSBlbmRpbmcgdG8gdXNlLlxuICAgKi9cbiAgcHVibGljIGdldExpbmVFbmRpbmcoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zdWZmaXgpIHtcbiAgICAgIHJldHVybiB0aGlzLnN1ZmZpeDtcbiAgICB9XG5cbiAgICBpZiAoIWlzUmVhY3ROYXRpdmUoKSAmJiBpc05vZGUoKSAmJiBpc1dpbmRvd3MoKSkge1xuICAgICAgcmV0dXJuIExJTkVfRU5ESU5HUy5XSU4zMjtcbiAgICB9XG5cbiAgICByZXR1cm4gTElORV9FTkRJTkdTLlBPU0lYO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdHMgYSBzaW5nbGUgc3RyaW5nIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgZm9ybWF0IChlLmcuLCB3cmFwcyBpbiBIVE1MIHRhZ3MgaWYgbmVlZGVkKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIFRoZSBzdHJpbmcgdG8gZm9ybWF0LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmZvcm1hdCA9PT0gRk9STUFUX0hUTUwpIHtcbiAgICAgIHJldHVybiBgPHA+JHtzdHJ9PC9wPmA7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0cyBhbiBhcnJheSBvZiBzdHJpbmdzIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgZm9ybWF0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBzdHJpbmdzIC0gVGhlIGFycmF5IG9mIHN0cmluZ3MgdG8gZm9ybWF0LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nW119IFRoZSBhcnJheSBvZiBmb3JtYXR0ZWQgc3RyaW5ncy5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRTdHJpbmdzKHN0cmluZ3M6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBzdHJpbmdzLm1hcCgoc3RyKSA9PiB0aGlzLmZvcm1hdFN0cmluZyhzdHIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIHdvcmRzIGFuZCBmb3JtYXRzIHRoZW0uXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbnVtXSAtIFRoZSBudW1iZXIgb2Ygd29yZHMgdG8gZ2VuZXJhdGUuIElmIG5vdCBwcm92aWRlZCwgYSByYW5kb20gbnVtYmVyIGlzIHVzZWQuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IEEgZm9ybWF0dGVkIHN0cmluZyBvZiBnZW5lcmF0ZWQgd29yZHMuXG4gICAqL1xuICBwdWJsaWMgZ2VuZXJhdGVXb3JkcyhudW0/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdFN0cmluZyh0aGlzLmdlbmVyYXRvci5nZW5lcmF0ZVJhbmRvbVdvcmRzKG51bSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHNwZWNpZmllZCBudW1iZXIgb2Ygc2VudGVuY2VzIGFuZCBmb3JtYXRzIHRoZW0uXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbnVtXSAtIFRoZSBudW1iZXIgb2Ygc2VudGVuY2VzIHRvIGdlbmVyYXRlLiBJZiBub3QgcHJvdmlkZWQsIGEgcmFuZG9tIG51bWJlciBpcyB1c2VkLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBBIGZvcm1hdHRlZCBzdHJpbmcgb2YgZ2VuZXJhdGVkIHNlbnRlbmNlcy5cbiAgICovXG4gIHB1YmxpYyBnZW5lcmF0ZVNlbnRlbmNlcyhudW0/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdFN0cmluZyh0aGlzLmdlbmVyYXRvci5nZW5lcmF0ZVJhbmRvbVBhcmFncmFwaChudW0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIHBhcmFncmFwaHMgYW5kIGZvcm1hdHMgdGhlbS5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bSAtIFRoZSBudW1iZXIgb2YgcGFyYWdyYXBocyB0byBnZW5lcmF0ZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gQSBmb3JtYXR0ZWQgc3RyaW5nIG9mIGdlbmVyYXRlZCBwYXJhZ3JhcGhzLlxuICAgKi9cbiAgcHVibGljIGdlbmVyYXRlUGFyYWdyYXBocyhudW06IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbWFrZVN0cmluZyA9IHRoaXMuZ2VuZXJhdG9yLmdlbmVyYXRlUmFuZG9tUGFyYWdyYXBoLmJpbmQodGhpcy5nZW5lcmF0b3IpO1xuICAgIHJldHVybiB0aGlzLmZvcm1hdFN0cmluZ3MobWFrZUFycmF5T2ZTdHJpbmdzKG51bSwgbWFrZVN0cmluZykpLmpvaW4odGhpcy5nZXRMaW5lRW5kaW5nKCkpO1xuICB9XG59XG5c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