-
Notifications
You must be signed in to change notification settings - Fork 30
/
config.rb
122 lines (100 loc) · 2.89 KB
/
config.rb
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
# Activate and configure extensions
# https://middlemanapp.com/advanced/configuration/#configuring-extensions
require 'rouge'
require 'rouge/plugins/redcarpet'
class HTMLWithHighlight < Redcarpet::Render::HTML
include Rouge::Plugins::Redcarpet
end
set :markdown_engine, :redcarpet
set :markdown, :fenced_code_blocks => true, :smartypants => true, :with_toc_data => true, :underline => true, :hard_wrap => true, highlight: true
md_opts = {
renderer: HTMLWithHighlight.new,
:fenced_code_blocks => true,
:smartypants => true,
:underline => true,
:hard_wrap => true,
highlight: true
}
Slim::Embedded.options[:markdown] = md_opts
ALT_MD_RENDERER = Redcarpet::Markdown.new(HTMLWithHighlight, md_opts)
activate :autoprefixer do |prefix|
prefix.browsers = "last 2 versions"
end
activate :directory_indexes
activate :i18n
# Layouts
# https://middlemanapp.com/basics/layouts/
# Per-page layout changes
page '/*.xml', layout: false
page '/*.json', layout: false
page '/*.txt', layout: false
# With alternative layout
# page '/path/to/file.html', layout: 'other_layout'
# Proxy pages
# https://middlemanapp.com/advanced/dynamic-pages/
locales = %i(zh-Hans)
@app.data.highlights.each_key do |v|
ver = v[1..]
proxy "/highlights/#{ver}/index.html", "/highlights-template.html", locals: { version: ver }, locale: :en, ignore: true
locales.each do |lang|
proxy "/#{lang}/highlights/#{ver}/index.html", "/highlights-template.html", locals: { version: ver }, locale: lang, ignore: true
end
end
# Helpers
# Methods defined in the helpers block are available in templates
# https://middlemanapp.com/basics/helper-methods/
helpers do
def localized_path(path)
return path unless path.start_with? '/'
if I18n.locale == :en
path
else
"/#{I18n.locale}#{path}"
end
end
def download_link(version)
"https://dl-portal.iina.io/IINA.v#{version}.dmg"
end
def release_note_link(version)
"/release-note/#{version}.html"
end
def plugin_doc?
current_page.url.start_with? '/plugin/documentation/'
end
def doc_api_title(api)
params = if api.params.nil?
''
else
api.params.keys.join(', ')
end
if (api.type || 'method') == 'method'
"#{api.name}(#{params})"
else
api.name
end
end
def doc_api_type(api)
t = api.type || 'method'
{
'method' => 'Method',
'prop' => 'Property',
'readonly' => 'Readonly Property',
}[t]
end
def render_markdown(str)
ALT_MD_RENDERER.render(str).html_safe
end
end
# Build-specific configuration
# https://middlemanapp.com/advanced/configuration/#environment-specific-settings
# configure :build do
# activate :minify_css
# activate :minify_javascript
# end
activate :external_pipeline,
name: :webpack,
command: build? ? 'npm run build' : 'npm run start',
source: 'tmp/dist',
latency: 1
config[:js_dir] = 'assets/javascripts'
config[:css_dir] = 'assets/stylesheets'