antora/lib/lorem.js (46 lines of code) (raw):

// Licensed to the Apache Software Foundation (ASF) under one or more // contributor license agreements. See the NOTICE file distributed with this // work for additional information regarding copyright ownership. The ASF // licenses this file to you under the Apache License, Version 2.0 // (the "License"); you may not use this file except in compliance with the // License. You may obtain a copy of the License at. // // http://www.apache.org/licenses/LICENSE-2.0 . // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations // under the License. // as per https://asciidoctor-docs.netlify.com/asciidoctor.js/extend/extensions/block-macro-processor/ // NOTE: Below we are using a minimalist implementation to generate lorem ipsum text. // If you need a complete implementation, you can use the following Node package: // var lorem = require('lorem-ipsum') var dictionary = { words: [ 'lorem', 'ipsum', 'dolor', 'sit', 'amet', ], } function getRandomArbitrary (min, max) { return Math.random() * (max - min) + min } function lorem (opts) { var count = opts.count var units = opts.units var words = dictionary.words if (units === 'sentences') { var sentences = [] var sentence = [] for (var i = 0; i < count; i++) { var sentenceLength = getRandomArbitrary(5, 15) for (var j = 0; j < sentenceLength; j++) { // use predictive position for testing purpose var position = j % words.length // var position = Math.floor(Math.random() * words.length); var word = dictionary.words[position] if (j === 0) { // capitalize the first letter word = word.charAt(0).toUpperCase() + word.slice(1) } sentence.push(word) } sentence[sentence.length - 1] += '.' sentences.push(sentence.join(' ')) } return sentences.join(' ') } } module.exports = function (registry) { registry.blockMacro(function () { var self = this self.named('lorem') self.process(function (parent, target, attrs) { var num = parseInt(attrs.num) || 3 //var result = 'yada yada yada'//lorem({ count: size, units: target }) var result = "_" + lorem({ count: num, units: target }) + "_" return self.createBlock(parent, 'paragraph', result) }) }) }