plasper 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/plasper.rb +67 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c9dab30a21d9405053621776dd381363c6a8b6a4
4
+ data.tar.gz: 2b8a981920244fbab33bca4a49354b7229a3309a
5
+ SHA512:
6
+ metadata.gz: 9eb119cd0aac2aa3983e8c2c1a9f7ced054bc15649f680971303a5f3ff5b3a4bde1613d84f59be1043df65d892bf183b088e5231b349ddbe904ff9fe5a6b8be0
7
+ data.tar.gz: b2f4c0f2c35b869a75109fdd944d01fdd592003dd83ba42fd9d974c81cbe822d2eb2b1707940b5248ab3f41a304db597a0d7e6a1fae37eb46cf5b0ce20d41fc7
data/lib/plasper.rb ADDED
@@ -0,0 +1,67 @@
1
+ class Plasper
2
+ attr_accessor :word_range, :sentence_range, :passage_range, :vowels, :consonants
3
+
4
+ def initialize
5
+ @word_range = { 1 => 1, 2 => 2, 3 => 3, 4 => 5, 5 => 5, 6 => 6, 7 => 4, 8 => 2, 9 => 1 }
6
+ @sentence_range = { 1 => 1, 2 => 1, 3 => 2, 4 => 2, 5 => 3, 6 => 4, 7 => 5, 8 => 4, 9 => 2 }
7
+ @passage_range = { 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 3, 6 => 2, 7 => 1, 8 => 1, 9 => 1 }
8
+ @vowels = { e: 1, u: 1, i: 1, o: 1, a: 1 }
9
+ @consonants = {
10
+ q: 1, w: 1, r: 2, t: 2, y: 2, p: 2, s: 3, d: 3, f: 4, g: 3,
11
+ h: 3, j: 3, k: 3, l: 2, z: 1, x: 1, c: 2, v: 2, b: 2, n: 2, m: 2
12
+ }
13
+ end
14
+
15
+ def word
16
+ word_length = weighted_select(@word_range).to_i
17
+ word, length = '', 0
18
+ while length < word_length
19
+ letter = rand(100) < 40 ? consonant : vowel
20
+ word += letter
21
+ length += 1
22
+ end
23
+
24
+ word
25
+ end
26
+
27
+ def sentence
28
+ sentence_length = weighted_select(@sentence_range).to_i
29
+ sentence, length = [], 0
30
+ while length < sentence_length
31
+ sentence << word
32
+ length += 1
33
+ end
34
+
35
+ sentence.join(' ').capitalize + '.'
36
+ end
37
+
38
+ def passage
39
+ passage_length = weighted_select(@passage_range).to_i
40
+ passage, length = [], 0
41
+ while length < passage_length
42
+ passage << sentence
43
+ length += 1
44
+ end
45
+
46
+ passage.join(' ')
47
+ end
48
+
49
+ def vowel
50
+ weighted_select @vowels
51
+ end
52
+
53
+ def consonant
54
+ weighted_select @consonants
55
+ end
56
+
57
+ private
58
+
59
+ def weighted_select(rules)
60
+ buffer = []
61
+ rules.each do |item, weight|
62
+ weight.times { buffer << item }
63
+ end
64
+
65
+ buffer.sample.to_s
66
+ end
67
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: plasper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Maxim Khan-Magomedov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-28 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Simple abstract texts generator
14
+ email: maxim.km@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/plasper.rb
20
+ homepage: https://github.com/ozgg/plasper
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.0.3
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Plasper
44
+ test_files: []