aboutsummaryrefslogtreecommitdiffhomepage
path: root/services/nuldoc/lib
diff options
context:
space:
mode:
Diffstat (limited to 'services/nuldoc/lib')
-rw-r--r--services/nuldoc/lib/nuldoc.rb2
-rw-r--r--services/nuldoc/lib/nuldoc/about/parse.rb32
-rw-r--r--services/nuldoc/lib/nuldoc/about/staff_record.rb7
-rw-r--r--services/nuldoc/lib/nuldoc/commands/build.rb4
-rw-r--r--services/nuldoc/lib/nuldoc/commands/serve.rb2
-rw-r--r--services/nuldoc/lib/nuldoc/generators/about.rb5
-rw-r--r--services/nuldoc/lib/nuldoc/pages/about_page.rb21
7 files changed, 68 insertions, 5 deletions
diff --git a/services/nuldoc/lib/nuldoc.rb b/services/nuldoc/lib/nuldoc.rb
index cb94051d..57431bec 100644
--- a/services/nuldoc/lib/nuldoc.rb
+++ b/services/nuldoc/lib/nuldoc.rb
@@ -29,6 +29,8 @@ require_relative 'nuldoc/markdown/parse'
require_relative 'nuldoc/markdown/transform'
require_relative 'nuldoc/slide/slide'
require_relative 'nuldoc/slide/parse'
+require_relative 'nuldoc/about/staff_record'
+require_relative 'nuldoc/about/parse'
require_relative 'nuldoc/components/utils'
require_relative 'nuldoc/components/page_layout'
require_relative 'nuldoc/components/global_footer'
diff --git a/services/nuldoc/lib/nuldoc/about/parse.rb b/services/nuldoc/lib/nuldoc/about/parse.rb
new file mode 100644
index 00000000..9236807c
--- /dev/null
+++ b/services/nuldoc/lib/nuldoc/about/parse.rb
@@ -0,0 +1,32 @@
+require 'toml-rb'
+
+module Nuldoc
+ class StaffParser
+ def initialize(file_path)
+ @file_path = file_path
+ end
+
+ def parse
+ data = TomlRB.load_file(@file_path)
+ (data['staff'] || []).map do |entry|
+ StaffRecord.new(
+ date: parse_date(entry['date']),
+ event: entry['event'],
+ role: entry['role']
+ )
+ end
+ end
+
+ private
+
+ def parse_date(value)
+ if value.is_a?(Hash)
+ from = Revision.string_to_date(value['from'])
+ to = Revision.string_to_date(value['to'])
+ from..to
+ else
+ Revision.string_to_date(value)
+ end
+ end
+ end
+end
diff --git a/services/nuldoc/lib/nuldoc/about/staff_record.rb b/services/nuldoc/lib/nuldoc/about/staff_record.rb
new file mode 100644
index 00000000..ea456153
--- /dev/null
+++ b/services/nuldoc/lib/nuldoc/about/staff_record.rb
@@ -0,0 +1,7 @@
+module Nuldoc
+ StaffRecord = Data.define(:date, :event, :role) do
+ def sort_date
+ date.is_a?(Range) ? date.begin : date
+ end
+ end
+end
diff --git a/services/nuldoc/lib/nuldoc/commands/build.rb b/services/nuldoc/lib/nuldoc/commands/build.rb
index bec741d9..aaeda537 100644
--- a/services/nuldoc/lib/nuldoc/commands/build.rb
+++ b/services/nuldoc/lib/nuldoc/commands/build.rb
@@ -96,7 +96,9 @@ module Nuldoc
end
def build_about_page(slides)
- write_page(Generators::About.new(slides, @config).generate)
+ staff_file = File.join(Dir.pwd, @config.locations.content_dir, 'about', 'staff.toml')
+ staff_records = StaffParser.new(staff_file).parse
+ write_page(Generators::About.new(slides, staff_records, @config).generate)
end
def build_not_found_page(site)
diff --git a/services/nuldoc/lib/nuldoc/commands/serve.rb b/services/nuldoc/lib/nuldoc/commands/serve.rb
index c9fdf1af..8bcccf02 100644
--- a/services/nuldoc/lib/nuldoc/commands/serve.rb
+++ b/services/nuldoc/lib/nuldoc/commands/serve.rb
@@ -26,7 +26,7 @@ module Nuldoc
redirect_dest = redirect_path(site_name, pathname)
if redirect_dest
- res.status = 301
+ res.status = 302
res['Location'] = redirect_dest
next
end
diff --git a/services/nuldoc/lib/nuldoc/generators/about.rb b/services/nuldoc/lib/nuldoc/generators/about.rb
index d5b9dec4..59d68070 100644
--- a/services/nuldoc/lib/nuldoc/generators/about.rb
+++ b/services/nuldoc/lib/nuldoc/generators/about.rb
@@ -1,13 +1,14 @@
module Nuldoc
module Generators
class About
- def initialize(slides, config)
+ def initialize(slides, staff_records, config)
@slides = slides
+ @staff_records = staff_records
@config = config
end
def generate
- html = Pages::AboutPage.new(slides: @slides, config: @config).render
+ html = Pages::AboutPage.new(slides: @slides, staff_records: @staff_records, config: @config).render
Page.new(
root: html,
diff --git a/services/nuldoc/lib/nuldoc/pages/about_page.rb b/services/nuldoc/lib/nuldoc/pages/about_page.rb
index d2d3dfba..6c72ec09 100644
--- a/services/nuldoc/lib/nuldoc/pages/about_page.rb
+++ b/services/nuldoc/lib/nuldoc/pages/about_page.rb
@@ -1,14 +1,16 @@
module Nuldoc
module Pages
class AboutPage
- def initialize(slides:, config:)
+ def initialize(slides:, staff_records:, config:)
@slides = slides
+ @staff_records = staff_records
@config = config
end
def render
config = @config
sorted_slides = @slides.sort_by { |s| GeneratorUtils.published_date(s) }.reverse
+ sorted_staff = @staff_records.sort_by(&:sort_date).reverse
Components::PageLayout.new(
meta_copyright_year: config.site.copyright_year,
@@ -77,6 +79,23 @@ module Nuldoc
end
end
end
+ section do
+ h2 { text 'カンファレンススタッフ' }
+ ul do
+ sorted_staff.each do |record|
+ li do
+ if record.date.is_a?(Range)
+ from_str = Revision.date_to_string(record.date.begin)
+ to_str = Revision.date_to_string(record.date.end)
+ text "#{from_str}〜#{to_str}: #{record.event} (#{record.role})"
+ else
+ date_str = Revision.date_to_string(record.date)
+ text "#{date_str}: #{record.event} (#{record.role})"
+ end
+ end
+ end
+ end
+ end
end
end
end