Skip to content

Commit e0cf04b

Browse files
committed
upgrade slate docs lib
1 parent a1e8831 commit e0cf04b

File tree

16 files changed

+374
-231
lines changed

16 files changed

+374
-231
lines changed

Gemfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1+
ruby '>=2.3.1'
12
source 'https://rubygems.org'
23

34
# Middleman
45
gem 'middleman', '~>4.2.1'
56
gem 'middleman-syntax', '~> 3.0.0'
67
gem 'middleman-autoprefixer', '~> 2.7.0'
78
gem "middleman-sprockets", "~> 4.1.0"
8-
gem "middleman-livereload"
99
gem 'rouge', '~> 2.0.5'
10-
#gem 'redcarpet', '~> 3.4.0'
11-
gem 'maruku'
10+
gem 'redcarpet', '~> 3.4.0'
11+
gem 'nokogiri', '~> 1.6.8'

Gemfile.lock

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,7 @@ GEM
2020
concurrent-ruby (1.0.4)
2121
contracts (0.13.0)
2222
dotenv (2.2.0)
23-
em-websocket (0.5.1)
24-
eventmachine (>= 0.12.9)
25-
http_parser.rb (~> 0.6.0)
2623
erubis (2.7.0)
27-
eventmachine (1.2.3)
2824
execjs (2.7.0)
2925
fast_blank (1.0.0)
3026
fastimage (2.0.1)
@@ -35,13 +31,11 @@ GEM
3531
hamster (3.0.0)
3632
concurrent-ruby (~> 1.0)
3733
hashie (3.5.1)
38-
http_parser.rb (0.6.0)
3934
i18n (0.7.0)
4035
kramdown (1.13.2)
4136
listen (3.0.8)
4237
rb-fsevent (~> 0.9, >= 0.9.4)
4338
rb-inotify (~> 0.9, >= 0.9.7)
44-
maruku (0.7.3)
4539
memoist (0.15.0)
4640
middleman (4.2.1)
4741
coffee-script (~> 2.2)
@@ -79,17 +73,16 @@ GEM
7973
servolux
8074
tilt (~> 2.0)
8175
uglifier (~> 3.0)
82-
middleman-livereload (3.4.6)
83-
em-websocket (~> 0.5.1)
84-
middleman-core (>= 3.3)
85-
rack-livereload (~> 0.3.15)
8676
middleman-sprockets (4.1.0)
8777
middleman-core (~> 4.0)
8878
sprockets (>= 3.0)
8979
middleman-syntax (3.0.0)
9080
middleman-core (>= 3.2)
9181
rouge (~> 2.0)
82+
mini_portile2 (2.1.0)
9283
minitest (5.10.1)
84+
nokogiri (1.6.8.1)
85+
mini_portile2 (~> 2.1.0)
9386
padrino-helpers (0.13.3.3)
9487
i18n (~> 0.6, >= 0.6.7)
9588
padrino-support (= 0.13.3.3)
@@ -99,11 +92,10 @@ GEM
9992
parallel (1.10.0)
10093
public_suffix (2.0.5)
10194
rack (2.0.1)
102-
rack-livereload (0.3.16)
103-
rack
10495
rb-fsevent (0.9.8)
10596
rb-inotify (0.9.8)
10697
ffi (>= 0.5.0)
98+
redcarpet (3.4.0)
10799
rouge (2.0.7)
108100
sass (3.4.23)
109101
servolux (0.12.0)
@@ -122,13 +114,16 @@ PLATFORMS
122114
ruby
123115

124116
DEPENDENCIES
125-
maruku
126117
middleman (~> 4.2.1)
127118
middleman-autoprefixer (~> 2.7.0)
128-
middleman-livereload
129119
middleman-sprockets (~> 4.1.0)
130120
middleman-syntax (~> 3.0.0)
121+
nokogiri (~> 1.6.8)
122+
redcarpet (~> 3.4.0)
131123
rouge (~> 2.0.5)
132124

125+
RUBY VERSION
126+
ruby 2.4.0p0
127+
133128
BUNDLED WITH
134-
1.14.6
129+
1.15.3

Vagrantfile

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ Vagrant.configure(2) do |config|
55
config.vm.provision "bootstrap",
66
type: "shell",
77
inline: <<-SHELL
8+
sudo apt-add-repository ppa:brightbox/ruby-ng
89
sudo apt-get update
9-
sudo apt-get install -yq ruby2.0 ruby2.0-dev pkg-config build-essential nodejs git libxml2-dev libxslt-dev
10+
sudo apt-get install -yq ruby2.4 ruby2.4-dev
11+
sudo apt-get install -yq pkg-config build-essential nodejs git libxml2-dev libxslt-dev
1012
sudo apt-get autoremove -yq
11-
gem2.0 install --no-ri --no-rdoc bundler
13+
gem2.4 install --no-ri --no-rdoc bundler
1214
SHELL
1315

