Path: blob/main/_plugins/plaintext-slides.rb
1677 views
# frozen_string_literal: true12module Jekyll3module Generators4# Convert our slides to plaintext5# It's not a great convesion, the CSS classes are retained which are ugly6# But there's no good way to parse those out since they use a wildly nonstandard syntax7class PlaintextSlidesGenerator < Generator8SLIDE_LAYOUTS = %w[9tutorial_slides10base_slides11introduction_slides12tutorial_slides_ai4life13].freeze1415##16# Generate a plaintext version of the slides17# Params:18# +site+:: The +Jekyll::Site+ object19def generate(site)20# layout: tutorial_slides21# layout: base_slides2223site.pages.select { |page| SLIDE_LAYOUTS.include? page.data['layout'] }.each do |page|24dir = File.dirname(File.join('.', page.url))25page2 = Jekyll::Page.new(site, site.source, dir, page.name)26page2.data['layout'] = 'slides-plain'27page2.basename = if page2.data.key?('lang')28"slides-plain_#{page2.data['lang'].upcase}"29else30'slides-plain'31end32page2.content = page2.content.gsub(/^name:\s*([^ ]+)\s*$/) do33anchor = ::Regexp.last_match(1)3435"<span id=\"#{anchor.strip}\"><i class=\"fas fa-link\" aria-hidden=\"true\"></i> #{anchor}</span>"36end37if page2.data.key?('redirect_from')38page2.data['redirect_from'].map { |x| x.gsub!(%r{/slides}, '/slides-plain') }39end4041site.pages << page242end43end44end45end46end474849