Module: Vydumschik::Lorem
- Defined in:
- lib/vydumschik/lorem.rb
Overview
This module generate lipsum-like russian pseudosentences.
Warning! To avoid using ActiveSupport for multibyte support, or anything similar, I just assume that all russian chars are 2-byte (as in UTF8) and that I always get a russian char when I ask for one.
Constant Summary collapse
- WORD_LIMITS =
Word length
[2, 10]
- SENTENCE_LIMITS =
Sentence length, in words
[5, 10]
- PARA_LIMITS =
Paragraph length, in sentences
[5, 10]
- CONSONANTS =
Russian consonants
%w(б в г д ж з й к л м н п р с т ф х ц ч ш щ)
- VOWELS =
Russian vowels
%w(а е ё и о у ы э ю я)
- CONSONANTS_NORMALIZED =
Consonants, normalized by character frequency
%w(б б б б б б б б б б б б б б б б б б б в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в в г г г г г г г г г г г г г г г г г г г д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д ж ж ж ж ж ж ж ж ж ж ж ж з з з з з з з з з з з з з з з з з з й й й й й й й й й й й к к к к к к к к к к к к к к к к к к к к к к к к к к к к к к к к к к к к л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л л м м м м м м м м м м м м м м м м м м м м м м м м м м м м м м м м н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н н п п п п п п п п п п п п п п п п п п п п п п п п п п р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р р с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т т ф х х х х х х х х ц ц ц ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ш ш ш ш ш ш ш ш ш щ щ щ)
- VOWELS_NORMALIZED =
Vowels, normalized by character frequency
%w(а а а а а а а а а а а а а а а а а а а а а а а а а а а а е е е е е е е е е е е е е е е е е е е е е е е е е е е е е е е и и и и и и и и и и и и и и и и и и и и и и о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о у у у у у у у у у ы ы ы ы ы ы э ю ю я я я я я я я)
Class Method Summary collapse
-
.paragraph ⇒ Object
Returns a random paragraph.
-
.sentence ⇒ Object
Returns a random sentence.
-
.word(previous_word = nil) ⇒ Object
Returns a random word.
Class Method Details
.paragraph ⇒ Object
Returns a random paragraph
65 66 67 68 69 70 71 |
# File 'lib/vydumschik/lorem.rb', line 65 def self.paragraph sentences = [] random_length(PARA_LIMITS).times do sentences << sentence end sentences.join(' ') end |
.sentence ⇒ Object
Returns a random sentence
55 56 57 58 59 60 61 62 |
# File 'lib/vydumschik/lorem.rb', line 55 def self.sentence last_word = nil sentence = [] random_length(SENTENCE_LIMITS).times do sentence << word(last_word) end capitalize_ru(sentence.join(' ')) + '.' end |
.word(previous_word = nil) ⇒ Object
Returns a random word. Passing a previous word affects the first character
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/vydumschik/lorem.rb', line 34 def self.word(previous_word=nil) if previous_word last_char = previous_word[-2,2] if CONSONANTS.include?(last_char) next_char = VOWELS_NORMALIZED else next_char = CONSONANTS_NORMALIZED end else next_char = rand>0.5 ? CONSONANTS_NORMALIZED : VOWELS_NORMALIZED end word = '' random_length(WORD_LIMITS).times do word << next_char[rand next_char.length] next_char = next_char===CONSONANTS_NORMALIZED ? VOWELS_NORMALIZED : CONSONANTS_NORMALIZED end word end |