From 9a88900246b246ca7f68440a186e9a5e22c67813 Mon Sep 17 00:00:00 2001 From: ashmaroli Date: Mon, 15 Jan 2018 02:58:12 +0530 Subject: [PATCH] require external library only if necessary (#6596) Merge pull request 6596 --- lib/jekyll/converters/markdown/kramdown_parser.rb | 4 +++- lib/jekyll/converters/markdown/rdiscount_parser.rb | 4 +++- lib/jekyll/converters/markdown/redcarpet_parser.rb | 8 ++++++-- lib/jekyll/converters/smartypants.rb | 4 +++- lib/jekyll/theme.rb | 2 +- lib/jekyll/utils/rouge.rb | 2 +- lib/jekyll/utils/win_tz.rb | 2 +- 7 files changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/jekyll/converters/markdown/kramdown_parser.rb b/lib/jekyll/converters/markdown/kramdown_parser.rb index bb03eaaab04..aaa32e2df00 100644 --- a/lib/jekyll/converters/markdown/kramdown_parser.rb +++ b/lib/jekyll/converters/markdown/kramdown_parser.rb @@ -14,7 +14,9 @@ class KramdownParser }.freeze def initialize(config) - Jekyll::External.require_with_graceful_fail "kramdown" + unless defined?(Kramdown) + Jekyll::External.require_with_graceful_fail "kramdown" + end @main_fallback_highlighter = config["highlighter"] || "rouge" @config = config["kramdown"] || {} @highlighter = nil diff --git a/lib/jekyll/converters/markdown/rdiscount_parser.rb b/lib/jekyll/converters/markdown/rdiscount_parser.rb index 654a3a6d0ed..d3493ecb8a4 100644 --- a/lib/jekyll/converters/markdown/rdiscount_parser.rb +++ b/lib/jekyll/converters/markdown/rdiscount_parser.rb @@ -5,7 +5,9 @@ module Converters class Markdown class RDiscountParser def initialize(config) - Jekyll::External.require_with_graceful_fail "rdiscount" + unless defined?(RDiscount) + Jekyll::External.require_with_graceful_fail "rdiscount" + end @config = config @rdiscount_extensions = @config["rdiscount"]["extensions"].map(&:to_sym) end diff --git a/lib/jekyll/converters/markdown/redcarpet_parser.rb b/lib/jekyll/converters/markdown/redcarpet_parser.rb index 7a8c6ec5923..d148e06d206 100644 --- a/lib/jekyll/converters/markdown/redcarpet_parser.rb +++ b/lib/jekyll/converters/markdown/redcarpet_parser.rb @@ -16,7 +16,9 @@ def add_code_tags(code, lang) module WithPygments include CommonMethods def block_code(code, lang) - Jekyll::External.require_with_graceful_fail("pygments") + unless defined?(Pygments) + Jekyll::External.require_with_graceful_fail("pygments") + end lang = lang && lang.split.first || "text" add_code_tags( Pygments.highlight( @@ -60,7 +62,9 @@ def rouge_formatter(_lexer) end def initialize(config) - Jekyll::External.require_with_graceful_fail("redcarpet") + unless defined?(Redcarpet) + Jekyll::External.require_with_graceful_fail("redcarpet") + end @config = config @redcarpet_extensions = {} @config["redcarpet"]["extensions"].each do |e| diff --git a/lib/jekyll/converters/smartypants.rb b/lib/jekyll/converters/smartypants.rb index a3c3c1560d0..8234a41afc1 100644 --- a/lib/jekyll/converters/smartypants.rb +++ b/lib/jekyll/converters/smartypants.rb @@ -20,7 +20,9 @@ class SmartyPants < Converter priority :low def initialize(config) - Jekyll::External.require_with_graceful_fail "kramdown" + unless defined?(Kramdown) + Jekyll::External.require_with_graceful_fail "kramdown" + end @config = config["kramdown"].dup || {} @config[:input] = :SmartyPants end diff --git a/lib/jekyll/theme.rb b/lib/jekyll/theme.rb index edd041eea5c..d392a2a69c7 100644 --- a/lib/jekyll/theme.rb +++ b/lib/jekyll/theme.rb @@ -38,7 +38,7 @@ def assets_path def configure_sass return unless sass_path - Jekyll::External.require_with_graceful_fail "sass" + External.require_with_graceful_fail("sass") unless defined?(Sass) Sass.load_paths << sass_path end diff --git a/lib/jekyll/utils/rouge.rb b/lib/jekyll/utils/rouge.rb index d1befa1a212..9ee90dacba7 100644 --- a/lib/jekyll/utils/rouge.rb +++ b/lib/jekyll/utils/rouge.rb @@ -5,7 +5,7 @@ module Utils module Rouge def self.html_formatter(*args) - Jekyll::External.require_with_graceful_fail("rouge") + Jekyll::External.require_with_graceful_fail("rouge") unless defined?(::Rouge) if old_api? ::Rouge::Formatters::HTML.new(*args) else diff --git a/lib/jekyll/utils/win_tz.rb b/lib/jekyll/utils/win_tz.rb index 322f5ac6230..239650f71fe 100644 --- a/lib/jekyll/utils/win_tz.rb +++ b/lib/jekyll/utils/win_tz.rb @@ -12,7 +12,7 @@ module WinTZ # # Returns a string that ultimately re-defines ENV["TZ"] in Windows def calculate(timezone) - External.require_with_graceful_fail("tzinfo") + External.require_with_graceful_fail("tzinfo") unless defined?(TZInfo) tz = TZInfo::Timezone.get(timezone) difference = Time.now.to_i - tz.now.to_i #