1416
# add the local user git config to the vm
@@ -34,6 +36,6 @@ Vagrant.configure(2) do |config|
3436
echo "Starting up middleman at http://localhost:4567"
3537
echo "If it does not come up, check the ~/middleman.log file for any error messages"
3638
cd /vagrant
37-
bundle exec middleman server --force-polling --latency=1 &> ~/middleman.log &
39+
bundle exec middleman server --watcher-force-polling --watcher-latency=1 &> ~/middleman.log &
3840
SHELL
39-
end
41+
end

config.rb

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
1+
# Unique header generation
2+
require './lib/unique_head.rb'
3+
14
# Markdown
2-
set :markdown_engine, :maruku
5+
set :markdown_engine, :redcarpet
36
set :markdown,
47
fenced_code_blocks: true,
58
smartypants: true,
69
disable_indented_code_blocks: true,
710
prettify: true,
811
tables: true,
912
with_toc_data: true,
10-
no_intra_emphasis: true
13+
no_intra_emphasis: true,
14+
renderer: UniqueHeadCounter
1115

1216
# Assets
1317
set :css_dir, 'stylesheets'
1418
set :js_dir, 'javascripts'
1519
set :images_dir, 'images'
1620
set :fonts_dir, 'fonts'
1721

18-
# Reload the browser automatically whenever files change
19-
activate :livereload
20-
2122
# Activate the syntax highlighter
2223
activate :syntax
2324
ready do
@@ -50,3 +51,7 @@
5051
# Deploy Configuration
5152
# If you want Middleman to listen on a different port, you can set that below
5253
set :port, 4567
54+
55+
helpers do
56+
require './lib/toc_data.rb'
57+
end

lib/multilang.rb

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
module Multilang
22
def block_code(code, full_lang_name)
3-
parts = full_lang_name.split('--')
4-
rouge_lang_name = parts[0] || ""
5-
super(code, rouge_lang_name).sub("highlight #{rouge_lang_name}") do |match|
6-
match + " tab-" + full_lang_name
3+
if full_lang_name
4+
parts = full_lang_name.split('--')
5+
rouge_lang_name = (parts) ? parts[0] : "" # just parts[0] here causes null ref exception when no language specified
6+
super(code, rouge_lang_name).sub("highlight #{rouge_lang_name}") do |match|
7+
match + " tab-" + full_lang_name
8+
end
9+
else
10+
super(code, full_lang_name)
711
end
812
end
913
end
1014

11-
#require 'middleman-core/renderers/redcarpet'
12-
#Middleman::Renderers::MiddlemanRedcarpetHTML.send :include, Multilang
13-
14-
#require 'middleman-core/renderers/maruku'
15-
#Middleman::Renderers::Maruku.send :include, Multilang
15+
require 'middleman-core/renderers/redcarpet'
16+
Middleman::Renderers::MiddlemanRedcarpetHTML.send :include, Multilang

lib/toc_data.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
require 'nokogiri'
2+
3+
def toc_data(page_content)
4+
html_doc = Nokogiri::HTML::DocumentFragment.parse(page_content)
5+
6+
# get a flat list of headers
7+
headers = []
8+
html_doc.css('h1, h2, h3').each do |header|
9+
headers.push({
10+
id: header.attribute('id').to_s,
11+
content: header.children,
12+
level: header.name[1].to_i,
13+
children: []
14+
})
15+
end
16+
17+
[3,2].each do |header_level|
18+
header_to_nest = nil
19+
headers = headers.reject do |header|
20+
if header[:level] == header_level
21+
header_to_nest[:children].push header if header_to_nest
22+
true
23+
else
24+
header_to_nest = header if header[:level] < header_level
25+
false
26+
end
27+
end
28+
end
29+
headers
30+
end

lib/unique_head.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Unique header generation
2+
require 'middleman-core/renderers/redcarpet'
3+
class UniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML
4+
def initialize
5+
super
6+
@head_count = {}
7+
end
8+
def header(text, header_level)
9+
friendly_text = text.parameterize
10+
@head_count[friendly_text] ||= 0
11+
@head_count[friendly_text] += 1
12+
if @head_count[friendly_text] > 1
13+
friendly_text += "-#{@head_count[friendly_text]}"
14+
end
15+
return "<h#{header_level} id='#{friendly_text}'>#{text}</h#{header_level}>"
16+
end
17+
end

0 commit comments

Comments
 (0)