cmless 0.0.8 → 0.0.9

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cmless.rb +12 -1
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4500759e27ced354cca8b411ffda462bf234558d
4
- data.tar.gz: e939ee54802ca5362b5f1273265fc07d50ff71e1
3
+ metadata.gz: 88e89d58e76efcdb293c533e56ee350dcfba3e7b
4
+ data.tar.gz: 9cb8e84a3cc8e551aebca2257d1e0c9e2e37d537
5
5
  SHA512:
6
- metadata.gz: 393902304e99166f5ae52693a8feeee270947527874b4e58e3926456ab6a10220171d72ca84f15c025b344d4e34d8bc92bc0e479ec91121d0ae992ad443bae46
7
- data.tar.gz: 0e5f31d1d646220b824083f7626833416ef08819372d99f0165773b12b6b63ceaf402a211cba49c7840be959f9944794f6b0883529bbc9bc16592b9fe0578f56
6
+ metadata.gz: 00c6c89750850619db742a90853e5e20ebdf03db5918836c9012b2af3ed5eb89d6eba980855b0b59c47d04a0ffbc07dc4f748cc8d83466da8b7624eaa176f35b
7
+ data.tar.gz: 009c9ce026b0b94e30664c183ee92a0c994b9616489d70a3f20d3815951795e614be74ba5704066b57ab5ae539d36a6bdda97b486d8a005ec356be316b17535d
data/lib/cmless.rb CHANGED
@@ -5,12 +5,14 @@
5
5
  require 'redcarpet'
6
6
  require 'singleton'
7
7
  require 'nokogiri'
8
+ require 'cgi'
8
9
 
9
10
  # CMS alternative: Content in markdown / Extract HTML and data for display
10
11
  class Cmless
11
12
  attr_reader :path
12
13
  attr_reader :title
13
14
  attr_reader :title_html
15
+ attr_reader :toc_html
14
16
 
15
17
  private
16
18
 
@@ -19,7 +21,7 @@ class Cmless
19
21
  @path = self.class.path_from_file_path(file_path)
20
22
  Nokogiri::HTML(Markdowner.instance.render(File.read(file_path))).tap do |doc|
21
23
  html_methods = self.class.instance_methods
22
- .select { |method| method.to_s.match(/\_html$/) }
24
+ .select { |method| method.to_s.match(/\_html$/) } - [:toc_html]
23
25
 
24
26
  doc.xpath('//h1').first.tap do |h1|
25
27
  @title_html = h1.inner_html
@@ -28,6 +30,15 @@ class Cmless
28
30
  html_methods.delete(:title_html)
29
31
  end
30
32
 
33
+ doc.xpath('//h3|//h4|//h5|//h6|//h7|//h8|//h9').tap do |hs|
34
+ inner = hs.map do |h|
35
+ escaped = CGI.escapeHTML(h.text)
36
+ hash = '#' + CGI.escapeHTML(h.attribute('id').to_s)
37
+ "<li><a href='#{hash}'>#{escaped}</a></li>"
38
+ end.join("\n")
39
+ @toc_html = inner.empty? ? '' : "<ol>#{inner}</ol>\n"
40
+ end
41
+
31
42
  if html_methods.include?(:head_html)
32
43
  @head_html = Cmless.extract_head_html(doc)
33
44
  html_methods.delete(:head_html)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cmless
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chuck McCallum
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-16 00:00:00.000000000 Z
11
+ date: 2015-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redcarpet