ipsum-core 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +7 -0
- data/Gemfile +3 -0
- data/README.rdoc +24 -0
- data/Rakefile +24 -0
- data/dictionaries/latin.txt +81191 -0
- data/ipsum-core.gemspec +22 -0
- data/lib/ipsum-core.rb +80 -0
- data/lib/ipsum-core/version.rb +5 -0
- metadata +103 -0
data/ipsum-core.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "ipsum-core/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "ipsum-core"
|
7
|
+
s.version = Ipsum::Core::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Clive Crous"]
|
10
|
+
s.email = ["clive@crous.co.za"]
|
11
|
+
s.homepage = "http://www.darkarts.co.za/ipsum"
|
12
|
+
s.summary = %q{This is the core engine of the ipsum gem, install that instead}
|
13
|
+
s.description = %q{This is the core engine of the ipsum gem, install that instead}
|
14
|
+
|
15
|
+
s.add_development_dependency "bundler", ">= 1.0.0"
|
16
|
+
s.add_development_dependency "rake", ">= 0.8.7"
|
17
|
+
|
18
|
+
s.files = `git ls-files`.split("\n")
|
19
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
20
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
end
|
data/lib/ipsum-core.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# :main: README.rdoc
|
3
|
+
# :title: Ipsum Documentation
|
4
|
+
|
5
|
+
require 'ipsum-core/version'
|
6
|
+
|
7
|
+
class Ipsum # :nodoc: all
|
8
|
+
|
9
|
+
SEQUENCE_SIZE = 3
|
10
|
+
|
11
|
+
@dictionaries = {}
|
12
|
+
|
13
|
+
def self.add_dictionary( language, dictionary )
|
14
|
+
@default_language ||= language
|
15
|
+
@dictionaries[ language.to_sym ] = dictionary
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.default_language
|
19
|
+
@default_language ||= :latin
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.default_language=( language )
|
23
|
+
@default_language = language
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.dictionary( language = self.default_language )
|
27
|
+
begin
|
28
|
+
require "ipsum-#{language}" unless @dictionaries[ language ]
|
29
|
+
rescue LoadError
|
30
|
+
raise "Unable to find language \"#{language}\". Try: gem install ipsum-#{language}"
|
31
|
+
end
|
32
|
+
@dictionaries[ language ]
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.letter_following( sequence, position, language = self.default_language )
|
36
|
+
dict = dictionary( language )
|
37
|
+
sequence_statistics = dictionary( language )[ sequence ][ position ]
|
38
|
+
if sequence_statistics
|
39
|
+
letters = ''
|
40
|
+
sequence_statistics.each_pair do |character,amount|
|
41
|
+
letters << character*amount
|
42
|
+
end
|
43
|
+
letters[rand(letters.size)]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.word( language = self.default_language )
|
48
|
+
letter = nil
|
49
|
+
word = ''
|
50
|
+
until letter == "\n"
|
51
|
+
sequence = ''
|
52
|
+
SEQUENCE_SIZE.times do |enum|
|
53
|
+
sequence << word[-(SEQUENCE_SIZE-enum)] if word[-(SEQUENCE_SIZE-enum)]
|
54
|
+
end
|
55
|
+
letter = letter_following( sequence, word.size, language )
|
56
|
+
word += letter
|
57
|
+
end
|
58
|
+
word.strip
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.sentence( words = rand(5) + 3, language = self.default_language )
|
62
|
+
( [ nil ] * words ).map{|n|self.word( language )}.join(' ').capitalize + '.'
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.sentences( amount = rand(5) + 3, language = self.default_language )
|
66
|
+
( [ nil ] * amount ).map{|n|self.sentence( rand(5) + 3, language )}.join(' ')
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
class Fixnum
|
72
|
+
|
73
|
+
# Generate filler text for this amount of sentences. For example:
|
74
|
+
# 12.sentences
|
75
|
+
# 5.sentences
|
76
|
+
def sentences( language = Ipsum.default_language )
|
77
|
+
Ipsum.sentences( self, language )
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ipsum-core
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 2
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
version: 2.0.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Clive Crous
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-03-16 00:00:00 +02:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: bundler
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 0
|
30
|
+
- 0
|
31
|
+
version: 1.0.0
|
32
|
+
type: :development
|
33
|
+
prerelease: false
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rake
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
segments:
|
43
|
+
- 0
|
44
|
+
- 8
|
45
|
+
- 7
|
46
|
+
version: 0.8.7
|
47
|
+
type: :development
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: *id002
|
50
|
+
description: This is the core engine of the ipsum gem, install that instead
|
51
|
+
email:
|
52
|
+
- clive@crous.co.za
|
53
|
+
executables: []
|
54
|
+
|
55
|
+
extensions: []
|
56
|
+
|
57
|
+
extra_rdoc_files: []
|
58
|
+
|
59
|
+
files:
|
60
|
+
- .gitignore
|
61
|
+
- Gemfile
|
62
|
+
- README.rdoc
|
63
|
+
- Rakefile
|
64
|
+
- dictionaries/latin.txt
|
65
|
+
- ipsum-core.gemspec
|
66
|
+
- lib/ipsum-core.rb
|
67
|
+
- lib/ipsum-core/version.rb
|
68
|
+
has_rdoc: true
|
69
|
+
homepage: http://www.darkarts.co.za/ipsum
|
70
|
+
licenses: []
|
71
|
+
|
72
|
+
post_install_message:
|
73
|
+
rdoc_options: []
|
74
|
+
|
75
|
+
require_paths:
|
76
|
+
- lib
|
77
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
hash: 3915692825670349111
|
83
|
+
segments:
|
84
|
+
- 0
|
85
|
+
version: "0"
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
hash: 3915692825670349111
|
92
|
+
segments:
|
93
|
+
- 0
|
94
|
+
version: "0"
|
95
|
+
requirements: []
|
96
|
+
|
97
|
+
rubyforge_project:
|
98
|
+
rubygems_version: 1.3.7
|
99
|
+
signing_key:
|
100
|
+
specification_version: 3
|
101
|
+
summary: This is the core engine of the ipsum gem, install that instead
|
102
|
+
test_files: []
|
103
|
+
|