NoteSource.java

package Hoot.Runtime.Notes;

import java.util.*;
import Hoot.Runtime.Emissions.Emission;
import Hoot.Runtime.Emissions.EmissionSource;
import static Hoot.Runtime.Emissions.Emission.emit;

/**
 * A source of decor and note emissions.
 *
 * @author nik <nikboyd@sonic.net>
 * @see "Copyright 2010,2021 Nikolas S Boyd."
 * @see "Permission is granted to copy this work provided this copyright statement is retained in all copies."
 */
public interface NoteSource extends EmissionSource {

    default Emission emitExtendedType(Emission type, Emission base) {
        return emit("ExtendedType").type(type).base(base); }

    default Emission emitDetailedType(Emission type, Emission details) {
        return emit("DetailedType").type(type).with("details", details); }

    default Emission emitNote(String name) { return emit("Note").name(name); }
    default Emission emitDetails(List<Emission> details) { return emit("Details").values(details); }

} // NoteSource