Store and retrieve converter instances for Jekyll::Filters via a hash (#6856)

Merge pull request 6856
This commit is contained in:
ashmaroli 2018-04-12 21:06:12 +05:30 committed by jekyllbot
parent bfdd26fdcc
commit 29dc190fcb
2 changed files with 17 additions and 15 deletions

View File

@ -14,9 +14,9 @@ module Jekyll
#
# Returns the HTML formatted String.
def markdownify(input)
site = @context.registers[:site]
converter = site.find_converter_instance(Jekyll::Converters::Markdown)
converter.convert(input.to_s)
@context.registers[:site].find_converter_instance(
Jekyll::Converters::Markdown
).convert(input.to_s)
end
# Convert quotes into smart quotes.
@ -25,9 +25,9 @@ module Jekyll
#
# Returns the smart-quotified String.
def smartify(input)
site = @context.registers[:site]
converter = site.find_converter_instance(Jekyll::Converters::SmartyPants)
converter.convert(input.to_s)
@context.registers[:site].find_converter_instance(
Jekyll::Converters::SmartyPants
).convert(input.to_s)
end
# Convert a Sass string into CSS output.
@ -36,9 +36,9 @@ module Jekyll
#
# Returns the CSS formatted String.
def sassify(input)
site = @context.registers[:site]
converter = site.find_converter_instance(Jekyll::Converters::Sass)
converter.convert(input)
@context.registers[:site].find_converter_instance(
Jekyll::Converters::Sass
).convert(input)
end
# Convert a Scss string into CSS output.
@ -47,9 +47,9 @@ module Jekyll
#
# Returns the CSS formatted String.
def scssify(input)
site = @context.registers[:site]
converter = site.find_converter_instance(Jekyll::Converters::Scss)
converter.convert(input)
@context.registers[:site].find_converter_instance(
Jekyll::Converters::Scss
).convert(input)
end
# Slugify a filename or title.

View File

@ -277,11 +277,13 @@ module Jekyll
# Get the implementation class for the given Converter.
# Returns the Converter instance implementing the given Converter.
# klass - The Class of the Converter to fetch.
def find_converter_instance(klass)
converters.find { |klass_| klass_.instance_of?(klass) } || \
@find_converter_instance ||= {}
@find_converter_instance[klass] ||= begin
converters.find { |converter| converter.instance_of?(klass) } || \
raise("No Converters found for #{klass}")
end
end
# klass - class or module containing the subclasses.
# Returns array of instances of subclasses of parameter.