lorem_ipsum_amet 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source 'http://rubygems.org'
2
+
3
+ group :development do
4
+ gem 'rspec', '>= 2.12.0'
5
+ gem 'rdoc', '~> 3.12'
6
+ gem 'bundler', '>= 1.1.3'
7
+ gem 'jeweler', '~> 1.8.4'
8
+ gem 'simplecov'
9
+ gem 'pry'
10
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,45 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ coderay (1.0.8)
5
+ diff-lcs (1.1.3)
6
+ git (1.2.5)
7
+ jeweler (1.8.4)
8
+ bundler (~> 1.0)
9
+ git (>= 1.2.5)
10
+ rake
11
+ rdoc
12
+ json (1.7.5)
13
+ method_source (0.8.1)
14
+ multi_json (1.4.0)
15
+ pry (0.9.10)
16
+ coderay (~> 1.0.5)
17
+ method_source (~> 0.8)
18
+ slop (~> 3.3.1)
19
+ rake (10.0.2)
20
+ rdoc (3.12)
21
+ json (~> 1.4)
22
+ rspec (2.12.0)
23
+ rspec-core (~> 2.12.0)
24
+ rspec-expectations (~> 2.12.0)
25
+ rspec-mocks (~> 2.12.0)
26
+ rspec-core (2.12.1)
27
+ rspec-expectations (2.12.0)
28
+ diff-lcs (~> 1.1.3)
29
+ rspec-mocks (2.12.0)
30
+ simplecov (0.7.1)
31
+ multi_json (~> 1.0)
32
+ simplecov-html (~> 0.7.1)
33
+ simplecov-html (0.7.1)
34
+ slop (3.3.3)
35
+
36
+ PLATFORMS
37
+ ruby
38
+
39
+ DEPENDENCIES
40
+ bundler (>= 1.1.3)
41
+ jeweler (~> 1.8.4)
42
+ pry
43
+ rdoc (~> 3.12)
44
+ rspec (>= 2.12.0)
45
+ simplecov
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Mateusz Sojka
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,124 @@
1
+ # Lorem Ipsum Amet - blind text generator
2
+ ===========
3
+
4
+ **Lorem Ipsum Amet** provides a simple yet powerful DSL for generating blind text in your projects.
5
+
6
+ ## Installation
7
+
8
+ Add it to your Gemfile:
9
+
10
+ `gem 'lorem-ipsum-amet'`
11
+
12
+ And run:
13
+
14
+ `bundle install`
15
+
16
+ to install it.
17
+
18
+ ## Usage
19
+
20
+ The gem provides all of its features through the namespace LoremIpsum. If you are using it in a Rails project, refer to the next section.
21
+
22
+ ### Examples
23
+
24
+ #### Get some lorem ipsum!
25
+
26
+ `LoremIpsum.lorem_ipsum` or
27
+ (alternatively) `LoremIpsum.text`
28
+
29
+ #### Characters
30
+
31
+ Get 100 characters:
32
+
33
+ `LoremIpsum.lorem_ipsum(100)` or
34
+ `LoremIpsum.lorem_ipsum(characters: 100)`
35
+
36
+ #### Paragraph
37
+
38
+ Get 3 paragraphs:
39
+
40
+ `LoremIpsum.lorem_ipsum(paragraphs: 3)`
41
+
42
+ #### Words
43
+
44
+ Get 200 words:
45
+
46
+ `LoremIpsum.lorem_ipsum(words: 3)`
47
+
48
+ #### HTML
49
+
50
+ Get 5 paragraphs with `<br />` breaks instead of `\n`:
51
+
52
+ `LoremIpsum.lorem_ipsum(paragraphs: 5, html: true)`
53
+
54
+ #### Custom paragraph join
55
+
56
+ Get 3 paragraphs joined by `\r\n`:
57
+
58
+ `LoremIpsum.lorem_ipsum(paragraphs: 3, join: "\r\n")`
59
+
60
+ #### Text formatting
61
+
62
+ Use the `format` parameter.
63
+
64
+ Title case:
65
+
66
+ `LoremIpsum.lorem_ipsum(10, format: :title_case)`
67
+
68
+ Upcase:
69
+
70
+ `LoremIpsum.lorem_ipsum(10, format: :upcase)`
71
+
72
+ Downcase:
73
+
74
+ `LoremIpsum.lorem_ipsum(10, format: :downcase)`
75
+
76
+ #### Different text lengths
77
+
78
+ There are also some shortcuts for getting different text lengths.
79
+
80
+ Short:
81
+
82
+ `LoremIpsum.short`
83
+
84
+ Medium:
85
+
86
+ `LoremIpsum.medium`
87
+ `LoremIpsum.medium("<br />")`
88
+
89
+ Long:
90
+
91
+ `LoremIpsum.long`
92
+ `LoremIpsum.long("<br />")`
93
+
94
+ Very long:
95
+
96
+ `LoremIpsum.very_long`
97
+ `LoremIpsum.very_long("<br />")`
98
+
99
+ ### Rails integration
100
+
101
+ If you are using this gem in a Rails project, you can access the helper method `lorem_ipsum` to get exactly the same functionality as described in the examples before.
102
+
103
+ The html option is activated by default.
104
+
105
+ ERB:
106
+
107
+ `<%= text_area_tag 'placeholder', lorem_ipsum %>`
108
+
109
+ HAML:
110
+
111
+ `%p= lorem_ipsum(paragraphs: 5)`
112
+
113
+ ## Bug reports and contributions
114
+
115
+ If you discover any bugs or need a feature, feel free to create an issue on GitHub. I also encourage you to help even more by forking and sending a pull request.
116
+
117
+ ## Maintainers
118
+
119
+ * Mateusz Sójka (https://github.com/yagooar)
120
+
121
+ ## License
122
+
123
+ MIT License.
124
+
data/Rakefile ADDED
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+
6
+ begin
7
+ Bundler.setup(:default, :development)
8
+ rescue Bundler::BundlerError => e
9
+ $stderr.puts e.message
10
+ $stderr.puts "Run `bundle install` to install missing gems"
11
+ exit e.status_code
12
+ end
13
+ require 'rake'
14
+
15
+ require 'jeweler'
16
+ Jeweler::Tasks.new do |gem|
17
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
18
+ gem.name = 'lorem_ipsum_amet'
19
+ gem.homepage = 'http://github.com/yagooar/lorem_ipsum_amet'
20
+ gem.license = 'MIT'
21
+ gem.summary = %Q{Lorem Ipsum generator}
22
+ gem.description = %Q{Generate blind texts with different configurations}
23
+ gem.email = 'yagooar@gmail.com'
24
+ gem.authors = ['Mateusz Sojka']
25
+ gem.require_paths = ['lib']
26
+ # dependencies defined in Gemfile
27
+ end
28
+ Jeweler::RubygemsDotOrgTasks.new
29
+
30
+ require 'rspec/core'
31
+ require 'rspec/core/rake_task'
32
+ RSpec::Core::RakeTask.new(:spec) do |spec|
33
+ spec.pattern = FileList['spec/**/*_spec.rb']
34
+ end
35
+
36
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
37
+ spec.pattern = 'spec/**/*_spec.rb'
38
+ spec.rcov = true
39
+ end
40
+
41
+ task :default => :spec
42
+
43
+ require 'rdoc/task'
44
+ Rake::RDocTask.new do |rdoc|
45
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
46
+
47
+ rdoc.rdoc_dir = 'rdoc'
48
+ rdoc.title = "lorem_ipsum_amet #{version}"
49
+ rdoc.rdoc_files.include('README*')
50
+ rdoc.rdoc_files.include('lib/**/*.rb')
51
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.3.0
@@ -0,0 +1,10 @@
1
+ require_relative 'lorem_ipsum_amet/text'
2
+ require_relative 'lorem_ipsum_amet/character'
3
+ require_relative 'lorem_ipsum_amet/paragraph'
4
+ require_relative 'lorem_ipsum_amet/word'
5
+ require_relative 'lorem_ipsum_amet/base'
6
+
7
+ LoremIpsum = LoremIpsumAmet::Base.new
8
+
9
+ require_relative 'lorem_ipsum_amet/rails/railtie' if defined?(Rails::Railtie)
10
+
@@ -0,0 +1,73 @@
1
+ module LoremIpsumAmet
2
+ class Base
3
+
4
+ def params
5
+ @params ||= {}
6
+ end
7
+
8
+ # cpw: characters, paragraphs or words
9
+ def lorem_ipsum(cpw = nil, options = {})
10
+ cpw = { characters: cpw } unless cpw.respond_to?(:merge)
11
+ @params = cpw.merge!(options)
12
+
13
+ join_element = params[:join].nil? && params.delete(:html) ? '<br />' : params.delete(:join)
14
+
15
+ if params[:characters]
16
+ Character.new(self, params.delete(:characters), join_element).text
17
+ elsif params[:paragraphs]
18
+ Paragraph.new(self, params.delete(:paragraphs), join_element).text
19
+ elsif params[:words]
20
+ Word.new(self, params.delete(:words), join_element).text
21
+ else
22
+ paragraphs.first
23
+ end
24
+ end
25
+
26
+ alias text lorem_ipsum
27
+
28
+ def paragraphs
29
+ formatted_text.split("\n")
30
+ end
31
+
32
+ def short
33
+ Word.new(self, 8, nil).text
34
+ end
35
+
36
+ def medium(join_element = "\n")
37
+ Paragraph.new(self, 2, join_element).text
38
+ end
39
+
40
+ def long(join_element = "\n")
41
+ Paragraph.new(self, 8, join_element).text
42
+ end
43
+
44
+ def very_long(join_element = "\n")
45
+ Paragraph.new(self, 24, join_element).text
46
+ end
47
+
48
+ # http://goo.gl/m0MMz ;)
49
+ def the_lord_of_the_rings_long(join_element = "\n")
50
+ Word.new(self, 500000, join_element).text
51
+ end
52
+
53
+ private
54
+
55
+ def formatted_text
56
+ case params[:format]
57
+ when :title_case, :titlecase
58
+ raw_text.gsub(/\w+/) { |word| word.capitalize }
59
+ when :upcase, :uppercase
60
+ raw_text.upcase
61
+ when :downcase, :lowercase
62
+ raw_text.downcase
63
+ else
64
+ raw_text
65
+ end
66
+ end
67
+
68
+ def raw_text
69
+ Text.raw
70
+ end
71
+
72
+ end
73
+ end
@@ -0,0 +1,34 @@
1
+ module LoremIpsumAmet
2
+ class Character
3
+
4
+ def initialize(base, characters, join_element)
5
+ @base = base
6
+ @characters = characters
7
+ @join_element = join_element
8
+ end
9
+
10
+ def text
11
+ joined_text[0...@characters]
12
+ end
13
+
14
+ private
15
+
16
+ def join_element
17
+ @join_element ||= "\n"
18
+ end
19
+
20
+ def base_text
21
+ @base.paragraphs.join(join_element)
22
+ end
23
+
24
+ def times_to_repeat
25
+ (@characters / base_text.length) + 1
26
+ end
27
+
28
+ def joined_text
29
+ ([base_text] * times_to_repeat).join(join_element)
30
+ end
31
+
32
+ end
33
+ end
34
+
@@ -0,0 +1,34 @@
1
+ module LoremIpsumAmet
2
+ class Paragraph
3
+
4
+ def initialize(base, paragraphs, join_element)
5
+ @base = base
6
+ @paragraphs = paragraphs
7
+ @join_element = join_element
8
+ end
9
+
10
+ def text
11
+ joined_text
12
+ end
13
+
14
+ private
15
+
16
+ def join_element
17
+ @join_element ||= "\n"
18
+ end
19
+
20
+ def base_text
21
+ @base.paragraphs.join(join_element)
22
+ end
23
+
24
+ def times_to_repeat
25
+ (@paragraphs / @base.paragraphs.size) + 1
26
+ end
27
+
28
+ def joined_text
29
+ ([@base.paragraphs] * times_to_repeat).flatten[0...@paragraphs].join(join_element)
30
+ end
31
+
32
+ end
33
+ end
34
+
@@ -0,0 +1,12 @@
1
+ require_relative 'view_helpers'
2
+
3
+ module LoremIpsumAmet
4
+ class Railtie < Rails::Railtie
5
+
6
+ initializer 'lorem_ipsum_amet.view_helpers' do
7
+ ActionView::Base.send :include, ViewHelpers
8
+ end
9
+
10
+ end
11
+ end
12
+
@@ -0,0 +1,12 @@
1
+ module LoremIpsumAmet
2
+ module ViewHelpers
3
+
4
+ def lorem_ipsum(cp = nil, options = {})
5
+ options = { html: true }.merge(options)
6
+
7
+ LoremIpsum.lorem_ipsum(cp, options)
8
+ end
9
+
10
+ end
11
+ end
12
+
@@ -0,0 +1,14 @@
1
+ module LoremIpsumAmet
2
+ class Text
3
+
4
+ def self.raw
5
+ %Q(Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam cursus. Morbi ut mi. Nullam enim leo, egestas id, condimentum at, laoreet mattis, massa. Sed eleifend nonummy diam. Praesent mauris ante, elementum et, bibendum at, posuere sit amet, nibh. Duis tincidunt lectus quis dui viverra vestibulum. Suspendisse vulputate aliquam dui. Nulla elementum dui ut augue. Aliquam vehicula mi at mauris. Maecenas placerat, nisl at consequat rhoncus, sem nunc gravida justo, quis eleifend arcu velit quis lacus. Morbi magna magna, tincidunt a, mattis non, imperdiet vitae, tellus. Sed odio est, auctor ac, sollicitudin in, consequat vitae, orci. Fusce id felis. Vivamus sollicitudin metus eget eros.
6
+ Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In posuere felis nec tortor. Pellentesque faucibus. Ut accumsan ultricies elit. Maecenas at justo id velit placerat molestie. Donec dictum lectus non odio. Cras a ante vitae enim iaculis aliquam. Mauris nunc quam, venenatis nec, euismod sit amet, egestas placerat, est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras id elit. Integer quis urna. Ut ante enim, dapibus malesuada, fringilla eu, condimentum quis, tellus. Aenean porttitor eros vel dolor. Donec convallis pede venenatis nibh. Duis quam. Nam eget lacus. Aliquam erat volutpat. Quisque dignissim congue leo.
7
+ Mauris vel lacus vitae felis vestibulum volutpat. Etiam est nunc, venenatis in, tristique eu, imperdiet ac, nisl. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In iaculis facilisis massa. Etiam eu urna. Sed porta. Suspendisse quam leo, molestie sed, luctus quis, feugiat in, pede. Fusce tellus. Sed metus augue, convallis et, vehicula ut, pulvinar eu, ante. Integer orci tellus, tristique vitae, consequat nec, porta vel, lectus. Nulla sit amet diam. Duis non nunc. Nulla rhoncus dictum metus. Curabitur tristique mi condimentum orci. Phasellus pellentesque aliquam enim. Proin dui lectus, cursus eu, mattis laoreet, viverra sit amet, quam. Curabitur vel dolor ultrices ipsum dictum tristique. Praesent vitae lacus. Ut velit enim, vestibulum non, fermentum nec, hendrerit quis, leo. Pellentesque rutrum malesuada neque.
8
+ Nunc tempus felis vitae urna. Vivamus porttitor, neque at volutpat rutrum, purus nisi eleifend libero, a tempus libero lectus feugiat felis. Morbi diam mauris, viverra in, gravida eu, mattis in, ante. Morbi eget arcu. Morbi porta, libero id ullamcorper nonummy, nibh ligula pulvinar metus, eget consectetuer augue nisi quis lacus. Ut ac mi quis lacus mollis aliquam. Curabitur iaculis tempus eros. Curabitur vel mi sit amet magna malesuada ultrices. Ut nisi erat, fermentum vel, congue id, euismod in, elit. Fusce ultricies, orci ac feugiat suscipit, leo massa sodales velit, et scelerisque mi tortor at ipsum. Proin orci odio, commodo ac, gravida non, tristique vel, tellus. Pellentesque nibh libero, ultricies eu, sagittis non, mollis sed, justo. Praesent metus ipsum, pulvinar pulvinar, porta id, fringilla at, est.
9
+ Phasellus felis dolor, scelerisque a, tempus eget, lobortis id, libero. Donec scelerisque leo ac risus. Praesent sit amet est. In dictum, dolor eu dictum porttitor, enim felis viverra mi, eget luctus massa purus quis odio. Etiam nulla massa, pharetra facilisis, volutpat in, imperdiet sit amet, sem. Aliquam nec erat at purus cursus interdum. Vestibulum ligula augue, bibendum accumsan, vestibulum ut, commodo a, mi. Morbi ornare gravida elit. Integer congue, augue et malesuada iaculis, ipsum dui aliquet felis, at cursus magna nisl nec elit. Donec iaculis diam a nisi accumsan viverra. Duis sed tellus et tortor vestibulum gravida. Praesent elementum elit at tellus. Curabitur metus ipsum, luctus eu, malesuada ut, tincidunt sed, diam. Donec quis mi sed magna hendrerit accumsan. Suspendisse risus nibh, ultricies eu, volutpat non, condimentum hendrerit, augue. Etiam eleifend, metus vitae adipiscing semper, mauris ipsum iaculis elit, congue gravida elit mi egestas orci. Curabitur pede.
10
+ Maecenas aliquet velit vel turpis. Mauris neque metus, malesuada nec, ultricies sit amet, porttitor mattis, enim. In massa libero, interdum nec, interdum vel, blandit sed, nulla. In ullamcorper, est eget tempor cursus, neque mi consectetuer mi, a ultricies massa est sed nisl. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Proin nulla arcu, nonummy luctus, dictum eget, fermentum et, lorem. Nunc porta convallis pede.)
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,41 @@
1
+ module LoremIpsumAmet
2
+ class Word
3
+
4
+ def initialize(base, words, join_element)
5
+ @base = base
6
+ @words = words
7
+ @join_element = join_element
8
+ end
9
+
10
+ def text
11
+ joined_text.gsub(/\s+\$JOIN\s+/, join_element)
12
+ end
13
+
14
+ private
15
+
16
+ def join_element
17
+ @join_element ||= "\n"
18
+ end
19
+
20
+ def base_text
21
+ # Using a trick here: putting the string $JOIN to keep the
22
+ # reference to the paragraphs, which in case of \n would get
23
+ # lost when #split would get called
24
+ @base.paragraphs.join(' $JOIN ')
25
+ end
26
+
27
+ def times_to_repeat
28
+ (@words / base_text.split.size) + 1
29
+ end
30
+
31
+ def joined_text
32
+ text = ([base_text] * times_to_repeat).join(' $JOIN ')
33
+ joins = text.split[0...@words].select { |word| word == '$JOIN' }.size
34
+
35
+ words_without_joins = @words + joins
36
+ text.split[0...words_without_joins].join(' ')
37
+ end
38
+
39
+ end
40
+ end
41
+
@@ -0,0 +1,178 @@
1
+ require 'spec_helper'
2
+
3
+ describe LoremIpsumAmet::Base do
4
+
5
+ let(:first_paragraph) do
6
+ %Q(Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam cursus. Morbi ut mi. Nullam enim leo, egestas id, condimentum at, laoreet mattis, massa. Sed eleifend nonummy diam. Praesent mauris ante, elementum et, bibendum at, posuere sit amet, nibh. Duis tincidunt lectus quis dui viverra vestibulum. Suspendisse vulputate aliquam dui. Nulla elementum dui ut augue. Aliquam vehicula mi at mauris. Maecenas placerat, nisl at consequat rhoncus, sem nunc gravida justo, quis eleifend arcu velit quis lacus. Morbi magna magna, tincidunt a, mattis non, imperdiet vitae, tellus. Sed odio est, auctor ac, sollicitudin in, consequat vitae, orci. Fusce id felis. Vivamus sollicitudin metus eget eros.)
7
+ end
8
+
9
+ let(:second_paragraph) do
10
+ %Q(Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In posuere felis nec tortor. Pellentesque faucibus. Ut accumsan ultricies elit. Maecenas at justo id velit placerat molestie. Donec dictum lectus non odio. Cras a ante vitae enim iaculis aliquam. Mauris nunc quam, venenatis nec, euismod sit amet, egestas placerat, est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras id elit. Integer quis urna. Ut ante enim, dapibus malesuada, fringilla eu, condimentum quis, tellus. Aenean porttitor eros vel dolor. Donec convallis pede venenatis nibh. Duis quam. Nam eget lacus. Aliquam erat volutpat. Quisque dignissim congue leo.)
11
+ end
12
+
13
+ let(:raw_text) { LoremIpsumAmet::Text.raw }
14
+ let(:long_text) { [raw_text, raw_text].join("\n")[0...6000] }
15
+
16
+ describe '#lorem_ipsum' do
17
+ it 'returns the first paragraph by default' do
18
+ expect(subject.lorem_ipsum).to eq(first_paragraph)
19
+ end
20
+
21
+ describe 'characters' do
22
+
23
+ it 'returns a given amount of characters' do
24
+ expect(subject.lorem_ipsum(15)).to eq(first_paragraph[0...15])
25
+ end
26
+
27
+ it 'returns a given amount of characters (more characters than raw text length)' do
28
+ expect(subject.lorem_ipsum(6000)).to eq(long_text)
29
+ end
30
+
31
+ it 'returns a given amount of characters (alternative syntax)' do
32
+ expect(subject.lorem_ipsum(characters: 20)).to eq(first_paragraph[0...20])
33
+ end
34
+
35
+ describe 'join element' do
36
+
37
+ it 'returns paragraphs separated by the given join element' do
38
+ two_paragraphs = [first_paragraph, second_paragraph].join("\r\n")
39
+
40
+ expect(subject.lorem_ipsum(two_paragraphs.length, join: "\r\n")).to eq(two_paragraphs)
41
+ end
42
+
43
+ it 'returns paragraphs separated by <br /> if the html option is set to true' do
44
+ two_paragraphs = [first_paragraph, second_paragraph].join('<br />')
45
+
46
+ expect(subject.lorem_ipsum(two_paragraphs.length, html: true)).to eq(two_paragraphs)
47
+ end
48
+
49
+ end
50
+
51
+ end
52
+
53
+ describe 'paragraphs' do
54
+
55
+ it 'returns a given amount of paragraphs' do
56
+ two_paragraphs = [first_paragraph, second_paragraph].join("\n")
57
+ expect(subject.lorem_ipsum(paragraphs: 2)).to eq(two_paragraphs)
58
+ end
59
+
60
+ it 'returns a given amount of paragraphs (more paragraphs than in raw text)' do
61
+ seven_paragraphs = [raw_text, first_paragraph].join("\n")
62
+ expect(subject.lorem_ipsum(paragraphs: 7)).to eq(seven_paragraphs)
63
+ end
64
+
65
+ describe 'join element' do
66
+
67
+ it 'returns paragraphs separated by the given join element' do
68
+ two_paragraphs = [first_paragraph, second_paragraph].join("\r\n")
69
+
70
+ expect(subject.lorem_ipsum(paragraphs: 2, join: "\r\n")).to eq(two_paragraphs)
71
+ end
72
+
73
+ it 'returns paragraphs separated by <br /> if the html option is set to true' do
74
+ two_paragraphs = [first_paragraph, second_paragraph].join('<br />')
75
+
76
+ expect(subject.lorem_ipsum(paragraphs: 2, html: true)).to eq(two_paragraphs)
77
+ end
78
+
79
+ end
80
+
81
+ end
82
+
83
+ describe 'words' do
84
+
85
+ it 'returns a given amount of words' do
86
+ eight_words = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.'
87
+
88
+ expect(subject.lorem_ipsum(words: 8)).to eq(eight_words)
89
+ end
90
+
91
+ it 'returns a given amount of words (more than in the whole text)' do
92
+ seven_paragraphs = [raw_text, first_paragraph].join("\n")
93
+ words = seven_paragraphs.split.size
94
+
95
+ expect(subject.lorem_ipsum(words: words)).to eq(seven_paragraphs)
96
+ end
97
+
98
+ it 'returns a given amount of words separated by \r\n' do
99
+ seven_paragraphs = [raw_text, first_paragraph].join("\n").gsub("\n", "\r\n")
100
+ words = seven_paragraphs.split.size
101
+
102
+ expect(subject.lorem_ipsum(words: words, join: "\r\n")).to eq(seven_paragraphs)
103
+ end
104
+ end
105
+
106
+ describe 'text format' do
107
+
108
+ it 'returns title cased text' do
109
+ title_cased = 'Lorem Ipsum Dolor Sit Amet, Consectetuer Adipiscing Elit.'
110
+
111
+ expect(subject.lorem_ipsum(words: 8, format: :title_case)).to eq(title_cased)
112
+ expect(subject.lorem_ipsum(words: 8, format: :titlecase)).to eq(title_cased)
113
+ end
114
+
115
+ it 'returns upcased text' do
116
+ upcased = 'LOREM IPSUM DOLOR SIT AMET, CONSECTETUER ADIPISCING ELIT.'
117
+
118
+ expect(subject.lorem_ipsum(words: 8, format: :uppercase)).to eq(upcased)
119
+ expect(subject.lorem_ipsum(words: 8, format: :upcase)).to eq(upcased)
120
+ end
121
+
122
+ it 'returns downcased text' do
123
+ downcased = 'lorem ipsum dolor sit amet, consectetuer adipiscing elit.'
124
+
125
+ expect(subject.lorem_ipsum(words: 8, format: :lowercase)).to eq(downcased)
126
+ expect(subject.lorem_ipsum(words: 8, format: :downcase)).to eq(downcased)
127
+ end
128
+
129
+ end
130
+
131
+ describe '#short' do
132
+
133
+ it 'returns a short fragment' do
134
+ short_fragment = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.'
135
+
136
+ expect(subject.short).to eq(short_fragment)
137
+ end
138
+
139
+ end
140
+
141
+ describe '#medium' do
142
+
143
+ it 'returns a medium long fragment' do
144
+ medium_fragment = [first_paragraph, second_paragraph].join("\n")
145
+
146
+ expect(subject.medium).to eq(medium_fragment)
147
+ end
148
+
149
+ end
150
+
151
+ describe '#long' do
152
+
153
+ it 'returns a long fragment' do
154
+ long_fragment = [raw_text, first_paragraph, second_paragraph].join("\n")
155
+
156
+ expect(subject.long).to eq(long_fragment)
157
+ end
158
+
159
+ end
160
+
161
+ describe '#very_long' do
162
+
163
+ it 'returns a very long fragment' do
164
+ very_long_fragment = ([raw_text] * 4).join("\n")
165
+
166
+ expect(subject.very_long).to eq(very_long_fragment)
167
+ end
168
+ end
169
+
170
+ end
171
+
172
+ describe '.text' do
173
+ it 'is an alias of .lorem_ipsum' do
174
+ expect(subject.method(:text)).to eq(subject.method(:lorem_ipsum))
175
+ end
176
+ end
177
+
178
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe LoremIpsumAmet::Text do
4
+
5
+ it 'returns the full text' do
6
+ expect(LoremIpsumAmet::Text.raw).to be_a String
7
+ end
8
+
9
+ end
@@ -0,0 +1,16 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ # Run only when needed
5
+ # require 'simplecov'
6
+ # SimpleCov.start
7
+
8
+ require 'rspec'
9
+ require 'lorem_ipsum'
10
+
11
+ # Requires supporting files with custom matchers and macros, etc,
12
+ # in ./support/ and its subdirectories.
13
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
14
+
15
+ RSpec.configure do |config|
16
+ end
metadata ADDED
@@ -0,0 +1,163 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lorem_ipsum_amet
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Mateusz Sojka
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.12.0
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 2.12.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: rdoc
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '3.12'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '3.12'
46
+ - !ruby/object:Gem::Dependency
47
+ name: bundler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 1.1.3
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.1.3
62
+ - !ruby/object:Gem::Dependency
63
+ name: jeweler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 1.8.4
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.8.4
78
+ - !ruby/object:Gem::Dependency
79
+ name: simplecov
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: pry
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ description: Generate blind texts with different configurations
111
+ email: yagooar@gmail.com
112
+ executables: []
113
+ extensions: []
114
+ extra_rdoc_files:
115
+ - LICENSE.txt
116
+ - README.md
117
+ files:
118
+ - Gemfile
119
+ - Gemfile.lock
120
+ - LICENSE.txt
121
+ - README.md
122
+ - Rakefile
123
+ - VERSION
124
+ - lib/lorem_ipsum_amet.rb
125
+ - lib/lorem_ipsum_amet/base.rb
126
+ - lib/lorem_ipsum_amet/character.rb
127
+ - lib/lorem_ipsum_amet/paragraph.rb
128
+ - lib/lorem_ipsum_amet/rails/railtie.rb
129
+ - lib/lorem_ipsum_amet/rails/view_helpers.rb
130
+ - lib/lorem_ipsum_amet/text.rb
131
+ - lib/lorem_ipsum_amet/word.rb
132
+ - spec/lorem_ipsum/base_spec.rb
133
+ - spec/lorem_ipsum/text_spec.rb
134
+ - spec/spec_helper.rb
135
+ homepage: http://github.com/yagooar/lorem_ipsum_amet
136
+ licenses:
137
+ - MIT
138
+ post_install_message:
139
+ rdoc_options: []
140
+ require_paths:
141
+ - lib
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ! '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ segments:
149
+ - 0
150
+ hash: -358417233092176217
151
+ required_rubygems_version: !ruby/object:Gem::Requirement
152
+ none: false
153
+ requirements:
154
+ - - ! '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ requirements: []
158
+ rubyforge_project:
159
+ rubygems_version: 1.8.23
160
+ signing_key:
161
+ specification_version: 3
162
+ summary: Lorem Ipsum generator
163
+ test_files: []