forked from datastax/ruby-driver
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rules
145 lines (122 loc) · 3.24 KB
/
Rules
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# encoding: utf-8
# A few helpful tips about the Rules file:
#
# * The string given to #compile and #route are matching patterns for
# identifiers--not for paths. Therefore, you can’t match on extension.
#
# * The order of rules is important: for each item, only the first matching
# rule is applied.
#
# * Item identifiers start and end with a slash (e.g. “/about/” for the file
# “content/about.html”). To select all children, grandchildren, … of an
# item, use the pattern “/about/*/”; “/about/*” will also select the parent,
# because “*” matches zero or more characters.
Compass.add_project_configuration 'nanoc/config.rb'
preprocess do
@items.each do |item|
path = item.identifier.sub('/', '') + '.nav'
if File.exists?(path)
nav = File.read(path).split("\n").map do |line|
item.identifier + line.chomp('/') + '/'
end
item[:nav] = item.children.reject {|i| i[:title].nil?}.sort do |a, b|
a = nav.index(a.identifier)
b = nav.index(b.identifier)
if a.nil? && !b.nil?
1
elsif b.nil? && !a.nil?
-1
else
a <=> b
end
end
else
item[:nav] = item.children.reject {|i| i[:title].nil?}.sort {|a, b| a[:title] <=> b[:title]}
end
end
end
compile '/json/*/' do
filter :erb
end
compile '/js/*/' do
filter :erb
end
compile '/css/*/' do
filter :erb
case item[:extension]
when 'css'
when 'scss'
filter :sass, Compass.sass_engine_options
end
filter :relativize_paths, :type => :css
end
compile '/features*' do
case item[:extension]
when 'feature'
filter :gherkin
when 'md'
filter :redcarpet, :renderer => Docs::GherkinFilter::Markdown, :options => {
:no_intra_emphasis => true,
:tables => true,
:fenced_code_blocks => true,
:autolink => true,
:space_after_headers => true,
:superscript => true,
:underline => true,
:highlight => true
}
filter :add_topics
end
filter :add_ids_to_headers
layout 'default'
filter :add_toc
filter :relativize_paths, :type => :html
filter :rubypants
# filter :beautify
end
compile 'api*' do
filter :add_ids_to_headers
layout 'default'
filter :relativize_paths, :type => :html
filter :rubypants
# filter :beautify
end
compile '/' do
filter :redcarpet, :renderer => Docs::GherkinFilter::Markdown, :options => {
:no_intra_emphasis => true,
:tables => true,
:fenced_code_blocks => true,
:autolink => true,
:space_after_headers => true,
:superscript => true,
:underline => true,
:highlight => true
}
filter :add_ids_to_headers
layout 'default'
filter :add_toc
filter :relativize_paths, :type => :html
filter :rubypants
end
route '/css/*/' do
item.identifier.chop + '.css'
end
route '/json/*/' do
item.identifier.chop + '.json'
end
route '/js/*/' do
item.identifier.chop + '.js'
end
passthrough '/fonts/*'
passthrough '/flash/*'
passthrough '/favicon.*'
route '/features*' do
item.identifier + 'index.html'
end
route 'api*' do
item.identifier.sub('api/cassandra', 'api') + 'index.html'
end
route '/' do
'/index.html'
end
layout '*', :erb