gitech

Форк
0
/
serialization.go 
46 строк · 798.0 Байт
1
// Copyright 2024 The Gitea Authors. All rights reserved.
2
// SPDX-License-Identifier: MIT
3

4
package optional
5

6
import (
7
	"code.gitea.io/gitea/modules/json"
8

9
	"gopkg.in/yaml.v3"
10
)
11

12
func (o *Option[T]) UnmarshalJSON(data []byte) error {
13
	var v *T
14
	if err := json.Unmarshal(data, &v); err != nil {
15
		return err
16
	}
17
	*o = FromPtr(v)
18
	return nil
19
}
20

21
func (o Option[T]) MarshalJSON() ([]byte, error) {
22
	if !o.Has() {
23
		return []byte("null"), nil
24
	}
25

26
	return json.Marshal(o.Value())
27
}
28

29
func (o *Option[T]) UnmarshalYAML(value *yaml.Node) error {
30
	var v *T
31
	if err := value.Decode(&v); err != nil {
32
		return err
33
	}
34
	*o = FromPtr(v)
35
	return nil
36
}
37

38
func (o Option[T]) MarshalYAML() (any, error) {
39
	if !o.Has() {
40
		return nil, nil
41
	}
42

43
	value := new(yaml.Node)
44
	err := value.Encode(o.Value())
45
	return value, err
46
}
47

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.