SEO.JSONLD.MenuItem (SEO v0.3.0-rc.0)

View Source

A food or drink item listed in a menu or menu section.

Helper for building a Schema.org MenuItem JSON-LD structure.

Summary

Types

t()

A JSON-LD map ready to be nested or rendered. String-keyed, always includes "@type" set to "MenuItem", plus any camelCased field keys the caller provided (see build/1). "@context" is added at render time by SEO.JSONLD.meta/1 on the top-level node only.

Functions

Build a MenuItem JSON-LD map.

Types

attrs()

@type attrs() ::
  %{
    optional(:menu_add_on) => SEO.JSONLD.MenuSection.t() | map() | t(),
    optional(:nutrition) => SEO.JSONLD.NutritionInformation.t() | map(),
    optional(:offers) => SEO.JSONLD.Offer.t() | map() | SEO.JSONLD.Demand.t(),
    optional(:suitable_for_diet) =>
      SEO.JSONLD.Diet.t()
      | map()
      | :diabetic_diet
      | :gluten_free_diet
      | :halal_diet
      | :hindu_diet
      | :kosher_diet
      | :low_calorie_diet
      | :low_fat_diet
      | :low_lactose_diet
      | :low_salt_diet
      | :vegan_diet
      | :vegetarian_diet,
    optional(:additional_type) => String.t() | URI.t(),
    optional(:alternate_name) => String.t(),
    optional(:description) => SEO.JSONLD.TextObject.t() | map() | String.t(),
    optional(:disambiguating_description) => String.t(),
    optional(:identifier) =>
      String.t() | URI.t() | SEO.JSONLD.PropertyValue.t() | map(),
    optional(:image) =>
      URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(),
    optional(:main_entity_of_page) =>
      SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
    optional(:name) => String.t(),
    optional(:owner) =>
      SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
    optional(:potential_action) => SEO.JSONLD.Action.t() | map(),
    optional(:same_as) => URI.t() | String.t(),
    optional(:subject_of) =>
      SEO.JSONLD.Event.t() | map() | SEO.JSONLD.CreativeWork.t(),
    optional(:url) => URI.t() | String.t()
  }
  | [
      menu_add_on: SEO.JSONLD.MenuSection.t() | map() | t(),
      nutrition: SEO.JSONLD.NutritionInformation.t() | map(),
      offers: SEO.JSONLD.Offer.t() | map() | SEO.JSONLD.Demand.t(),
      suitable_for_diet:
        SEO.JSONLD.Diet.t()
        | map()
        | :diabetic_diet
        | :gluten_free_diet
        | :halal_diet
        | :hindu_diet
        | :kosher_diet
        | :low_calorie_diet
        | :low_fat_diet
        | :low_lactose_diet
        | :low_salt_diet
        | :vegan_diet
        | :vegetarian_diet,
      additional_type: String.t() | URI.t(),
      alternate_name: String.t(),
      description: SEO.JSONLD.TextObject.t() | map() | String.t(),
      disambiguating_description: String.t(),
      identifier: String.t() | URI.t() | SEO.JSONLD.PropertyValue.t() | map(),
      image: URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(),
      main_entity_of_page:
        SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(),
      name: String.t(),
      owner: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(),
      potential_action: SEO.JSONLD.Action.t() | map(),
      same_as: URI.t() | String.t(),
      subject_of: SEO.JSONLD.Event.t() | map() | SEO.JSONLD.CreativeWork.t(),
      url: URI.t() | String.t()
    ]

t()

@type t() :: %{required(String.t()) => term()}

A JSON-LD map ready to be nested or rendered. String-keyed, always includes "@type" set to "MenuItem", plus any camelCased field keys the caller provided (see build/1). "@context" is added at render time by SEO.JSONLD.meta/1 on the top-level node only.

Functions

build(attrs)

@spec build(attrs()) :: t()

Build a MenuItem JSON-LD map.

Fields

  • :menu_add_on - Additional menu item(s) such as a side dish of salad or side order of fries that can be added to this menu item. Additionally it can be a menu section containing allowed add-on menu items for this menu item.
  • :nutrition - Nutrition information about the recipe or menu item.
  • :offers - An offer to provide this item—for example, an offer to sell a product, rent the DVD of a movie, perform a service, or give away tickets to an event. Use businessFunction to indicate the kind of transaction offered, i.e. sell, lease, etc. This property can also be used to describe a SEO.JSONLD.Demand. While this property is listed as expected on a number of common types, it can be used in others. In that case, using a second type, such as Product or a subtype of Product, can clarify the nature of the offer.
  • :suitable_for_diet - Indicates a dietary restriction or guideline for which this recipe or menu item is suitable, e.g. diabetic, halal etc. One of: :diabetic_diet, :gluten_free_diet, :halal_diet, :hindu_diet, :kosher_diet, :low_calorie_diet, :low_fat_diet, :low_lactose_diet, :low_salt_diet, :vegan_diet, :vegetarian_diet.

Inherited properties

Additional properties are available through the inheritance chain. See each ancestor's docs for its properties: