2016-06-09 14:27:23 +02:00
|
|
|
#!/usr/bin/env ruby
|
2016-07-19 08:39:52 +02:00
|
|
|
# frozen_string_literal: true
|
2016-06-09 14:27:23 +02:00
|
|
|
|
2016-07-20 14:38:50 +02:00
|
|
|
require 'json'
|
2016-07-27 00:13:36 +02:00
|
|
|
require 'icalendar'
|
2016-07-20 14:38:50 +02:00
|
|
|
|
2016-08-30 22:11:33 +02:00
|
|
|
# Please @NoctuaNivalis
|
|
|
|
require 'socket'
|
|
|
|
|
2016-07-23 22:43:46 +02:00
|
|
|
#
|
|
|
|
#
|
|
|
|
# PREPROCESS
|
|
|
|
#
|
|
|
|
#
|
|
|
|
|
2016-07-20 14:38:50 +02:00
|
|
|
preprocess do
|
2016-07-20 17:52:56 +02:00
|
|
|
@items.find_all('/posts/**/*').each do |i|
|
2016-07-23 21:17:24 +02:00
|
|
|
year_str = %r{/(\d\d)-\d\d/}.match(i.identifier).captures[0]
|
|
|
|
academic_year = year_str.to_i
|
|
|
|
|
|
|
|
attr_hash = {
|
|
|
|
# Tag all posts with article (for Blogging helper)
|
|
|
|
kind: 'article',
|
|
|
|
academic_year: academic_year
|
|
|
|
}
|
|
|
|
|
|
|
|
i.update_attributes(attr_hash)
|
|
|
|
end
|
|
|
|
|
|
|
|
# academic_years is defined in archives.rb
|
|
|
|
academic_years.each do |year|
|
|
|
|
@items.create(
|
|
|
|
'',
|
2016-09-21 17:53:32 +02:00
|
|
|
{ academic_year: year, title: "Blog" },
|
2016-09-22 21:23:40 +02:00
|
|
|
"/blog/#{year}-#{year + 1}.html",
|
2016-07-23 21:17:24 +02:00
|
|
|
binary: false
|
|
|
|
)
|
2016-07-20 14:38:50 +02:00
|
|
|
end
|
2016-09-21 17:53:32 +02:00
|
|
|
|
|
|
|
academic_years_items[academic_years.max][:navigable] = true
|
2016-07-20 14:38:50 +02:00
|
|
|
end
|
|
|
|
|
2016-07-23 22:43:46 +02:00
|
|
|
#
|
|
|
|
#
|
|
|
|
# COMPILATION
|
|
|
|
#
|
|
|
|
#
|
2016-08-04 20:57:25 +02:00
|
|
|
compile '/feed.xml' do
|
2016-07-26 20:08:42 +02:00
|
|
|
filter :erb
|
2016-08-04 20:57:25 +02:00
|
|
|
write '/feed.xml'
|
2016-07-26 20:08:42 +02:00
|
|
|
end
|
2016-07-23 22:43:46 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# ARCHIVES
|
|
|
|
#
|
2016-09-22 21:23:40 +02:00
|
|
|
compile '/blog/*' do
|
2016-07-23 22:06:06 +02:00
|
|
|
layout '/archive_page.*'
|
2016-07-23 21:17:24 +02:00
|
|
|
layout '/generic.*'
|
|
|
|
layout '/default.*'
|
2016-07-19 10:27:27 +02:00
|
|
|
filter :erb
|
2016-07-23 21:17:24 +02:00
|
|
|
|
2016-07-18 09:24:24 +02:00
|
|
|
filter :relativize_paths, type: :html
|
2016-06-09 14:27:23 +02:00
|
|
|
end
|
|
|
|
|
2016-07-23 22:43:46 +02:00
|
|
|
#
|
2016-08-23 20:21:02 +02:00
|
|
|
# EVENTS
|
2016-07-23 22:43:46 +02:00
|
|
|
#
|
2016-08-23 20:21:02 +02:00
|
|
|
compile '/events/**/*' do
|
2016-06-09 15:04:10 +02:00
|
|
|
filter :kramdown
|
2016-07-18 09:24:24 +02:00
|
|
|
|
2016-07-19 10:27:27 +02:00
|
|
|
layout '/eventpost.*'
|
|
|
|
layout '/default.*'
|
2016-07-12 23:58:08 +02:00
|
|
|
filter :erb
|
2016-07-18 09:24:24 +02:00
|
|
|
|
|
|
|
filter :relativize_paths, type: :html
|
2016-06-09 15:04:10 +02:00
|
|
|
end
|
2016-06-09 14:27:23 +02:00
|
|
|
|
2016-08-23 20:21:02 +02:00
|
|
|
compile '/events/**/*', rep: :text do
|
2016-07-20 17:52:56 +02:00
|
|
|
filter :kramdown
|
|
|
|
filter :strip_html
|
|
|
|
end
|
|
|
|
|
2016-08-23 20:21:02 +02:00
|
|
|
compile '/events/**/main.md', rep: :ical do
|
|
|
|
end
|
|
|
|
|
|
|
|
compile '/events/**/*', rep: :ical do
|
2016-07-27 00:13:36 +02:00
|
|
|
filter :ical
|
|
|
|
end
|
|
|
|
|
2016-08-23 20:21:02 +02:00
|
|
|
#
|
|
|
|
# POSTS
|
|
|
|
#
|
|
|
|
compile '/posts/**/*' do
|
|
|
|
filter :kramdown
|
|
|
|
|
|
|
|
layout '/blogpost.*'
|
|
|
|
layout '/generic.*'
|
|
|
|
layout '/default.*'
|
|
|
|
|
|
|
|
filter :relativize_paths, type: :html
|
|
|
|
end
|
|
|
|
|
|
|
|
compile '/posts/**/*', rep: :text do
|
|
|
|
filter :kramdown
|
|
|
|
filter :strip_html
|
|
|
|
end
|
|
|
|
|
2016-07-23 22:43:46 +02:00
|
|
|
#
|
|
|
|
# GENERIC ERB PAGES
|
|
|
|
#
|
2016-08-04 20:57:25 +02:00
|
|
|
compile '/tipuesearch_content.js' do
|
2016-07-24 13:09:37 +02:00
|
|
|
filter :erb
|
|
|
|
end
|
|
|
|
|
2016-08-04 20:57:25 +02:00
|
|
|
compile '/**/*.ics' do
|
2016-07-27 00:13:36 +02:00
|
|
|
filter :erb
|
|
|
|
end
|
|
|
|
|
2016-07-23 22:06:06 +02:00
|
|
|
compile '/*.erb' do
|
|
|
|
layout '/generic.*'
|
|
|
|
layout '/default.*'
|
|
|
|
filter :erb
|
|
|
|
|
|
|
|
filter :relativize_paths, type: :html
|
|
|
|
end
|
|
|
|
|
2016-07-23 22:43:46 +02:00
|
|
|
#
|
|
|
|
# ASSETS
|
|
|
|
#
|
|
|
|
compile '/assets/scripts/**/*.coffee' do
|
|
|
|
filter :coffeescript
|
|
|
|
end
|
|
|
|
|
2016-08-02 18:31:40 +02:00
|
|
|
ignore '/assets/stylesheets/includes/**/*'
|
|
|
|
|
2016-07-23 22:43:46 +02:00
|
|
|
compile '/assets/stylesheets/**/*.scss' do
|
|
|
|
filter :sass, syntax: :scss
|
2016-08-30 22:11:33 +02:00
|
|
|
filter :autoprefixer if Socket.gethostname == 'abysm'
|
2016-07-23 22:43:46 +02:00
|
|
|
end
|
|
|
|
|
2016-08-30 23:20:15 +02:00
|
|
|
passthrough '/assets/images/*.{png,svg}'
|
2016-07-23 22:43:46 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# ROUTES
|
|
|
|
#
|
|
|
|
#
|
|
|
|
|
|
|
|
#
|
|
|
|
# ASSETS
|
|
|
|
#
|
2016-07-18 23:34:38 +02:00
|
|
|
route '/assets/stylesheets/**/*' do
|
|
|
|
"#{item.identifier.without_ext}.css"
|
|
|
|
end
|
|
|
|
|
|
|
|
route '/assets/scripts/**/*' do
|
|
|
|
"#{item.identifier.without_ext}.js"
|
|
|
|
end
|
|
|
|
|
2016-07-27 00:13:36 +02:00
|
|
|
# POSTS
|
2016-08-23 20:21:02 +02:00
|
|
|
route '/events/**/*', rep: :ical do
|
2016-07-27 00:13:36 +02:00
|
|
|
"#{item.identifier.without_ext}.ics"
|
|
|
|
end
|
|
|
|
|
2016-07-18 09:27:32 +02:00
|
|
|
route '/**/*.{erb,html,md}' do
|
2016-08-30 23:37:32 +02:00
|
|
|
if item.identifier.without_ext.to_s =~ %r{/index$}
|
|
|
|
"#{item.identifier.without_ext}.html"
|
|
|
|
else
|
|
|
|
"#{item.identifier.without_ext}/index.html"
|
|
|
|
end
|
2016-06-09 14:27:23 +02:00
|
|
|
end
|
|
|
|
|
2016-08-04 21:20:12 +02:00
|
|
|
route '/**/*' do
|
|
|
|
item.identifier.to_s
|
|
|
|
end
|
|
|
|
|
2016-07-23 22:43:46 +02:00
|
|
|
#
|
|
|
|
#
|
|
|
|
# LAYOUTS
|
|
|
|
#
|
|
|
|
#
|
|
|
|
|
2016-06-09 14:27:23 +02:00
|
|
|
layout '/**/*', :erb
|