removed the pre-generics implementation of an optional-type / option-type / maybe-type for the Go programming language
							parent
							
								
									96351d3ad7
								
							
						
					
					
						commit
						e86446ff5b
					
				|  | @ -1,248 +0,0 @@ | |||
| package optstring | ||||
| 
 | ||||
| /* | ||||
|  * CODE GENERATED AUTOMATICALLY WITH https://github.com/reiver/gogen-optiontype
 | ||||
|  * THIS FILE SHOULD NOT BE EDITED BY HAND | ||||
|  */ | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"database/sql/driver" | ||||
| 	"encoding/json" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	errNilReceiver  = errors.New("Nil Receiver") | ||||
| 	errNone         = errors.New("optstring.None()") | ||||
| 	errNoneNullable = errors.New("optstring.NoneNullable()") | ||||
| 	errNull         = errors.New("optstring.Null()") | ||||
| ) | ||||
| 
 | ||||
| func (receiver *NullableType) Scan(src interface{}) error { | ||||
| 	if nil == receiver { | ||||
| 		return errNilReceiver | ||||
| 	} | ||||
| 
 | ||||
| 	if nil == src { | ||||
| 		*receiver = Null() | ||||
| 		return nil | ||||
| 	} | ||||
| 
 | ||||
| 	switch t := src.(type) { | ||||
| 	case NullableType: | ||||
| 		*receiver = t | ||||
| 		return nil | ||||
| 	case Type: | ||||
| 		switch t { | ||||
| 		case None(): | ||||
| 			*receiver = NoneNullable() | ||||
| 		default: | ||||
| 			datum, err := t.String() | ||||
| 			if nil != err { | ||||
| 				return fmt.Errorf("Problem unwrapping %T: (%T) %v", t, err, err) | ||||
| 			} | ||||
| 			*receiver = SomeNullable(datum) | ||||
| 		} | ||||
| 		return nil | ||||
| 	case string: | ||||
| 		*receiver = SomeNullable(t) | ||||
| 		return nil | ||||
| 	case []byte: | ||||
| 		s := string(t) | ||||
| 		*receiver = SomeNullable(s) | ||||
| 		return nil | ||||
| 	default: | ||||
| 		return fmt.Errorf("Cannot scan something of type %T into an %T.", src, *receiver) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (receiver NullableType) String() (string, error) { | ||||
| 	if NoneNullable() == receiver { | ||||
| 		return "", errNoneNullable | ||||
| 	} | ||||
| 	if Null() == receiver { | ||||
| 		return "", errNull | ||||
| 	} | ||||
| 
 | ||||
| 	return receiver.value, nil | ||||
| } | ||||
| 
 | ||||
| type NullableType struct { | ||||
| 	loaded bool | ||||
| 	null   bool | ||||
| 	value  string | ||||
| } | ||||
| 
 | ||||
| func (receiver NullableType) MarshalJSON() ([]byte, error) { | ||||
| 	if NoneNullable() == receiver { | ||||
| 		return nil, errNoneNullable | ||||
| 	} | ||||
| 	if Null() == receiver { | ||||
| 		return json.Marshal(nil) | ||||
| 	} | ||||
| 
 | ||||
| 	return json.Marshal(receiver.value) | ||||
| } | ||||
| 
 | ||||
| func (receiver NullableType) WhenNone(fn func()) { | ||||
| 	if NoneNullable() == receiver { | ||||
| 		fn() | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (receiver NullableType) WhenNull(fn func()) { | ||||
| 	if Null() == receiver { | ||||
| 		fn() | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (receiver NullableType) WhenSome(fn func(string)) { | ||||
| 	if NoneNullable() != receiver && Null() != receiver { | ||||
| 		fn(receiver.value) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (receiver *NullableType) UnmarshalJSON(b []byte) error { | ||||
| 	if nil == receiver { | ||||
| 		return errNilReceiver | ||||
| 	} | ||||
| 
 | ||||
| 	if 0 == bytes.Compare(b, []byte{'n','u','l','l'}) { | ||||
| 		*receiver = Null() | ||||
| 		return nil | ||||
| 	} | ||||
| 
 | ||||
| 	var target string | ||||
| 
 | ||||
| 	if err := json.Unmarshal(b, &target); nil != err { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	*receiver = SomeNullable(target) | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func (receiver NullableType) Value() (driver.Value, error) { | ||||
| 	if NoneNullable() == receiver { | ||||
| 		return nil, errNoneNullable | ||||
| 	} | ||||
| 	if Null() == receiver { | ||||
| 		return nil, nil | ||||
| 	} | ||||
| 
 | ||||
| 	return receiver.value, nil | ||||
| } | ||||
| 
 | ||||
| func NoneNullable() NullableType { | ||||
| 	return NullableType{} | ||||
| } | ||||
| 
 | ||||
| func SomeNullable(value string) NullableType { | ||||
| 	return NullableType{ | ||||
| 		value:  value, | ||||
| 		loaded: true, | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func Null() NullableType { | ||||
| 	return NullableType{ | ||||
| 		null:   true, | ||||
| 		loaded: true, | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (receiver *Type) Scan(src interface{}) error { | ||||
| 	if nil == receiver { | ||||
| 		return errNilReceiver | ||||
| 	} | ||||
| 
 | ||||
| 	switch t := src.(type) { | ||||
| 	case Type: | ||||
| 		*receiver = t | ||||
| 		return nil | ||||
| 	case string: | ||||
| 		*receiver = Some(t) | ||||
| 		return nil | ||||
| 	case []byte: | ||||
| 		s := string(t) | ||||
| 		*receiver = Some(s) | ||||
| 		return nil | ||||
| 	default: | ||||
| 		return fmt.Errorf("Cannot scan something of type %T into an %T.", src, *receiver) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (receiver Type) String() (string, error) { | ||||
| 	if None() == receiver { | ||||
| 		return "", errNone | ||||
| 	} | ||||
| 
 | ||||
| 	return receiver.value, nil | ||||
| } | ||||
| 
 | ||||
| type Type struct { | ||||
| 	loaded bool | ||||
| 	value  string | ||||
| } | ||||
| 
 | ||||
| func (receiver Type) MarshalJSON() ([]byte, error) { | ||||
| 	if None() == receiver { | ||||
| 		return nil, errNone | ||||
| 	} | ||||
| 
 | ||||
| 	return json.Marshal(receiver.value) | ||||
| } | ||||
| 
 | ||||
| func (receiver *Type) UnmarshalJSON(b []byte) error { | ||||
| 	if nil == receiver { | ||||
| 		return errNilReceiver | ||||
| 	} | ||||
| 
 | ||||
| 	if 0 == bytes.Compare(b, []byte{'n','u','l','l'}) { | ||||
| 		return fmt.Errorf("Cannot unmarshal %q into %T.", string(b), *receiver) | ||||
| 	} | ||||
| 
 | ||||
| 	var target string | ||||
| 
 | ||||
| 	if err := json.Unmarshal(b, &target); nil != err { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	*receiver = Some(target) | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func (receiver Type) WhenNone(fn func()) { | ||||
| 	if None() == receiver { | ||||
| 		fn() | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (receiver Type) WhenSome(fn func(string)) { | ||||
| 	if None() != receiver { | ||||
| 		fn(receiver.value) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (receiver Type) Value() (driver.Value, error) { | ||||
| 	if None() == receiver { | ||||
| 		return nil, errNone | ||||
| 	} | ||||
| 
 | ||||
| 	return receiver.value, nil | ||||
| } | ||||
| 
 | ||||
| func None() Type { | ||||
| 	return Type{} | ||||
| } | ||||
| 
 | ||||
| func Some(value string) Type { | ||||
| 	return Type{ | ||||
| 		value:  value, | ||||
| 		loaded: true, | ||||
| 	} | ||||
| } | ||||
|  | @ -1,3 +0,0 @@ | |||
| package optstring | ||||
| 
 | ||||
| //go:generate gogen-optiontype --pkg=optstring --type=string --one-file --no-tests
 | ||||
		Loading…
	
		Reference in New Issue