slimdown 0.1.2 → 1.2.0

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
- SHA1:
3
- metadata.gz: 97a5dcee1b610ec49bd18729012ecb80fcf4732b
4
- data.tar.gz: c9257a530cc9fc29b3865dba758906e1704df776
2
+ SHA256:
3
+ metadata.gz: 3e845fd99a6108c1c7553637a96316710d824d93df0122260490363a2d91605d
4
+ data.tar.gz: a95a0cb693ed000c5881ea6d055f218180a3617f7c6adcdb95732053719f84b6
5
5
  SHA512:
6
- metadata.gz: 85cd40427c316a0c3d224ceb3fe7475352c62ef3d4f666b06a9c8b8fc44bfcb427e396ba9c198a40ab44b276486e5bfad06aa05bbe17b339402e76d074161f82
7
- data.tar.gz: f4f5ae9fd9c67402468d4f6c77327f79de8e8f37f208306695ad0404e5232c944eef5e484d4f114f1f612de3c9de9dc29824fa546ad2fec43d7b396953b3271d
6
+ metadata.gz: 20d859648791b40e2c65276582d55f4fdc68dffc61c5620cb1b9d74faf471c2841498a2a5f3df516faa03845de9e11ecabb19b001619cce4a505b3cc110c6e0c
7
+ data.tar.gz: c0a24227009eda9d6538af0130d867d920c9ea6b120f51fa1feeb03c0fe98e8f87e23a1dedf64f928253e5909a1d07a325e31e23be16bf31b3edcd898266a71b
@@ -1,10 +1,9 @@
1
1
  language: ruby
2
2
  cache: bundler
3
3
  rvm:
4
- - 1.9.3
5
- - 2.1.5
6
- - 2.2.2
7
- - jruby
4
+ - 2.2.3
5
+ - 2.3.1
6
+ # - jruby
8
7
  before_install:
9
8
  - gem update --system
10
9
  - gem --version
