From 1519b21b5a0da6448f09e5e119d1f6d2d052961f Mon Sep 17 00:00:00 2001 From: Ikillnukes Date: Wed, 20 Mar 2019 05:20:05 +0100 Subject: [PATCH 1/2] Added default_lang config property --- lib/jekyll/language-plugin/liquid_context.rb | 7 +++++-- lib/jekyll/language-plugin/tags/language.rb | 2 +- lib/jekyll/language_page.rb | 1 + lib/jekyll/patches/jekyll/page.rb | 18 ++++++++++++++++++ lib/jekyll/readers/language_page_reader.rb | 10 ++++++++++ lib/jekyll/readers/language_post_reader.rb | 2 ++ 6 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 lib/jekyll/patches/jekyll/page.rb diff --git a/lib/jekyll/language-plugin/liquid_context.rb b/lib/jekyll/language-plugin/liquid_context.rb index 112d08e..e90ba5d 100644 --- a/lib/jekyll/language-plugin/liquid_context.rb +++ b/lib/jekyll/language-plugin/liquid_context.rb @@ -10,9 +10,12 @@ def self.get_language_data(context) def self.get_language(context) language = context.registers[:page]['language'] - + # Jekyll.logger.info "LL-debug: ", context.registers[:page].to_json + default_lang = context.registers[:site].config["default_language"] + if language.to_s.empty? - raise Jekyll::LanguagePlugin::PluginError.new('No language specified for current page or post.') + # raise Jekyll::LanguagePlugin::PluginError.new('No language specified for current page or post.') + language = default_lang end language diff --git a/lib/jekyll/language-plugin/tags/language.rb b/lib/jekyll/language-plugin/tags/language.rb index 54f39b3..1412a86 100644 --- a/lib/jekyll/language-plugin/tags/language.rb +++ b/lib/jekyll/language-plugin/tags/language.rb @@ -27,7 +27,7 @@ def render(context) end end - Jekyll::LanguagePlugin::LiquidContext.get_language_string(context, key, tokens) + Jekyll::LanguagePlugin::LiquidContext.get_language_string(context, key, tokens) end end end diff --git a/lib/jekyll/language_page.rb b/lib/jekyll/language_page.rb index 57e42b0..1cc27b7 100644 --- a/lib/jekyll/language_page.rb +++ b/lib/jekyll/language_page.rb @@ -30,6 +30,7 @@ def url_placeholders end end + # Jekyll.logger.info "Lang-debug: ", result result end end diff --git a/lib/jekyll/patches/jekyll/page.rb b/lib/jekyll/patches/jekyll/page.rb new file mode 100644 index 0000000..ea43a6d --- /dev/null +++ b/lib/jekyll/patches/jekyll/page.rb @@ -0,0 +1,18 @@ +module Jekyll + class Page + # The generated directory into which the page will be placed + # upon generation. This is derived from the permalink or, if + # permalink is absent, will be '/' + # + # Returns the String destination directory. + def dir + # Jekyll.logger.info "Lang-debug: ", url + "; Data: " + data.to_s + if url.end_with?("/") + url + else + url_dir = File.dirname(url) + url_dir.end_with?("/") ? url_dir : "#{url_dir}/" + end + end + end +end \ No newline at end of file diff --git a/lib/jekyll/readers/language_page_reader.rb b/lib/jekyll/readers/language_page_reader.rb index c8c3d90..587794b 100644 --- a/lib/jekyll/readers/language_page_reader.rb +++ b/lib/jekyll/readers/language_page_reader.rb @@ -7,6 +7,8 @@ class LanguagePageReader < PageReader def read(files) read_orig(files).flat_map do |page| + # Jekyll.logger.info "Lang-debug: ", "Name: " + page.name + " => " + page.dir + lpages = [] #TODO: this is a bit hacky. It would be better to directly have access to @dir instance variable path = page.url_placeholders[:path] @@ -30,6 +32,14 @@ def read(files) # no languages -> do not add extended Page lpages << page end + + if (lpage.language or lpage.languages) and lpage["permalink"].nil? + # Jekyll.logger.info "Lang-debug: ", page.dir + page.name + # page['language'] = 'en' + lpages << page + end + + # Jekyll.logger.info "Lang-debug: ", lpages.to_json lpages end end diff --git a/lib/jekyll/readers/language_post_reader.rb b/lib/jekyll/readers/language_post_reader.rb index 2d0059a..33bb829 100644 --- a/lib/jekyll/readers/language_post_reader.rb +++ b/lib/jekyll/readers/language_post_reader.rb @@ -7,6 +7,8 @@ class LanguagePostReader < PostReader def read_content(dir, magic_dir, matcher) read_content_orig(dir, magic_dir, matcher).flat_map do |document| + # Jekyll.logger.info "Lang-debug: ", document.path + ldocument = LanguageDocument.new(document.path, { site: @site, collection: @site.posts }) ldocument.read From f00c28bb7184d80182b65c25b66ee7dce38cf4ee Mon Sep 17 00:00:00 2001 From: Ikillnukes Date: Wed, 20 Mar 2019 05:22:20 +0100 Subject: [PATCH 2/2] Removed debug statments --- lib/jekyll/language-plugin/liquid_context.rb | 2 -- lib/jekyll/language_page.rb | 1 - lib/jekyll/patches/jekyll/page.rb | 18 ------------------ lib/jekyll/readers/language_page_reader.rb | 8 ++------ lib/jekyll/readers/language_post_reader.rb | 2 -- 5 files changed, 2 insertions(+), 29 deletions(-) delete mode 100644 lib/jekyll/patches/jekyll/page.rb diff --git a/lib/jekyll/language-plugin/liquid_context.rb b/lib/jekyll/language-plugin/liquid_context.rb index e90ba5d..13e8456 100644 --- a/lib/jekyll/language-plugin/liquid_context.rb +++ b/lib/jekyll/language-plugin/liquid_context.rb @@ -10,11 +10,9 @@ def self.get_language_data(context) def self.get_language(context) language = context.registers[:page]['language'] - # Jekyll.logger.info "LL-debug: ", context.registers[:page].to_json default_lang = context.registers[:site].config["default_language"] if language.to_s.empty? - # raise Jekyll::LanguagePlugin::PluginError.new('No language specified for current page or post.') language = default_lang end diff --git a/lib/jekyll/language_page.rb b/lib/jekyll/language_page.rb index 1cc27b7..57e42b0 100644 --- a/lib/jekyll/language_page.rb +++ b/lib/jekyll/language_page.rb @@ -30,7 +30,6 @@ def url_placeholders end end - # Jekyll.logger.info "Lang-debug: ", result result end end diff --git a/lib/jekyll/patches/jekyll/page.rb b/lib/jekyll/patches/jekyll/page.rb deleted file mode 100644 index ea43a6d..0000000 --- a/lib/jekyll/patches/jekyll/page.rb +++ /dev/null @@ -1,18 +0,0 @@ -module Jekyll - class Page - # The generated directory into which the page will be placed - # upon generation. This is derived from the permalink or, if - # permalink is absent, will be '/' - # - # Returns the String destination directory. - def dir - # Jekyll.logger.info "Lang-debug: ", url + "; Data: " + data.to_s - if url.end_with?("/") - url - else - url_dir = File.dirname(url) - url_dir.end_with?("/") ? url_dir : "#{url_dir}/" - end - end - end -end \ No newline at end of file diff --git a/lib/jekyll/readers/language_page_reader.rb b/lib/jekyll/readers/language_page_reader.rb index 587794b..eacd621 100644 --- a/lib/jekyll/readers/language_page_reader.rb +++ b/lib/jekyll/readers/language_page_reader.rb @@ -7,8 +7,6 @@ class LanguagePageReader < PageReader def read(files) read_orig(files).flat_map do |page| - # Jekyll.logger.info "Lang-debug: ", "Name: " + page.name + " => " + page.dir - lpages = [] #TODO: this is a bit hacky. It would be better to directly have access to @dir instance variable path = page.url_placeholders[:path] @@ -34,12 +32,10 @@ def read(files) end if (lpage.language or lpage.languages) and lpage["permalink"].nil? - # Jekyll.logger.info "Lang-debug: ", page.dir + page.name - # page['language'] = 'en' + # If the page doesn't have a defined permalink (it's not forced to be in any specific @dir) then add it to the list lpages << page end - - # Jekyll.logger.info "Lang-debug: ", lpages.to_json + lpages end end diff --git a/lib/jekyll/readers/language_post_reader.rb b/lib/jekyll/readers/language_post_reader.rb index 33bb829..2d0059a 100644 --- a/lib/jekyll/readers/language_post_reader.rb +++ b/lib/jekyll/readers/language_post_reader.rb @@ -7,8 +7,6 @@ class LanguagePostReader < PostReader def read_content(dir, magic_dir, matcher) read_content_orig(dir, magic_dir, matcher).flat_map do |document| - # Jekyll.logger.info "Lang-debug: ", document.path - ldocument = LanguageDocument.new(document.path, { site: @site, collection: @site.posts }) ldocument.read