Action
Lorem Ipsum 50
Generates 50 words of Lorem Ipsum text using Rick Viscomi’s JavaScript Lorem Ipsum Generator (https://gist.github.com/rviscomi/1479649)
Steps
-
script
/** * @fileOverview Generates "Lorem ipsum" style text. * @author rviscomi@gmail.com Rick Viscomi, * tinsley@tinsology.net Mathew Tinsley * @version 1.0 */ /** * Copyright (c) 2009, Mathew Tinsley (tinsley@tinsology.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the organization nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY MATHEW TINSLEY ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /** * @class Jibborish generator. */ var LoremIpsum = function () { }; /** * Average number of words per sentence. * @constant {number} */ LoremIpsum.WORDS_PER_SENTENCE_AVG = 24.460; /** * Standard deviation of the number of words per sentence. * @constant {number} */ LoremIpsum.WORDS_PER_SENTENCE_STD = 5.080; /** * List of possible words. * @constant {Array.string} */ LoremIpsum.WORDS = [ 'lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit', 'curabitur', 'vel', 'hendrerit', 'libero', 'eleifend', 'blandit', 'nunc', 'ornare', 'odio', 'ut', 'orci', 'gravida', 'imperdiet', 'nullam', 'purus', 'lacinia', 'a', 'pretium', 'quis', 'congue', 'praesent', 'sagittis', 'laoreet', 'auctor', 'mauris', 'non', 'velit', 'eros', 'dictum', 'proin', 'accumsan', 'sapien', 'nec', 'massa', 'volutpat', 'venenatis', 'sed', 'eu', 'molestie', 'lacus', 'quisque', 'porttitor', 'ligula', 'dui', 'mollis', 'tempus', 'at', 'magna', 'vestibulum', 'turpis', 'ac', 'diam', 'tincidunt', 'id', 'condimentum', 'enim', 'sodales', 'in', 'hac', 'habitasse', 'platea', 'dictumst', 'aenean', 'neque', 'fusce', 'augue', 'leo', 'eget', 'semper', 'mattis', 'tortor', 'scelerisque', 'nulla', 'interdum', 'tellus', 'malesuada', 'rhoncus', 'porta', 'sem', 'aliquet', 'et', 'nam', 'suspendisse', 'potenti', 'vivamus', 'luctus', 'fringilla', 'erat', 'donec', 'justo', 'vehicula', 'ultricies', 'varius', 'ante', 'primis', 'faucibus', 'ultrices', 'posuere', 'cubilia', 'curae', 'etiam', 'cursus', 'aliquam', 'quam', 'dapibus', 'nisl', 'feugiat', 'egestas', 'class', 'aptent', 'taciti', 'sociosqu', 'ad', 'litora', 'torquent', 'per', 'conubia', 'nostra', 'inceptos', 'himenaeos', 'phasellus', 'nibh', 'pulvinar', 'vitae', 'urna', 'iaculis', 'lobortis', 'nisi', 'viverra', 'arcu', 'morbi', 'pellentesque', 'metus', 'commodo', 'ut', 'facilisis', 'felis', 'tristique', 'ullamcorper', 'placerat', 'aenean', 'convallis', 'sollicitudin', 'integer', 'rutrum', 'duis', 'est', 'etiam', 'bibendum', 'donec', 'pharetra', 'vulputate', 'maecenas', 'mi', 'fermentum', 'consequat', 'suscipit', 'aliquam', 'habitant', 'senectus', 'netus', 'fames', 'quisque', 'euismod', 'curabitur', 'lectus', 'elementum', 'tempor', 'risus', 'cras' ]; /** * Generate "Lorem ipsum" style words. * @param num_words {number} Number of words to generate. * @return {string} "Lorem ipsum..." */ LoremIpsum.prototype.generate = function (num_words) { var words, ii, position, word, current, sentences, sentence_length, sentence; /** * @default 100 */ num_words = num_words || 100; words = [LoremIpsum.WORDS[0], LoremIpsum.WORDS[1]]; num_words -= 2; for (ii = 0; ii < num_words; ii++) { position = Math.floor(Math.random() * LoremIpsum.WORDS.length); word = LoremIpsum.WORDS[position]; if (ii > 0 && words[ii - 1] === word) { ii -= 1; } else { words[ii] = word; } } sentences = []; current = 0; while (num_words > 0) { sentence_length = this.getRandomSentenceLength(); if (num_words - sentence_length < 4) { sentence_length = num_words; } num_words -= sentence_length; sentence = []; for (ii = current; ii < (current + sentence_length); ii++) { sentence.push(words[ii]); } sentence = this.punctuate(sentence); current += sentence_length; sentences.push(sentence.join(' ')); } return sentences.join(' '); }; /** * Insert commas and periods in the given sentence. * @param {Array.string} sentence List of words in the sentence. * @return {Array.string} Sentence with punctuation added. */ LoremIpsum.prototype.punctuate = function (sentence) { var word_length, num_commas, ii, position; word_length = sentence.length; /* End the sentence with a period. */ sentence[word_length - 1] += '.'; if (word_length < 4) { return sentence; } num_commas = this.getRandomCommaCount(word_length); for (ii = 0; ii <= num_commas; ii++) { position = Math.round(ii * word_length / (num_commas + 1)); if (position < (word_length - 1) && position > 0) { /* Add the comma. */ sentence[position] += ','; } } /* Capitalize the first word in the sentence. */ sentence[0] = sentence[0].charAt(0).toUpperCase() + sentence[0].slice(1); return sentence; }; /** * Produces a random number of commas. * @param {number} word_length Number of words in the sentence. * @return {number} Random number of commas */ LoremIpsum.prototype.getRandomCommaCount = function (word_length) { var base, average, standard_deviation; /* Arbitrary. */ base = 6; average = Math.log(word_length) / Math.log(base); standard_deviation = average / base; return Math.round(this.gaussMS(average, standard_deviation)); }; /** * Produces a random sentence length based on the average word length * of an English sentence. * @return {number} Random sentence length */ LoremIpsum.prototype.getRandomSentenceLength = function () { return Math.round( this.gaussMS( LoremIpsum.WORDS_PER_SENTENCE_AVG, LoremIpsum.WORDS_PER_SENTENCE_STD ) ); }; /** * Produces a random number. * @return {number} Random number */ LoremIpsum.prototype.gauss = function () { return (Math.random() * 2 - 1) + (Math.random() * 2 - 1) + (Math.random() * 2 - 1); }; /** * Produces a random number with Gaussian distribution. * @param {number} mean * @param {number} standard_deviation * @return {number} Random number */ LoremIpsum.prototype.gaussMS = function (mean, standard_deviation) { return Math.round(this.gauss() * standard_deviation + mean); };
-
script
/* Instantiate the generator object. */ lipsum = new LoremIpsum(); /* Generate 50 words in "Lorem ipsum..." style. */ text = lipsum.generate(50); if (text!=="") { editor.setSelectedText(text); // editor.setSelectedRange(selRange[0]+text.length,0); editor.focus(); }
Options
-
After Success Default Notification Info Log Level Info
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.