-
Notifications
You must be signed in to change notification settings - Fork 1
/
config.rb
105 lines (80 loc) · 2.32 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
# Activate and configure extensions
# https://middlemanapp.com/advanced/configuration/#configuring-extensions
activate :autoprefixer do |prefix|
prefix.browsers = "last 2 versions"
end
# 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/
# proxy(
# '/this-page-has-no-template.html',
# '/template-file.html',
# locals: {
# which_fake_page: 'Rendering a fake page with a local variable'
# },
# )
# Helpers
# Methods defined in the helpers block are available in templates
# https://middlemanapp.com/basics/helper-methods/
set :protocol, 'https://'
set :host, '2018.rubyconf.tw'
helpers do
def root_url
config[:protocol] + config[:host] + '/'
end
def inline_svg(name)
root = Middleman::Application.root
file_path = "#{root}/source/images/#{name}.svg"
return File.read(file_path) if File.exists? (file_path)
"(not found)"
end
def format_date(date)
date = Date.parse(date)
date.strftime("%b. %d. %Y")
end
def markdown(text)
options = {
link_attributes: { target: "_blank" },
space_after_headers: true,
fenced_code_blocks: true,
prettify: true
}
extensions = {
autolink: true,
superscript: true,
highlight: true,
no_intra_emphasis: true,
disable_indented_code_blocks: true
}
renderer = Redcarpet::Render::HTML.new(options)
markdown = Redcarpet::Markdown.new(renderer, extensions)
markdown.render(text).html_safe
end
def find_speaker_by(name, &block)
yield data.speaker.find { |speaker| speaker['name'] == name }
end
end
# Build-specific configuration
# https://middlemanapp.com/advanced/configuration/#environment-specific-settings
configure :build do
# Minify CSS on build
activate :minify_css
# Minify Javascript on build
activate :minify_javascript
# Relative assets needed to deploy to Github Pages
activate :relative_assets
end
activate :deploy do |deploy|
deploy.deploy_method = :git
deploy.build_before = true
end
activate :sprockets
sprockets.append_path File.join "#{root}", "bower_components"
activate :livereload, port: '4567'