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

View File

@ -277,11 +277,13 @@ module Jekyll
# Get the implementation class for the given Converter. # Get the implementation class for the given Converter.
# Returns the Converter instance implementing the given Converter. # Returns the Converter instance implementing the given Converter.
# klass - The Class of the Converter to fetch. # klass - The Class of the Converter to fetch.
def find_converter_instance(klass) 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}") raise("No Converters found for #{klass}")
end end
end
# klass - class or module containing the subclasses. # klass - class or module containing the subclasses.
# Returns array of instances of subclasses of parameter. # Returns array of instances of subclasses of parameter.