gitech
1// Copyright 2024 The Gitea Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3
4package optional5
6import (7"code.gitea.io/gitea/modules/json"8
9"gopkg.in/yaml.v3"10)
11
12func (o *Option[T]) UnmarshalJSON(data []byte) error {13var v *T14if err := json.Unmarshal(data, &v); err != nil {15return err16}17*o = FromPtr(v)18return nil19}
20
21func (o Option[T]) MarshalJSON() ([]byte, error) {22if !o.Has() {23return []byte("null"), nil24}25
26return json.Marshal(o.Value())27}
28
29func (o *Option[T]) UnmarshalYAML(value *yaml.Node) error {30var v *T31if err := value.Decode(&v); err != nil {32return err33}34*o = FromPtr(v)35return nil36}
37
38func (o Option[T]) MarshalYAML() (any, error) {39if !o.Has() {40return nil, nil41}42
43value := new(yaml.Node)44err := value.Encode(o.Value())45return value, err46}
47