module ViewComponent::InlineTemplate

def inherited(subclass)

def inherited(subclass)
  super
  subclass.instance_variable_set(:@__vc_inline_template_language, inline_template_language)
end

def inline_template

def inline_template
  @__vc_inline_template
end

def inline_template_language

def inline_template_language
  @__vc_inline_template_language if defined?(@__vc_inline_template_language)
end

def method_missing(method, *args)

def method_missing(method, *args)
  return super if !method.end_with?("_template")
  if defined?(@__vc_inline_template_defined) && @__vc_inline_template_defined
    raise MultipleInlineTemplatesError
  end
  if args.size != 1
    raise ArgumentError, "wrong number of arguments (given #{args.size}, expected 1)"
  end
  ext = method.to_s.gsub("_template", "")
  template = args.first
  @__vc_inline_template_language = ext
  caller = caller_locations(1..1)[0]
  @__vc_inline_template = Template.new(
    template,
    ext,
    caller.absolute_path || caller.path,
    caller.lineno
  )
  @__vc_inline_template_defined = true
end

def respond_to_missing?(method, include_all = false)

def respond_to_missing?(method, include_all = false)
  method.end_with?("_template") || super
end