-
# frozen_string_literal: true
-
-
1
require "zeitwerk"
-
-
1
Zeitwerk::Loader.new.then do |loader|
-
1
loader.inflector.inflect "htmx" => "HTMX"
-
1
loader.tag = File.basename __FILE__, ".rb"
-
1
loader.push_dir __dir__
-
1
loader.setup
-
end
-
-
# Main namespace.
-
1
module HTMX
-
1
REQUEST_MAP = {
-
boosted: "HTTP_HX_BOOSTED",
-
current_url: "HTTP_HX_CURRENT_URL",
-
history_restore_request: "HTTP_HX_HISTORY_RESTORE_REQUEST",
-
prompt: "HTTP_HX_PROMPT",
-
request: "HTTP_HX_REQUEST",
-
target: "HTTP_HX_TARGET",
-
trigger_name: "HTTP_HX_TRIGGER_NAME",
-
trigger: "HTTP_HX_TRIGGER"
-
}.freeze
-
-
1
RESPONSE_MAP = {
-
location: "HX-Location",
-
push_url: "HX-Push-Url",
-
redirect: "HX-Redirect",
-
refresh: "HX-Refresh",
-
replace_url: "HX-Replace-Url",
-
reswap: "HX-Reswap",
-
retarget: "HX-Retarget",
-
trigger: "HX-Trigger",
-
trigger_after_settle: "HX-Trigger-After-Settle",
-
trigger_after_swap: "HX-Trigger-After-Swap"
-
}.freeze
-
-
1
def self.loader registry = Zeitwerk::Registry
-
4
@loader ||= registry.loaders.each.find { |loader| loader.tag == File.basename(__FILE__, ".rb") }
-
end
-
-
1
def self.[](...)
-
2
@prefixer ||= Prefixer.new
-
2
@prefixer.call(...)
-
end
-
-
1
def self.request(**) = Headers::Request.for(**)
-
-
1
def self.request!(headers, **attributes) = headers.merge! attributes.transform_keys!(REQUEST_MAP)
-
-
1
def self.request?(headers, key, value) = headers[REQUEST_MAP[key]] == value
-
-
1
def self.response(**) = Headers::Response.for(**)
-
-
1
def self.response!(headers, **attributes)
-
3
headers.merge! attributes.transform_keys!(RESPONSE_MAP)
-
end
-
-
1
def self.response?(headers, key, value) = headers[RESPONSE_MAP[key]] == value
-
end