Module: Convertify

Defined in:
lib/jekyll-convertify/tags.rb,
lib/jekyll-convertify/convert.rb,
lib/jekyll-convertify/convert.rb

Defined Under Namespace

Modules: ConvertHelper, TagHelper

Class Method Summary collapse

Class Method Details

.convert(context, render, source_extension, destination_extension = nil) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/jekyll-convertify/convert.rb', line 80

def self.convert(context, render, source_extension, destination_extension = nil)
  current_convertify_ext = context["convertify_extension"]

  destination_extension = nil if destination_extension&.empty? != false

  # Infer the destination extension if not provided
  inferred_dst_ext =
    destination_extension ||
    current_convertify_ext ||
    ConvertHelper.infer_extension(context.template_name) ||
    ConvertHelper.infer_extension(context.registers[:page]["name"])

  result = ConvertHelper::find_converter(context, source_extension, inferred_dst_ext)

  if result.nil?
    raise Liquid::ArgumentError,
          "No converter available for '#{source_extension}'"
  elsif destination_extension && result.destination_extension != destination_extension
    raise Liquid::ArgumentError,
          "No converter available for '#{source_extension}' to '#{destination_extension}'"
  end
  result.converter.convert(context.stack do
    context["convertify_extension"] = source_extension
    render.call
  end)
end