summaryrefslogtreecommitdiffstats
path: root/blog/_plugins/prev_next.rb
diff options
context:
space:
mode:
Diffstat (limited to 'blog/_plugins/prev_next.rb')
-rw-r--r--blog/_plugins/prev_next.rb57
1 files changed, 57 insertions, 0 deletions
diff --git a/blog/_plugins/prev_next.rb b/blog/_plugins/prev_next.rb
new file mode 100644
index 0000000..7e9c983
--- /dev/null
+++ b/blog/_plugins/prev_next.rb
@@ -0,0 +1,57 @@
+require 'pry-byebug'
+
+module Jekyll
+ class PrevNextTag < Liquid::Tag
+
+ def initialize(tag_name, text, tokens)
+ super
+ @tag = tag_name
+ @text = text
+ end
+
+ def render(context)
+ page = context['page']
+ other_page = case @tag
+ when "link_to_prev_page" then find_prev(page)
+ when "link_to_next_page" then find_next(page)
+ else nil
+ end
+
+ if other_page
+ %Q{<a href="#{other_page['url']}">#{@text} #{other_page['title']}</a>}
+ else
+ ""
+ end
+ end
+
+ private
+
+ def find_prev(obj)
+ n = obj.previous
+ loop do
+ if n && n['lang'] != obj['lang']
+ n = n.previous
+ else
+ break
+ end
+ end
+ return n
+ end
+
+ def find_next(obj)
+ n = obj.next
+ loop do
+ if n && n['lang'] != obj['lang']
+ n = n.next
+ else
+ break
+ end
+ end
+ return n
+ end
+
+ end
+end
+
+Liquid::Template.register_tag('link_to_next_page', Jekyll::PrevNextTag)
+Liquid::Template.register_tag('link_to_prev_page', Jekyll::PrevNextTag)