doctor_ipsum 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1a0e21e575404366798da35f0f23cb287a6699d8
4
- data.tar.gz: b50d84cf8dfae6323c31133bedf603d899246bfc
3
+ metadata.gz: f6c9a59f74a88b6cebb6e9da69bf6df6ad52de06
4
+ data.tar.gz: 7860118a5a625051110a6153ec2f15fca3532a0c
5
5
  SHA512:
6
- metadata.gz: 8246e8738b967221740a01f6523e1282c616b957d623f7398e3a5ded26e585688494361236abab91a07cb0d0e7e553669ef5d613e950fa0e988b1b2129a70d1b
7
- data.tar.gz: 10f493de93a66bd61f44ef074f80b059b27594e52518dc2e126707b0872a4e4318b6cda09cdb9ce157210396c81552a8c2cbd1aa07585044b56849f7e49652ca
6
+ metadata.gz: b7ca0c2f89280725db992915368d9deae7e3109c7c016182015621e52946e884daa6ddd876e9e2beb715b1cf8e4843b17b7992ff71ae566088480b11e692b8d1
7
+ data.tar.gz: 339d8c81acf7865c4449df0344e9ea23183dc105cb4e784ceb10a7cca14b60e141806ce66260d109a7ac6f1ed127234c523fef30f094b800a8d1a002efa6b557
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  rvm:
2
+ - 1.9.3
2
3
  - 2.0.0
3
4
 
4
5
  install:
data/README.md CHANGED
@@ -26,7 +26,63 @@ Or install it yourself as:
26
26
 
27
27
  ## Usage
28
28
 
