diff options
Diffstat (limited to 'services/nuldoc/lib')
| -rw-r--r-- | services/nuldoc/lib/nuldoc.rb | 2 | ||||
| -rw-r--r-- | services/nuldoc/lib/nuldoc/about/parse.rb | 32 | ||||
| -rw-r--r-- | services/nuldoc/lib/nuldoc/about/staff_record.rb | 7 | ||||
| -rw-r--r-- | services/nuldoc/lib/nuldoc/commands/build.rb | 4 | ||||
| -rw-r--r-- | services/nuldoc/lib/nuldoc/commands/serve.rb | 2 | ||||
| -rw-r--r-- | services/nuldoc/lib/nuldoc/generators/about.rb | 5 | ||||
| -rw-r--r-- | services/nuldoc/lib/nuldoc/pages/about_page.rb | 21 |
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 |
