Module: HTMX

Defined in:
lib/htmx.rb,
lib/htmx/error.rb,
lib/htmx/prefixer.rb,
lib/htmx/headers/request.rb,
lib/htmx/headers/response.rb

Overview

Main namespace.

Defined Under Namespace

Modules: Headers Classes: Error, Prefixer

Constant Summary collapse

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
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

Class Method Summary collapse

Class Method Details

.[]Object



42
43
44
45
# File 'lib/htmx.rb', line 42

def self.[](...)
  @prefixer ||= Prefixer.new
  @prefixer.call(...)
end

.loader(registry = Zeitwerk::Registry) ⇒ Object



38
39
40
# File 'lib/htmx.rb', line 38

def self.loader registry = Zeitwerk::Registry
  @loader ||= registry.loaders.each.find { |loader| loader.tag == File.basename(__FILE__, ".rb") }
end

.requestObject



47
# File 'lib/htmx.rb', line 47

def self.request(**) = Headers::Request.for(**)

.request!(headers, **attributes) ⇒ Object



49
# File 'lib/htmx.rb', line 49

def self.request!(headers, **attributes) = headers.merge! attributes.transform_keys!(REQUEST_MAP)

.request?(headers, key, value) ⇒ Boolean

Returns:

  • (Boolean)


51
# File 'lib/htmx.rb', line 51

def self.request?(headers, key, value) = headers[REQUEST_MAP[key]] == value

.responseObject



53
# File 'lib/htmx.rb', line 53

def self.response(**) = Headers::Response.for(**)

.response!(headers, **attributes) ⇒ Object



55
56
57
# File 'lib/htmx.rb', line 55

def self.response!(headers, **attributes)
  headers.merge! attributes.transform_keys!(RESPONSE_MAP)
end

.response?(headers, key, value) ⇒ Boolean

Returns:

  • (Boolean)


59
# File 'lib/htmx.rb', line 59

def self.response?(headers, key, value) = headers[RESPONSE_MAP[key]] == value