29
- TBA
29
+ For basic [Faker](https://github.com/stympy/faker) Lorem Ipsum:
30
+
31
+ ```ruby
32
+
33
+ DoctorIpsum::Lorem.sentence
34
+ => "Qui assumenda mollitia error dolorum nostrum et."
35
+
36
+ DoctorIpsum::Lorem.words
37
+ => ["sit", "vel", "possimus"]
38
+
39
+ ...
40
+
41
+ ```
42
+
43
+ For Markdown:
44
+
45
+ ```ruby
46
+
47
+ DoctorIpsum::Markdown.header
48
+ => "# Aliquam Dolore Voluptatem"
49
+
50
+ DoctorIpsum::Markdown.emphasis
51
+ => "_qui maxime quia_"
52
+
53
+ DoctorIpsum::Markdown.blockquote
54
+ => "> Laborum et sed quisquam rerum\n> ipsum. Est soluta omnis fugit\n> unde.
55
+ Et totam eaque illo\n> exercitationem itaque neque. Hic unde\n> fugit
56
+ deserunt non et. Et\n> est velit voluptate nemo quia."
57
+
58
+ DoctorIpsum::Markdown.list
59
+ => "* quis nostrum\n* labore error\n* soluta voluptatem\n* totam expedita\n*
60
+ dlectus et"
61
+
62
+ DoctorIpsum::Markdown.horizontal
63
+ => "----------"
64
+
65
+ DoctorIpsum::Markdown.link
66
+ => "[Dignissimos omnis aut et deleniti](http://google.com \"et\")"
67
+
68
+ DoctorIpsum::Markdown.image
69
+ => "![Suscipit nostrum distinctio eligendi voluptates repudiandae
70
+ doloribus](http://placehold.it/459x466 \"consectetur\")"
71
+
72
+ ```
73
+
74
+ Most of the above functions also take arguments and can be found by
75
+ [here](https://github.com/geekjuice/doctor_ipsum/blob/master/lib/doctor_ipsum/markdown.rb)
76
+
77
+
78
+ ## Future Plans
79
+
80
+ Features to look for in future updates:
81
+
82
+ * Code blocks (regular and Github flavor)
83
+ * More flexibility
84
+ * Full blog post generator
85
+
30
86
 
31
87
  ## Contributing
32
88
 
data/Rakefile CHANGED
@@ -1 +1,8 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :default => :spec
8
+
data/lib/doctor_ipsum.rb CHANGED
@@ -16,3 +16,4 @@ end
16
16
 
17
17
  require 'doctor_ipsum/version'
18
18
  require 'doctor_ipsum/lorem'
19
+ require 'doctor_ipsum/markdown'
@@ -17,12 +17,18 @@ module DoctorIpsum
17
17
  words(num_words, supplemental).join(' ').capitalize + '.'
18
18
  end
19
19
  def sentences(sentence_count = 5, supplemental = false)
20
- [].tap { |s| sentence_count.times { s << sentence(5, supplemental) } }
21
- .join(' ')
20
+ [].tap { |s|
21
+ resolve(sentence_count).times { s << sentence(5, supplemental) }
22
+ }.join(' ')
22
23
  end
23
24
 
24
25
  def paragraph(sentence_count = 5, supplemental = false)
25
- sentences(sentence_count, supplemental)
26
+ sentences(resolve(sentence_count), supplemental)
27
+ end
28
+ def paragraphs(paragraph_count = 5, supplemental = false)
29
+ [].tap { |p|
30
+ resolve(paragraph_count).times { p << paragraph(5, supplemental) }
31
+ }.join("\n\n")
26
32
  end
27
33
 
28
34
  end #END SELF
@@ -0,0 +1,69 @@
1
+ module DoctorIpsum
2
+ class Markdown < Lorem
3
+ class << self
4
+ # Uses Atx-style i.e. ## Header
5
+ def header(input = nil, level = 1)
6
+ input ||= words
7
+ resolve_md(input, true).prepend('#'*[0,level,6].sort[1]+' ')
8
+ end
9
+
10
+ # Uses underscore
11
+ def emphasis(input = nil, level = 1)
12
+ input ||= words
13
+ underscore = '_'*[0,level,2].sort[1]
14
+ resolve_md(input).prepend(underscore).concat(underscore)
15
+ end
16
+
17
+ # Simple Blockquote (no Markdown inside...yet)
18
+ def blockquote(input = nil, level = 5)
19
+ inputs ||= sentences
20
+ [].tap { |x| resolve_md(input).split(' ').each_slice(level) { |s| x << s.join(' ').prepend('> ') } }.join("\n")
21
+ end
22
+
23
+ # Uses *
24
+ def list(input = nil, level = 2, ordered = false)
25
+ input ||= words(10)
26
+ [].tap { |x|
27
+ resolve_md(input).split(' ').each_slice(level).with_index { |s,i|
28
+ x << s.join(' ').prepend((ordered ? (i+1).to_s+'.' : '*')+' ')
29
+ }
30
+ }.join("\n")
31
+ end
32
+
33
+ # 10 dashes
34
+ def horizontal
35
+ '-'*10
36
+ end
37
+
38
+ # Opinionated link format
39
+ def link
40
+ url = (rand(0..1)>0 ? 'google.com' : 'github.com/geekjuice/doctor_ipsum')
41
+ basic_format( nil, url , nil)
42
+ end
43
+
44
+ # Images from placehold.it
45
+ def image( width = rand(100..500), height = rand(100..500) )
46
+ url = 'placehold.it/'+width.to_s+'x'+height.to_s
47
+ basic_format( nil, url, nil).prepend('!')
48
+ end
49
+
50
+ def basic_format( text = nil, url = nil, tag = nil )
51
+ text ||= sentence.chomp('.')
52
+ url ||= 'google.com'
53
+ tag ||= word.join(' ')
54
+ "[" + text + "](http://" + url + ' "' + tag + '")'
55
+ end
56
+
57
+ end #END SELF
58
+
59
+ private
60
+
61
+ def self.resolve_md(input, title=false)
62
+ case input
63
+ when Array then title ? input.map {|x| x.capitalize}.join(' ') : input.join(' ')
64
+ else title ? input.split(' ').map {|x| x.capitalize}.join(' ') : input
65
+ end
66
+ end
67
+
68
+ end
69
+ end
@@ -1,3 +1,3 @@
1
1
  module DoctorIpsum
2
- VERSION = "0.1"
2
+ VERSION = "0.2"
3
3
  end
@@ -0,0 +1,99 @@
1
+ require 'spec_helper'
2
+ require 'doctor_ipsum'
3
+
4
+ describe "DoctorIpsum Markdown: " do
5
+ let(:md) { DoctorIpsum::Markdown }
6
+
7
+ describe 'Header' do
8
+ it 'should add correct header and length' do
9
+ 100.times do
10
+ level = rand(1..6)
11
+ md.header( DoctorIpsum::Lorem.sentence(3), level )[0..level-1].should
12
+ eq('#'*level)
13
+ end
14
+ end
15
+ it 'should have upper bound of 6' do
16
+ 100.times do
17
+ md.header( DoctorIpsum::Lorem.sentence(3), rand(1..100) ).count('#').should <= 6
18
+ end
19
+ end
20
+ end
21
+
22
+ describe 'Emphasis' do
23
+ it 'should add correct header and length' do
24
+ 100.times do
25
+ level = rand(1..2)
26
+ sentence = DoctorIpsum::Lorem.sentence(3)
27
+ md.emphasis( sentence, level )[0..level-1].should eq('_'*level)
28
+ md.emphasis( sentence, level )[-level..-1].should eq('_'*level)
29
+ end
30
+ end
31
+
32
+ it 'should have upper limit of 2' do
33
+ 100.times do
34
+ md.emphasis( DoctorIpsum::Lorem.sentence(3), rand(1..100) ).count('_').should <= 4
35
+ end
36
+ end
37
+ end
38
+
39
+ describe 'Blockquote' do
40
+ it 'should add > before/after each newline' do
41
+ 100.times do
42
+ md.blockquote( DoctorIpsum::Lorem.sentence(3), 5 ).split("\n").each do |x|
43
+ x[0..1].should eq('> ')
44
+ end
45
+ end
46
+ end
47
+ end
48
+
49
+ describe 'List' do
50
+ it 'should create unordered list' do
51
+ 100.times do
52
+ md.list( DoctorIpsum::Lorem.words(10) , 3, false).split("\n").each do |x|
53
+ x[0..1].should eq('* ')
54
+ end
55
+ end
56
+ end
57
+ it 'should create ordered list' do
58
+ 100.times do
59
+ md.list( DoctorIpsum::Lorem.words(10) , 3, true).split("\n").each.with_index do |x,i|
60
+ x[0..2].should eq((i+1).to_s+'. ')
61
+ end
62
+ end
63
+ end
64
+ end
65
+
66
+ describe 'Code block' do
67
+ pending 'Basic code block, Github flavor fencing, and code source'
68
+ end
69
+
70
+ describe 'Horizontal rules' do
71
+ it 'should produce 10 dashes' do
72
+ md.horizontal.should eq('-'*10)
73
+ end
74
+ end
75
+
76
+ describe 'Links' do
77
+ simple_link_regex = /\[[^\[\]]+\]\(http[s]?:\/\/[a-zA-Z0-9\/._-]+\s*(")?(?:[^\"]*\"\s*\)|\s*\))/
78
+ it "should produce correct (opinionated) link format" do
79
+ 100.times { md.link.should match(simple_link_regex) }
80
+ end
81
+ pending 'Add other link formats and reference links'
82
+ end
83
+
84
+ describe 'Images' do
85
+ simple_img_regex = /!\[[^\[\]]+\]\(http[s]?:\/\/[a-zA-Z0-9\/._-]+\s*(")?(?:[^\"]*\"\s*\)|\s*\))/
86
+ it 'should have correct image format' do
87
+ 100.times { md.image.should match(simple_img_regex) }
88
+ end
89
+
90
+ it 'should produce image with correct placehold.it dims' do
91
+ 100.times do
92
+ width,height = rand(200..500),rand(200..500)
93
+ md.image(width, height).should include(width.to_s+"x"+height.to_s)
94
+ end
95
+ end
96
+ pending 'images using local cache'
97
+ end
98
+
99
+ end
@@ -1,11 +1,11 @@
1
1
  require 'spec_helper'
2
2
  require 'doctor_ipsum'
3
3
 
4
- describe "DoctorIpsum paragraphs(s): " do
4
+ describe "DoctorIpsum paragraphs(s) and longer: " do
5
5
 
6
6
  let(:lorem) { DoctorIpsum::Lorem }
7
7
 
8
- describe 'Lorem Paragrah' do
8
+ describe 'Lorem Paragraph' do
9
9
  it 'should output String, not Array' do
10
10
  lorem.paragraph.class.should eq String
11
11
  lorem.paragraph.class.should_not eq Array
@@ -19,6 +19,20 @@ describe "DoctorIpsum paragraphs(s): " do
19
19
  end
20
20
  end
21
21
 
22
+ describe 'Lorem Paragraphs' do
23
+ it 'should output String, not Array' do
24
+ lorem.paragraphs.class.should eq String
25
+ lorem.paragraphs.class.should_not eq Array
26
+ end
27
+
28
+ it 'should produce correct number of paragraphs' do
29
+ 100.times do
30
+ rn = rand(10)
31
+ lorem.paragraphs(rn,true).split("\n\n").count.should eq(rn)
32
+ end
33
+ end
34
+ end
35
+
22
36
  end
23
37
 
24
38
 
data/spec/word_spec.rb CHANGED
@@ -30,15 +30,6 @@ describe "DoctorIpsum word(s): " do
30
30
  lorem.words(rn).count.should eq(rn)
31
31
  end
32
32
  end
33
-
34
- it 'should resolve array values' do
35
- rn = (1..rand(10)+1).map { rand(10)+1 }
36
- lorem.words(rn).should_not raise_error
37
- end
38
-
39
- it 'should resolve range values' do
40
- lorem.words((1..rand(10)+1)).should_not raise_error
41
- end
42
33
  end
43
34
 
44
35
  describe 'Lorem words with supplemental' do
@@ -52,15 +43,6 @@ describe "DoctorIpsum word(s): " do
52
43
  lorem.words(rn,true).count.should eq(rn)
53
44
  end
54
45
  end
55
-
56
- it 'should resolve array values' do
57
- rn = (1..rand(10)+1).map { rand(10)+1 }
58
- lorem.words(rn,true).should_not raise_error
59
- end
60
-
61
- it 'should resolve range values' do
62
- lorem.words((1..rand(10)+1), true).should_not raise_error
63
- end
64
46
  end
65
47
 
66
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doctor_ipsum
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholas Hwang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-14 00:00:00.000000000 Z
11
+ date: 2013-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -83,9 +83,11 @@ files:
83
83
  - ipsum_lorem.md
84
84
  - lib/doctor_ipsum.rb
85
85
  - lib/doctor_ipsum/lorem.rb
86
+ - lib/doctor_ipsum/markdown.rb
86
87
  - lib/doctor_ipsum/version.rb
87
88
  - lib/locales/en.yml
88
89
  - spec/doctor_lorem_spec.rb
90
+ - spec/markdown_spec.rb
89
91
  - spec/paragraph_spec.rb
90
92
  - spec/sentence_spec.rb
91
93
  - spec/spec_helper.rb
@@ -116,6 +118,7 @@ specification_version: 4
116
118
  summary: '["Lorem Ipsum generator with Markdown formatting"]'
117
119
  test_files:
118
120
  - spec/doctor_lorem_spec.rb
121
+ - spec/markdown_spec.rb
119
122
  - spec/paragraph_spec.rb
120
123
  - spec/sentence_spec.rb
121
124
  - spec/spec_helper.rb