jekyll: add include_remote plugin

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
CrazyMax 2022-07-20 12:46:43 +02:00
parent f3be551c98
commit d7618ccc44
No known key found for this signature in database
GPG Key ID: 3248E46B6BB8C7F7
1 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,54 @@
module Jekyll
class IncludeRemoteTag < Liquid::Tag
def initialize(tag_name, params, tokens)
@page, @line_start, @line_end = params.split
@line_start, @line_end = resolve_line_numbers(@line_start, @line_end)
super
end
def render(context)
site = context.registers[:site]
page = context.registers[:page]
beginning_time = Time.now
Jekyll.logger.info "Starting plugin include_remote.rb..."
if context[@page.strip]
@page = context[@page.strip]
end
inc = File.join("_includes", @page)
Jekyll.logger.info " Inject #{inc} to #{page['path']}"
lines = File.readlines(inc)[@line_start..@line_end]
site.config['defaults'].each do |default|
if default['scope']['path'] == inc
page['edit_url'] = default['values']['edit_url']
page['issue_url'] = default['values']['issue_url']
Jekyll.logger.info " edit_url: #{page['edit_url']}"
Jekyll.logger.info " issue_url: #{page['issue_url']}"
break
end
end
end_time = Time.now
Jekyll.logger.info "done in #{(end_time - beginning_time)} seconds"
lines.join
end
def resolve_line_numbers(first, last)
if first.nil? && last.nil?
first = 0
last = -1
elsif last.nil?
last = first
end
[first.to_i, last.to_i]
end
end
end
Liquid::Template.register_tag('include_remote', Jekyll::IncludeRemoteTag)