Repository navigation
Expand file tree
/
Copy pathinclude_remote.rb
More file actions
54 lines (43 loc) · 1.45 KB
/
Copy pathinclude_remote.rb
File metadata and controls
54 lines (43 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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)