mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-30 06:38:37 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
		
			907 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			907 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2024 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package optional
 | |
| 
 | |
| import "strconv"
 | |
| 
 | |
| type Option[T any] []T
 | |
| 
 | |
| func None[T any]() Option[T] {
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func Some[T any](v T) Option[T] {
 | |
| 	return Option[T]{v}
 | |
| }
 | |
| 
 | |
| func FromPtr[T any](v *T) Option[T] {
 | |
| 	if v == nil {
 | |
| 		return None[T]()
 | |
| 	}
 | |
| 	return Some(*v)
 | |
| }
 | |
| 
 | |
| func FromNonDefault[T comparable](v T) Option[T] {
 | |
| 	var zero T
 | |
| 	if v == zero {
 | |
| 		return None[T]()
 | |
| 	}
 | |
| 	return Some(v)
 | |
| }
 | |
| 
 | |
| func (o Option[T]) Has() bool {
 | |
| 	return o != nil
 | |
| }
 | |
| 
 | |
| func (o Option[T]) Value() T {
 | |
| 	var zero T
 | |
| 	return o.ValueOrDefault(zero)
 | |
| }
 | |
| 
 | |
| func (o Option[T]) ValueOrDefault(v T) T {
 | |
| 	if o.Has() {
 | |
| 		return o[0]
 | |
| 	}
 | |
| 	return v
 | |
| }
 | |
| 
 | |
| // ParseBool get the corresponding optional.Option[bool] of a string using strconv.ParseBool
 | |
| func ParseBool(s string) Option[bool] {
 | |
| 	v, e := strconv.ParseBool(s)
 | |
| 	if e != nil {
 | |
| 		return None[bool]()
 | |
| 	}
 | |
| 	return Some(v)
 | |
| }
 |