@@ -0,0 +1,43 @@
1
+ # Ruby Slimdown Changelog
2
+
3
+ ## [master]
4
+ [master]: https://github.com/APMG/ruby-slimdown/compare/1.1.0...HEAD
5
+
6
+ * Your contribution here!
7
+
8
+ ## [`1.1.0`] (2017-12-04)
9
+ [`1.1.0`]: https://github.com/APMG/ruby-slimdown/compare/1.0.2...1.1.0
10
+
11
+ * [#2](https://github.com/APMG/ruby-slimdown/pull/2): Added page parent method.
12
+ * [#3](https://github.com/APMG/ruby-slimdown/pull/3): Fixed mutation of `@absolute_path` in `Page`.
13
+
14
+ ## [`1.0.2`] (2017-03-13)
15
+ [`1.0.2`]: https://github.com/APMG/ruby-slimdown/compare/1.0.1...1.0.2
16
+
17
+ * Add support for arbitrary frontmatter via `Page#headers` method.
18
+
19
+ ## [`1.0.1`] (2015-07-07)
20
+ [`1.0.1`]: https://github.com/APMG/ruby-slimdown/compare/1.0.0...1.0.1
21
+
22
+ * Fix for case where no frontmatter.
23
+
24
+ ## [`1.0.0`] (2015-06-23)
25
+ [`1.0.0`]: https://github.com/APMG/ruby-slimdown/compare/0.1.2...1.0.0
26
+
27
+ * Same as 0.1.2, but marking as v1.0.0 to indicate SemVer support.
28
+
29
+ ## [`0.1.2`] (2015-06-18)
30
+ [`0.1.2`]: https://github.com/APMG/ruby-slimdown/compare/0.1.1...0.1.2
31
+
32
+ * Support hard line breaks with `<br />`.
33
+
34
+ ## [`0.1.1`] (2015-06-16)
35
+ [`0.1.1`]: https://github.com/APMG/ruby-slimdown/compare/0.1.0...0.1.1
36
+
37
+ * Don't assume files in `pages/`.
38
+ * Indicate required Ruby version.
39
+
40
+ ## [`0.1.0`] (2015-06-15)
41
+ [`0.1.0`]: https://github.com/APMG/ruby-slimdown/compare/c1c7481d493c444529fe40082fc23b935f20c55b...0.1.0
42
+
43
+ * Initial release
data/README.md CHANGED
@@ -28,41 +28,76 @@ Or install it yourself as:
28
28
  To add to your app, create a controller with one action, such as `show`. In that
29
29
  action, add code to pull in the action:
30
30
 
31
- class SlimdownController < ApplicationController
32
- def show
33
- @page = Slimdown::Page.find(params[:slug])
34
- end
35
- end
31
+ ```ruby
32
+ class SlimdownController < ApplicationController
33
+ def show
34
+ @page = Slimdown::Page.find(params[:slug])
35
+ end
36
+ end
37
+ ```
36
38
 
37
39
  Then add a view for the show action.
38
40
 
39
- <%= @page.body.to_html.html_safe %>
40
-
41
- <h2>Sibling Pages</h2>
42
- <ul>
43
- <% @page.siblings.each do |sibling| %>
44
- <li><%= link_to sibling.title, "/#{sibling.path}" %></li>
45
- <% end %>
46
- </ul>
47
-
48
- <h2>Child Pages</h2>
49
- <ul>
50
- <% @page.children.each do |child| %>
51
- <li><%= link_to child.title, "/#{child.path}" %></li>
52
- <% end %>
53
- </ul>
41
+ ```erb
42
+ <%= @page.body.to_html.html_safe %>
43
+
44
+ <h2>Sibling Pages</h2>
45
+ <ul>
46
+ <% @page.siblings.each do |sibling| %>
47
+ <li><%= link_to sibling.title, "/#{sibling.path}" %></li>
48
+ <% end %>
49
+ </ul>
50
+
51
+ <h2>Child Pages</h2>
52
+ <ul>
53
+ <% @page.children.each do |child| %>
54
+ <li><%= link_to child.title, "/#{child.path}" %></li>
55
+ <% end %>
56
+ </ul>
57
+ ```
54
58
 
55
59
  Add a route to direct all unhandled requests to your controller. Make sure that
56
- it is at the end of your routes.rb so it doesn't superseed other routes.
60
+ it is at the end of your routes.rb so it doesn't supersede other routes.
57
61
 
58
- get '/*slug', to: 'slimdown#show'
62
+ ```ruby
63
+ get '/*slug', to: 'slimdown#show'
64
+ ```
59
65
 
60
66
  Finally, add an initializer in `config/initializers/slimdown.rb` to set the path
61
67
  to your pages.
62
68
 
69
+ ```ruby
70
+ Slimdown.config do |c|
71
+ c.location = Rails.root.join('lib/pages')
72
+ end
73
+ ```
74
+
75
+ ## Testing
76
+
77
+ Testing using a controller spec is not possible because you are testing for an
78
+ arbitrary url. You can do a feature test with Capybara or friends. However,
79
+ given that you are just returning content, you can use a request spec. For
80
+ example, you have an about.md in your remote repo or lib/pages then in your
81
+ spec/requests/slimdown_request_spec.rb. Additionally, you can override the page
82
+ path for the test, allowing you to use a fixture directory.
83
+
84
+ ```ruby
85
+ RSpec.describe "Static Pages", type: :request do
86
+ before :each do
63
87
  Slimdown.config do |c|
64
- c.location = Rails.root.join('lib/pages')
88
+ c.location = Rails.root.join '/spec/fixtures/test_pages'
89
+ end
90
+ end
91
+
92
+ describe "GET /" do
93
+ it "#show" do
94
+ get "/about"
95
+ expect(response).to render_template(:show)
96
+ expect(response.status).to be(200)
65
97
  end
98
+ end
99
+ end
100
+ ```
66
101
 
67
102
 
68
103
  ## General notes
@@ -1,5 +1,6 @@
1
1
  module Slimdown
2
2
  # Exception class for Slimdown errors.
3
+ # TODO: On a major SemVer change, migrate to PageNotFoundException.
3
4
  class Exception < StandardError
4
5
  end
5
6
  end
@@ -1,11 +1,12 @@
1
1
  module Slimdown
2
2
  # The model representing a page
3
3
  class Page
4
-
5
4
  # The title from the document headers
6
5
  attr_reader :title
7
6
  # The template from the document headers
8
7
  attr_reader :template
8
+ # All the document headers
9
+ attr_reader :headers
9
10
 
10
11
  # Get new page object
11
12
  #
@@ -59,30 +60,33 @@ module Slimdown
59
60
  # @return [Array<Slimdown::Page>] a list of child pages.
60
61
  def children
61
62
  # Check to see whether dir exists.
62
- folder = @absolute_path
63
- folder.slice! '.md'
63
+ Slimdown::Folder.new(@absolute_path.chomp('.md')).pages
64
+ end
64
65
 
65
- Slimdown::Folder.new(folder).pages
66
+ # The parent of this document
67
+ #
68
+ # @return [<Slimdown::Page>|nil] the parent, if it exists
69
+ def parent
70
+ parent = File.expand_path('..', @absolute_path).concat('.md')
71
+
72
+ return nil unless File.file?(parent)
73
+
74
+ Slimdown::Page.new(parent)
66
75
  end
67
76
 
68
77
  # The relative path for this document.
69
78
  #
70
79
  # @return [String] the relative path, e.g. 'about/contact'
71
80
  def path
72
- loc = Slimdown.config.location
73
- relative = @absolute_path
74
- relative.slice! "#{loc}/"
75
- relative.slice! '.md'
76
-
77
- relative
81
+ @absolute_path.sub(%r{^#{Slimdown.config.location}/(.*)\.md}, '\1')
78
82
  end
79
83
 
80
- private
84
+ private
81
85
 
82
86
  def load_headers
83
- headers = @parsed_page.headers
84
- @title = headers['title']
85
- @template = headers['template']
87
+ @headers = @parsed_page.headers
88
+ @title = @headers['title']
89
+ @template = @headers['template']
86
90
  end
87
91
  end
88
92
  end
@@ -21,7 +21,10 @@ module Slimdown
21
21
  #
22
22
  # @return [Hash] document headers
23
23
  def headers
24
- YAML.load @header_text
24
+ head = {}
25
+ head = YAML.load @header_text unless @header_text == ''
26
+
27
+ head
25
28
  end
26
29
 
27
30
  # The parsed markdown document body.
@@ -48,7 +51,7 @@ module Slimdown
48
51
  part = :body
49
52
  elsif part == :header
50
53
  @header_text += line
51
- elsif part == :body
54
+ elsif part == :body || part == nil
52
55
  @body_text += line
53
56
  end
54
57
  end
@@ -1,4 +1,4 @@
1
1
  module Slimdown
2
2
  # The slimdown version
3
- VERSION = '0.1.2'
3
+ VERSION = '1.2.0'.freeze
4
4
  end
@@ -21,12 +21,12 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.required_ruby_version = '>= 1.9.3'
23
23
 
24
- spec.add_runtime_dependency 'kramdown', '~> 1.7'
24
+ spec.add_runtime_dependency 'kramdown', '~> 2.3'
25
25
 
26
26
  spec.add_development_dependency "bundler", "~> 1.9"
27
- spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "rake", "~> 12.0"
28
28
  spec.add_development_dependency "guard", "~> 2.12"
29
29
  spec.add_development_dependency "guard-rspec", "~> 4.5"
30
30
  spec.add_development_dependency "pry", "~> 0.10"
31
- spec.add_development_dependency "yard", "~> 0.8"
31
+ spec.add_development_dependency "yard", "~> 0.9.11"
32
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slimdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Johnston
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-06-18 00:00:00.000000000 Z
11
+ date: 2020-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '2.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '2.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '12.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
54
+ version: '12.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: guard
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0.8'
103
+ version: 0.9.11
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0.8'
110
+ version: 0.9.11
111
111
  description: A system for using Markdown from a folder and turning it into web pages.
112
112
  email:
113
113
  - wjohnston@mpr.org
@@ -119,6 +119,7 @@ files:
119
119
  - ".rspec"
120
120
  - ".travis.yml"
121
121
  - ".yardocops"
122
+ - CHANGELOG.md
122
123
  - Gemfile
123
124
  - Guardfile
124
125
  - LICENSE.txt
@@ -153,10 +154,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
154
  - !ruby/object:Gem::Version
154
155
  version: '0'
155
156
  requirements: []
156
- rubyforge_project:
157
- rubygems_version: 2.4.5
157
+ rubygems_version: 3.0.3
158
158
  signing_key:
159
159
  specification_version: 4
160
160
  summary: A system for using static Markdown for pages.
161
161
  test_files: []
162
- has_rdoc: