Adopt Step 7 language features across SX codebase
112 conversions across 19 .sx files using match, let-match, and pipe operators: match (17): type/value dispatch replacing cond/if chains - lib/vm.sx: HO form dispatch (for-each/map/filter/reduce/some/every?) - lib/tree-tools.sx: node-display, node-matches?, rename, count, replace, free-symbols - lib/types.sx: narrow-type, substitute-in-type, infer-type, resolve-type - web/engine.sx: default-trigger, resolve-target, classify-trigger - web/deps.sx: scan-refs-walk, scan-io-refs-walk let-match (89): dict destructuring replacing (get d "key") patterns - shared/page-functions.sx (20), blog/admin.sx (17), pub-api.sx (13) - events/ layouts/page/tickets/entries/forms (27 total) - specs-explorer.sx (7), federation/social.sx (3), lib/ small files (3) -> pipes (6): replacing triple-chained gets in lib/vm.sx - frame-closure → closure-code → code-bytecode chains Also: lib/vm.sx accessor upgrades (get vm "sp" → vm-sp vm throughout) 2650/2650 tests pass, zero regressions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,155 +5,247 @@
|
||||
;; Auto-fetching header macros — calendar, day, entry, slot, tickets
|
||||
;; ---------------------------------------------------------------------------
|
||||
|
||||
(defmacro ~events-calendar-header-auto (oob)
|
||||
(defmacro
|
||||
~events-calendar-header-auto
|
||||
(oob)
|
||||
"Calendar header row using (events-calendar-ctx)."
|
||||
(quasiquote
|
||||
(let ((__cal (events-calendar-ctx))
|
||||
(__sc (select-colours)))
|
||||
(when (get __cal "slug")
|
||||
(~shared:layout/menu-row-sx :id "calendar-row" :level 3
|
||||
:link-href (url-for "calendar.get"
|
||||
:calendar-slug (get __cal "slug"))
|
||||
:link-label-content (~header/calendar-label
|
||||
:name (get __cal "name")
|
||||
:description (get __cal "description"))
|
||||
:nav (<>
|
||||
(~shared:layout/nav-link :href (url-for "defpage_slots_listing"
|
||||
:calendar-slug (get __cal "slug"))
|
||||
:icon "fa fa-clock" :label "Slots"
|
||||
:select-colours __sc)
|
||||
(let ((__rights (app-rights)))
|
||||
(when (get __rights "admin")
|
||||
(~shared:layout/nav-link :href (url-for "defpage_calendar_admin"
|
||||
:calendar-slug (get __cal "slug"))
|
||||
:icon "fa fa-cog"
|
||||
:select-colours __sc))))
|
||||
:child-id "calendar-header-child"
|
||||
:oob (unquote oob))))))
|
||||
(let
|
||||
((__cal (events-calendar-ctx)) (__sc (select-colours)))
|
||||
(let-match
|
||||
{:description description :slug slug :name name}
|
||||
__cal
|
||||
(when
|
||||
slug
|
||||
(~shared:layout/menu-row-sx
|
||||
:id "calendar-row"
|
||||
:level 3
|
||||
:link-href (url-for "calendar.get" :calendar-slug slug)
|
||||
:link-label-content (~header/calendar-label :name name :description description)
|
||||
:nav (<>
|
||||
(~shared:layout/nav-link
|
||||
:href (url-for "defpage_slots_listing" :calendar-slug slug)
|
||||
:icon "fa fa-clock"
|
||||
:label "Slots"
|
||||
:select-colours __sc)
|
||||
(let
|
||||
((__rights (app-rights)))
|
||||
(when
|
||||
(get __rights "admin")
|
||||
(~shared:layout/nav-link
|
||||
:href (url-for "defpage_calendar_admin" :calendar-slug slug)
|
||||
:icon "fa fa-cog"
|
||||
:select-colours __sc))))
|
||||
:child-id "calendar-header-child"
|
||||
:oob (unquote oob)))))))
|
||||
|
||||
(defmacro ~events-calendar-admin-header-auto (oob)
|
||||
(defmacro
|
||||
~events-calendar-admin-header-auto
|
||||
(oob)
|
||||
"Calendar admin header row."
|
||||
(quasiquote
|
||||
(let ((__cal (events-calendar-ctx))
|
||||
(__sc (select-colours)))
|
||||
(when (get __cal "slug")
|
||||
(~shared:layout/menu-row-sx :id "calendar-admin-row" :level 4
|
||||
:link-label "admin" :icon "fa fa-cog"
|
||||
:nav (<>
|
||||
(~shared:layout/nav-link :href (url-for "defpage_slots_listing"
|
||||
:calendar-slug (get __cal "slug"))
|
||||
:label "slots" :select-colours __sc)
|
||||
(~shared:layout/nav-link :href (url-for "calendar.admin.calendar_description_edit"
|
||||
:calendar-slug (get __cal "slug"))
|
||||
:label "description" :select-colours __sc))
|
||||
:child-id "calendar-admin-header-child"
|
||||
:oob (unquote oob))))))
|
||||
(let
|
||||
((__cal (events-calendar-ctx)) (__sc (select-colours)))
|
||||
(let-match
|
||||
{:slug slug}
|
||||
__cal
|
||||
(when
|
||||
slug
|
||||
(~shared:layout/menu-row-sx
|
||||
:id "calendar-admin-row"
|
||||
:level 4
|
||||
:link-label "admin"
|
||||
:icon "fa fa-cog"
|
||||
:nav (<>
|
||||
(~shared:layout/nav-link
|
||||
:href (url-for "defpage_slots_listing" :calendar-slug slug)
|
||||
:label "slots"
|
||||
:select-colours __sc)
|
||||
(~shared:layout/nav-link
|
||||
:href (url-for
|
||||
"calendar.admin.calendar_description_edit"
|
||||
:calendar-slug slug)
|
||||
:label "description"
|
||||
:select-colours __sc))
|
||||
:child-id "calendar-admin-header-child"
|
||||
:oob (unquote oob)))))))
|
||||
|
||||
(defmacro ~events-day-header-auto (oob)
|
||||
(defmacro
|
||||
~events-day-header-auto
|
||||
(oob)
|
||||
"Day header row using (events-day-ctx)."
|
||||
(quasiquote
|
||||
(let ((__day (events-day-ctx))
|
||||
(__cal (events-calendar-ctx)))
|
||||
(when (get __day "date-str")
|
||||
(~shared:layout/menu-row-sx :id "day-row" :level 4
|
||||
:link-href (url-for "calendar.day.show_day"
|
||||
:calendar-slug (get __cal "slug")
|
||||
:year (get __day "year")
|
||||
:month (get __day "month")
|
||||
:day (get __day "day"))
|
||||
:link-label-content (~header/day-label
|
||||
:date-str (get __day "date-str"))
|
||||
:nav (get __day "nav")
|
||||
:child-id "day-header-child"
|
||||
:oob (unquote oob))))))
|
||||
(let
|
||||
((__day (events-day-ctx)) (__cal (events-calendar-ctx)))
|
||||
(let-match
|
||||
{:date-str date-str :nav nav :year year :day day :month month}
|
||||
__day
|
||||
(when
|
||||
date-str
|
||||
(let-match
|
||||
{:slug cal-slug}
|
||||
__cal
|
||||
(~shared:layout/menu-row-sx
|
||||
:id "day-row"
|
||||
:level 4
|
||||
:link-href (url-for
|
||||
"calendar.day.show_day"
|
||||
:calendar-slug cal-slug
|
||||
:year year
|
||||
:month month
|
||||
:day day)
|
||||
:link-label-content (~header/day-label :date-str date-str)
|
||||
:nav nav
|
||||
:child-id "day-header-child"
|
||||
:oob (unquote oob))))))))
|
||||
|
||||
(defmacro ~events-day-admin-header-auto (oob)
|
||||
(defmacro
|
||||
~events-day-admin-header-auto
|
||||
(oob)
|
||||
"Day admin header row."
|
||||
(quasiquote
|
||||
(let ((__day (events-day-ctx))
|
||||
(__cal (events-calendar-ctx)))
|
||||
(when (get __day "date-str")
|
||||
(~shared:layout/menu-row-sx :id "day-admin-row" :level 5
|
||||
:link-href (url-for "defpage_day_admin"
|
||||
:calendar-slug (get __cal "slug")
|
||||
:year (get __day "year")
|
||||
:month (get __day "month")
|
||||
:day (get __day "day"))
|
||||
:link-label "admin" :icon "fa fa-cog"
|
||||
:child-id "day-admin-header-child"
|
||||
:oob (unquote oob))))))
|
||||
(let
|
||||
((__day (events-day-ctx)) (__cal (events-calendar-ctx)))
|
||||
(let-match
|
||||
{:date-str date-str :year year :day day :month month}
|
||||
__day
|
||||
(when
|
||||
date-str
|
||||
(let-match
|
||||
{:slug cal-slug}
|
||||
__cal
|
||||
(~shared:layout/menu-row-sx
|
||||
:id "day-admin-row"
|
||||
:level 5
|
||||
:link-href (url-for
|
||||
"defpage_day_admin"
|
||||
:calendar-slug cal-slug
|
||||
:year year
|
||||
:month month
|
||||
:day day)
|
||||
:link-label "admin"
|
||||
:icon "fa fa-cog"
|
||||
:child-id "day-admin-header-child"
|
||||
:oob (unquote oob))))))))
|
||||
|
||||
(defmacro ~events-entry-header-auto (oob)
|
||||
(defmacro
|
||||
~events-entry-header-auto
|
||||
(oob)
|
||||
"Entry header row using (events-entry-ctx)."
|
||||
(quasiquote
|
||||
(let ((__ectx (events-entry-ctx)))
|
||||
(when (get __ectx "id")
|
||||
(~shared:layout/menu-row-sx :id "entry-row" :level 5
|
||||
:link-href (get __ectx "link-href")
|
||||
:link-label-content (~header/entry-label
|
||||
:entry-id (get __ectx "id")
|
||||
:title (~admin/entry-title :name (get __ectx "name"))
|
||||
:times (~admin/entry-times :time-str (get __ectx "time-str")))
|
||||
:nav (get __ectx "nav")
|
||||
:child-id "entry-header-child"
|
||||
:oob (unquote oob))))))
|
||||
(let
|
||||
((__ectx (events-entry-ctx)))
|
||||
(let-match
|
||||
{:time-str time-str :nav nav :link-href link-href :id id :name name}
|
||||
__ectx
|
||||
(when
|
||||
id
|
||||
(~shared:layout/menu-row-sx
|
||||
:id "entry-row"
|
||||
:level 5
|
||||
:link-href link-href
|
||||
:link-label-content (~header/entry-label
|
||||
:entry-id id
|
||||
:title (~admin/entry-title :name name)
|
||||
:times (~admin/entry-times :time-str time-str))
|
||||
:nav nav
|
||||
:child-id "entry-header-child"
|
||||
:oob (unquote oob)))))))
|
||||
|
||||
(defmacro ~events-entry-admin-header-auto (oob)
|
||||
(defmacro
|
||||
~events-entry-admin-header-auto
|
||||
(oob)
|
||||
"Entry admin header row."
|
||||
(quasiquote
|
||||
(let ((__ectx (events-entry-ctx)))
|
||||
(when (get __ectx "id")
|
||||
(~shared:layout/menu-row-sx :id "entry-admin-row" :level 6
|
||||
:link-href (get __ectx "admin-href")
|
||||
:link-label "admin" :icon "fa fa-cog"
|
||||
:nav (when (get __ectx "is-admin")
|
||||
(~shared:layout/nav-link :href (get __ectx "ticket-types-href")
|
||||
:label "ticket_types"
|
||||
:select-colours (get __ectx "select-colours")))
|
||||
:child-id "entry-admin-header-child"
|
||||
:oob (unquote oob))))))
|
||||
(let
|
||||
((__ectx (events-entry-ctx)))
|
||||
(let-match
|
||||
{:admin-href admin-href :is-admin is-admin :ticket-types-href ticket-types-href :select-colours select-colours :id id}
|
||||
__ectx
|
||||
(when
|
||||
id
|
||||
(~shared:layout/menu-row-sx
|
||||
:id "entry-admin-row"
|
||||
:level 6
|
||||
:link-href admin-href
|
||||
:link-label "admin"
|
||||
:icon "fa fa-cog"
|
||||
:nav (when
|
||||
is-admin
|
||||
(~shared:layout/nav-link
|
||||
:href ticket-types-href
|
||||
:label "ticket_types"
|
||||
:select-colours select-colours))
|
||||
:child-id "entry-admin-header-child"
|
||||
:oob (unquote oob)))))))
|
||||
|
||||
(defmacro ~events-slot-header-auto (oob)
|
||||
(defmacro
|
||||
~events-slot-header-auto
|
||||
(oob)
|
||||
"Slot detail header row using (events-slot-ctx)."
|
||||
(quasiquote
|
||||
(let ((__slot (events-slot-ctx)))
|
||||
(when (get __slot "name")
|
||||
(~shared:layout/menu-row-sx :id "slot-row" :level 5
|
||||
:link-label-content (~header/slot-label
|
||||
:name (get __slot "name")
|
||||
:description (get __slot "description"))
|
||||
:child-id "slot-header-child"
|
||||
:oob (unquote oob))))))
|
||||
(let
|
||||
((__slot (events-slot-ctx)))
|
||||
(let-match
|
||||
{:description description :name name}
|
||||
__slot
|
||||
(when
|
||||
name
|
||||
(~shared:layout/menu-row-sx
|
||||
:id "slot-row"
|
||||
:level 5
|
||||
:link-label-content (~header/slot-label :name name :description description)
|
||||
:child-id "slot-header-child"
|
||||
:oob (unquote oob)))))))
|
||||
|
||||
(defmacro ~events-ticket-types-header-auto (oob)
|
||||
(defmacro
|
||||
~events-ticket-types-header-auto
|
||||
(oob)
|
||||
"Ticket types header row."
|
||||
(quasiquote
|
||||
(let ((__ectx (events-entry-ctx))
|
||||
(__cal (events-calendar-ctx)))
|
||||
(when (get __ectx "id")
|
||||
(~shared:layout/menu-row-sx :id "ticket_types-row" :level 7
|
||||
:link-href (get __ectx "ticket-types-href")
|
||||
:link-label-content (<>
|
||||
(i :class "fa fa-ticket")
|
||||
(div :class "shrink-0" "ticket types"))
|
||||
:nav (~forms/admin-placeholder-nav)
|
||||
:child-id "ticket_type-header-child"
|
||||
:oob (unquote oob))))))
|
||||
(let
|
||||
((__ectx (events-entry-ctx)) (__cal (events-calendar-ctx)))
|
||||
(let-match
|
||||
{:ticket-types-href ticket-types-href :id id}
|
||||
__ectx
|
||||
(when
|
||||
id
|
||||
(~shared:layout/menu-row-sx
|
||||
:id "ticket_types-row"
|
||||
:level 7
|
||||
:link-href ticket-types-href
|
||||
:link-label-content (<>
|
||||
(i :class "fa fa-ticket")
|
||||
(div :class "shrink-0" "ticket types"))
|
||||
:nav (~forms/admin-placeholder-nav)
|
||||
:child-id "ticket_type-header-child"
|
||||
:oob (unquote oob)))))))
|
||||
|
||||
(defmacro ~events-ticket-type-header-auto (oob)
|
||||
(defmacro
|
||||
~events-ticket-type-header-auto
|
||||
(oob)
|
||||
"Single ticket type header row using (events-ticket-type-ctx)."
|
||||
(quasiquote
|
||||
(let ((__tt (events-ticket-type-ctx)))
|
||||
(when (get __tt "id")
|
||||
(~shared:layout/menu-row-sx :id "ticket_type-row" :level 8
|
||||
:link-href (get __tt "link-href")
|
||||
:link-label-content (div :class "flex flex-col md:flex-row md:gap-2 items-center"
|
||||
(div :class "flex flex-row items-center gap-2"
|
||||
(i :class "fa fa-ticket")
|
||||
(div :class "shrink-0" (get __tt "name"))))
|
||||
:nav (~forms/admin-placeholder-nav)
|
||||
:child-id "ticket_type-header-child-inner"
|
||||
:oob (unquote oob))))))
|
||||
(let
|
||||
((__tt (events-ticket-type-ctx)))
|
||||
(let-match
|
||||
{:link-href link-href :id id :name name}
|
||||
__tt
|
||||
(when
|
||||
id
|
||||
(~shared:layout/menu-row-sx
|
||||
:id "ticket_type-row"
|
||||
:level 8
|
||||
:link-href link-href
|
||||
:link-label-content (div
|
||||
:class "flex flex-col md:flex-row md:gap-2 items-baseline"
|
||||
(div
|
||||
:class "flex flex-row items-center gap-2"
|
||||
(i :class "fa fa-ticket")
|
||||
(div :class "shrink-0" name)))
|
||||
:nav (~forms/admin-placeholder-nav)
|
||||
:child-id "ticket_type-header-child-inner"
|
||||
:oob (unquote oob)))))))
|
||||
|
||||
(defmacro ~events-markets-header-auto (oob)
|
||||
"Markets section header row."
|
||||
|
||||
Reference in New Issue
Block a user