← All use cases

time.of_day

The same card, a different target at noon

A sticker on the table, the same one for twelve months. Weekdays 11–14 the lunch menu, from 17 the dinner menu, otherwise the website. The hour is the restaurant's. A poster in Zurich set to UTC evaluates “from 5pm” two hours off.

Where it hangs
Table card, bar sign, door.
Why the paper stays
The menu changes several times a day. Reprinting would mean every shift.

Live resolution

time.of_day = 12:00
time.tz = Europe/Zurichgeo.country = CHdevice.os = ioslang.primary = de
  1. 1Lunch, 11–14
  2. 2Evening, from 17:00
  3. alwaysOtherwise
https://adler.ch/lunch
A folded card standing on a cafe table, carrying the code
The same code on every shot.Table card, bar sign, door.

The ruleset

Valid, storable, mandatory rule last.

Not a description of what the engine could do — this is the text a code carries. The first matching rule wins, and the last one always matches.

ruleset · version 1

{
  "rules": [
    {
      "when": { "time.of_day": { "between": ["11:00", "14:00"] } },
      "then": { "type": "redirect", "url": "https://adler.ch/lunch" }
    },
    {
      "when": { "time.of_day": { "between": ["17:00", "23:59"] } },
      "then": { "type": "redirect", "url": "https://adler.ch/dinner" }
    },
    {
      "when": "always",
      "then": { "type": "redirect", "url": "https://adler.ch" }
    }
  ]
}

The timezone sits on the code, not on the server: time.tz comes from the workspace when the code is created and stays with it afterwards — the code is glued to a wall and does not move.

Also

Same axis, different situation.

Happy hour
16–18 the promo list, otherwise the regular one. An hour is a rule, not a second code.
Pharmacy
After 19:00 to the emergency service. The door stays the same door.
Notice case
The PDF is replaced on Mondays, not the case.

← All use cases