blogue 0.0.1

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.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/README.md +99 -0
  4. data/Rakefile +32 -0
  5. data/app/models/blogue/post.rb +105 -0
  6. data/lib/blogue/engine.rb +18 -0
  7. data/lib/blogue/version.rb +3 -0
  8. data/lib/blogue.rb +34 -0
  9. data/lib/kramdown/converter/blogue.rb +13 -0
  10. data/lib/tasks/blogue_tasks.rake +4 -0
  11. data/test/dummy/README.rdoc +28 -0
  12. data/test/dummy/Rakefile +6 -0
  13. data/test/dummy/app/controllers/application_controller.rb +5 -0
  14. data/test/dummy/app/controllers/posts_controller.rb +9 -0
  15. data/test/dummy/app/models/post.rb +2 -0
  16. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  17. data/test/dummy/app/views/posts/show.html.erb +9 -0
  18. data/test/dummy/bin/bundle +3 -0
  19. data/test/dummy/bin/rails +4 -0
  20. data/test/dummy/bin/rake +4 -0
  21. data/test/dummy/config/application.rb +31 -0
  22. data/test/dummy/config/boot.rb +5 -0
  23. data/test/dummy/config/environment.rb +5 -0
  24. data/test/dummy/config/environments/development.rb +27 -0
  25. data/test/dummy/config/environments/production.rb +80 -0
  26. data/test/dummy/config/environments/test.rb +36 -0
  27. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  28. data/test/dummy/config/initializers/blogue.rb +1 -0
  29. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  30. data/test/dummy/config/initializers/inflections.rb +16 -0
  31. data/test/dummy/config/initializers/mime_types.rb +5 -0
  32. data/test/dummy/config/initializers/secret_token.rb +12 -0
  33. data/test/dummy/config/initializers/session_store.rb +3 -0
  34. data/test/dummy/config/initializers/wrap_parameters.rb +9 -0
  35. data/test/dummy/config/locales/en.yml +23 -0
  36. data/test/dummy/config/routes.rb +5 -0
  37. data/test/dummy/config.ru +4 -0
  38. data/test/dummy/log/test.log +3728 -0
  39. data/test/dummy/public/404.html +58 -0
  40. data/test/dummy/public/422.html +58 -0
  41. data/test/dummy/public/500.html +57 -0
  42. data/test/dummy/public/favicon.ico +0 -0
  43. data/test/dummy/tmp/cache/assets/test/sprockets/88c7acce0f27ad4785c977981dcffdbd +0 -0
  44. data/test/dummy/tmp/cache/assets/test/sprockets/f59336706d1f8f55cfacfc5e139dfd9a +0 -0
  45. data/test/fixtures/posts/assets/dogue.jpg +0 -0
  46. data/test/fixtures/posts/code-block.md +7 -0
  47. data/test/fixtures/posts/header-title.md +9 -0
  48. data/test/fixtures/posts/meta.md +14 -0
  49. data/test/fixtures/posts/minimal-post.md +10 -0
  50. data/test/integration/configuration_test.rb +18 -0
  51. data/test/models/blogue/post_test.rb +51 -0
  52. data/test/test_helper.rb +10 -0
  53. metadata +192 -0
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/404.html -->
52
+ <div class="dialog">
53
+ <h1>The page you were looking for doesn't exist.</h1>
54
+ <p>You may have mistyped the address or the page may have moved.</p>
55
+ </div>
56
+ <p>If you are the application owner check the logs for more information.</p>
57
+ </body>
58
+ </html>
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/422.html -->
52
+ <div class="dialog">
53
+ <h1>The change you wanted was rejected.</h1>
54
+ <p>Maybe you tried to change something you didn't have access to.</p>
55
+ </div>
56
+ <p>If you are the application owner check the logs for more information.</p>
57
+ </body>
58
+ </html>
@@ -0,0 +1,57 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/500.html -->
52
+ <div class="dialog">
53
+ <h1>We're sorry, but something went wrong.</h1>
54
+ </div>
55
+ <p>If you are the application owner check the logs for more information.</p>
56
+ </body>
57
+ </html>
File without changes
@@ -0,0 +1,7 @@
1
+ # Code block post
2
+
3
+ ~~~ruby
4
+ def foo
5
+ 'foo'
6
+ end
7
+ ~~~
@@ -0,0 +1,9 @@
1
+ # A title header
2
+
3
+ This belief has arisen from long observation of the facts of life. Get Hold of
4
+ The Power of Words. Conquer. Find the escalator. Is Our Spirit In Our Work?
5
+ Salivate. Misstatements. Shave. The most powerful human secret. Get Hold of The
6
+ Power of Words. You climb. You climb. Get to know the intricacies of shipping.
7
+ What to write on the top of. Shoulder. Wild. KEEP. Was your ancestor in the
8
+ Army? Find out what he did, where he fought, and what diseases he. There are
9
+ many breakfast. Shake. My.
@@ -0,0 +1,14 @@
1
+ # A title header
2
+
3
+ Express elegance and communication power through your. Whenever he goes to the
4
+ Casino, he always leaves. Debt. Wavy. Beautiful, rugged picture frames. Realize
5
+ that searching. Being aggressive to other dogs. He's no other than. Help. SWEET
6
+ PUMPKIN. Joy in your life by learning the art. Debt. Listening to (or reading)
7
+ these. Bird. Help. ANYTHING THAT IS FERMENTING! Jet Ski Business. Once you begin
8
+ to harvest your own honey you will feel incredibly rewarded. It's normal, and
9
+ appropriate for a parent. You are not in control of the things.
10
+
11
+ <!--meta
12
+ title: A title provided in meta
13
+ date: "1986-12-12 12:12:12 UTC"
14
+ -->
@@ -0,0 +1,10 @@
1
+ Use a "Bluff" technique. THIS IS WHAT IS. Dread probability. Have you ever
2
+ made a phone call to a man and later regretted it? Have you ever hesitated
3
+ before. Wavy. Signed card in wallet. A signed card appears from your wallet!
4
+ No. What foods you can. Cement. Good. All-embracing love. Learn the TOP 5
5
+ topics of conversation that people just LOVE talking. Excuse. My. Never Did
6
+ Because You Didn t. 11 surprising tasks. Issues for Teens Relating to Being.
7
+ Incredible regulatory systems, Wavy. I love popular piano. Ever wondered how
8
+ old a particular piece of furniture is? Easily recover all the treasure that
9
+ your dowsing locates -- in a number of different ways. YOU. Painfully Wide
10
+ Stools.
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ class ConfigurationTest < ActionDispatch::IntegrationTest
4
+ test 'renders markdown with kramdown' do
5
+ get '/header-title'
6
+ assert_match '<h1 id="a-title-header">A title header</h1>', response.body
7
+ end
8
+
9
+ test 'renders codeblocks with rouge' do
10
+ get '/code-block'
11
+ assert_match '<span class="k">def</span>', response.body
12
+ end
13
+
14
+ test 'adds [posts_path]/assets to rails asset paths' do
15
+ get '/assets/dogue.jpg'
16
+ assert_equal 'image/jpeg', response.content_type.to_s
17
+ end
18
+ end
@@ -0,0 +1,51 @@
1
+ require 'test_helper'
2
+
3
+ module Blogue
4
+ class PostTest < ActiveSupport::TestCase
5
+ test 'sort_posts reverse-sorts posts by time' do
6
+ post_a = OpenStruct.new(time: 3.hours.ago)
7
+ post_b = OpenStruct.new(time: 2.hours.ago)
8
+ array = [post_a, post_b]
9
+ assert_equal [post_b, post_a], array.sort{|a, b| Post.sort_posts(a, b)}
10
+ end
11
+
12
+ test 'extract_post_id extracts id from path' do
13
+ assert_equal 'blogue-post',
14
+ Post.extract_post_id('app/posts/blogue-post.md')
15
+ end
16
+
17
+ test 'extract_post_id extracts id from path with multiple extensions' do
18
+ assert_equal 'blogue-post',
19
+ Post.extract_post_id('app/posts/blogue-post.md.erb')
20
+ end
21
+
22
+ test 'finds post by id' do
23
+ assert Post.find('minimal-post')
24
+ end
25
+
26
+ test 'uses filename as title when no other alternative' do
27
+ assert_equal 'Minimal post', Post.find('minimal-post').title
28
+ end
29
+
30
+ test 'uses markdown header as title if present' do
31
+ assert_equal 'A title header', Post.find('header-title').title
32
+ end
33
+
34
+ test 'uses meta title if present' do
35
+ assert_equal 'A title provided in meta', Post.find('meta').title
36
+ end
37
+
38
+ test 'uses file creation time when no meta date' do
39
+ assert_equal '2013-10-19 19:54:41 UTC',
40
+ Post.find('minimal-post').time.utc.to_s
41
+ end
42
+
43
+ test 'uses time from meta when given' do
44
+ assert_equal '1986-12-12 12:12:12 UTC', Post.find('meta').time.utc.to_s
45
+ end
46
+
47
+ test 'date returns date part of time' do
48
+ assert_equal '1986-12-12', Post.find('meta').date.to_s
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,10 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require 'pry'
5
+
6
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
7
+ require "rails/test_help"
8
+
9
+ Rails.backtrace_cleaner.remove_silencers!
10
+ Blogue.posts_path = File.expand_path('../fixtures/posts', __FILE__)
metadata ADDED
@@ -0,0 +1,192 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: blogue
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Maxim Chernyak
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 4.0.1.rc1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 4.0.1.rc1
27
+ - !ruby/object:Gem::Dependency
28
+ name: kramdown
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rouge
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: If it wasn't in BLOGUE, it wasn't in blogue.
70
+ email:
71
+ - madfancier@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - app/models/blogue/post.rb
77
+ - lib/blogue/engine.rb
78
+ - lib/blogue/version.rb
79
+ - lib/blogue.rb
80
+ - lib/kramdown/converter/blogue.rb
81
+ - lib/tasks/blogue_tasks.rake
82
+ - LICENSE
83
+ - Rakefile
84
+ - README.md
85
+ - test/dummy/app/controllers/application_controller.rb
86
+ - test/dummy/app/controllers/posts_controller.rb
87
+ - test/dummy/app/models/post.rb
88
+ - test/dummy/app/views/layouts/application.html.erb
89
+ - test/dummy/app/views/posts/show.html.erb
90
+ - test/dummy/bin/bundle
91
+ - test/dummy/bin/rails
92
+ - test/dummy/bin/rake
93
+ - test/dummy/config/application.rb
94
+ - test/dummy/config/boot.rb
95
+ - test/dummy/config/environment.rb
96
+ - test/dummy/config/environments/development.rb
97
+ - test/dummy/config/environments/production.rb
98
+ - test/dummy/config/environments/test.rb
99
+ - test/dummy/config/initializers/backtrace_silencers.rb
100
+ - test/dummy/config/initializers/blogue.rb
101
+ - test/dummy/config/initializers/filter_parameter_logging.rb
102
+ - test/dummy/config/initializers/inflections.rb
103
+ - test/dummy/config/initializers/mime_types.rb
104
+ - test/dummy/config/initializers/secret_token.rb
105
+ - test/dummy/config/initializers/session_store.rb
106
+ - test/dummy/config/initializers/wrap_parameters.rb
107
+ - test/dummy/config/locales/en.yml
108
+ - test/dummy/config/routes.rb
109
+ - test/dummy/config.ru
110
+ - test/dummy/log/test.log
111
+ - test/dummy/public/404.html
112
+ - test/dummy/public/422.html
113
+ - test/dummy/public/500.html
114
+ - test/dummy/public/favicon.ico
115
+ - test/dummy/Rakefile
116
+ - test/dummy/README.rdoc
117
+ - test/dummy/tmp/cache/assets/test/sprockets/88c7acce0f27ad4785c977981dcffdbd
118
+ - test/dummy/tmp/cache/assets/test/sprockets/f59336706d1f8f55cfacfc5e139dfd9a
119
+ - test/fixtures/posts/assets/dogue.jpg
120
+ - test/fixtures/posts/code-block.md
121
+ - test/fixtures/posts/header-title.md
122
+ - test/fixtures/posts/meta.md
123
+ - test/fixtures/posts/minimal-post.md
124
+ - test/integration/configuration_test.rb
125
+ - test/models/blogue/post_test.rb
126
+ - test/test_helper.rb
127
+ homepage: http://github.com/maxim/blogue
128
+ licenses: []
129
+ metadata: {}
130
+ post_install_message:
131
+ rdoc_options: []
132
+ require_paths:
133
+ - lib
134
+ required_ruby_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ requirements: []
145
+ rubyforge_project:
146
+ rubygems_version: 2.1.9
147
+ signing_key:
148
+ specification_version: 4
149
+ summary: Small static blog engine for Rails
150
+ test_files:
151
+ - test/dummy/app/controllers/application_controller.rb
152
+ - test/dummy/app/controllers/posts_controller.rb
153
+ - test/dummy/app/models/post.rb
154
+ - test/dummy/app/views/layouts/application.html.erb
155
+ - test/dummy/app/views/posts/show.html.erb
156
+ - test/dummy/bin/bundle
157
+ - test/dummy/bin/rails
158
+ - test/dummy/bin/rake
159
+ - test/dummy/config/application.rb
160
+ - test/dummy/config/boot.rb
161
+ - test/dummy/config/environment.rb
162
+ - test/dummy/config/environments/development.rb
163
+ - test/dummy/config/environments/production.rb
164
+ - test/dummy/config/environments/test.rb
165
+ - test/dummy/config/initializers/backtrace_silencers.rb
166
+ - test/dummy/config/initializers/blogue.rb
167
+ - test/dummy/config/initializers/filter_parameter_logging.rb
168
+ - test/dummy/config/initializers/inflections.rb
169
+ - test/dummy/config/initializers/mime_types.rb
170
+ - test/dummy/config/initializers/secret_token.rb
171
+ - test/dummy/config/initializers/session_store.rb
172
+ - test/dummy/config/initializers/wrap_parameters.rb
173
+ - test/dummy/config/locales/en.yml
174
+ - test/dummy/config/routes.rb
175
+ - test/dummy/config.ru
176
+ - test/dummy/log/test.log
177
+ - test/dummy/public/404.html
178
+ - test/dummy/public/422.html
179
+ - test/dummy/public/500.html
180
+ - test/dummy/public/favicon.ico
181
+ - test/dummy/Rakefile
182
+ - test/dummy/README.rdoc
183
+ - test/dummy/tmp/cache/assets/test/sprockets/88c7acce0f27ad4785c977981dcffdbd
184
+ - test/dummy/tmp/cache/assets/test/sprockets/f59336706d1f8f55cfacfc5e139dfd9a
185
+ - test/fixtures/posts/assets/dogue.jpg
186
+ - test/fixtures/posts/code-block.md
187
+ - test/fixtures/posts/header-title.md
188
+ - test/fixtures/posts/meta.md
189
+ - test/fixtures/posts/minimal-post.md
190
+ - test/integration/configuration_test.rb
191
+ - test/models/blogue/post_test.rb
192
+ - test/test_helper.rb