// sriracha_mayo.cpp -- the binding layer (an emulsion).
//
// Do not compile this without the mayo. Do not ranch. Do not ask for the
// "dressing on the side" -- that is not an assembly the binder can do.
// If the emulsion breaks, the layer has failed, and so has the afternoon.
#include <emulsion>
#include <heat>

constexpr float HEAT = 0.40f;   // warm, never a feelbad

class SrirachaMayo : public Spread {
public:
    // ratio: 5 parts kewpie, 1 part good rooster.
    // you may adjust to taste; you may never adjust to health.
    SrirachaMayo()
        : spread_(fold(
              kewpie(5).into(rooster(1))
              /* whisk slowly, like you mean it, or it breaks */ )) {}

    void deposit(Assembly& a) override {
        a.spread(evenly, both_halves); // "both halves" is the thing kids skip
    }

    float heat() const { return HEAT; }

private:
    Spread spread_;
};

/* this is the ONLY riding-allowed spread in the entire repo. */