package lens // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at // 2025-11-12 18:15:07.69943 +0100 CET m=+0.005345401 import ( L "github.com/IBM/fp-go/v2/optics/lens" LO "github.com/IBM/fp-go/v2/optics/lens/option" O "github.com/IBM/fp-go/v2/option" I "github.com/IBM/fp-go/v2/optics/iso/option" option "github.com/IBM/fp-go/v2/optics/lens/option" ) // PersonLenses provides lenses for accessing fields of Person type PersonLenses struct { Name L.Lens[Person, string] Age L.Lens[Person, int] Email L.Lens[Person, string] Phone LO.LensO[Person, *string] } // PersonRefLenses provides lenses for accessing fields of Person via a reference to Person type PersonRefLenses struct { Name L.Lens[*Person, string] Age L.Lens[*Person, int] Email L.Lens[*Person, string] Phone LO.LensO[*Person, *string] } // MakePersonLenses creates a new PersonLenses with lenses for all fields func MakePersonLenses() PersonLenses { isoPhone := I.FromZero[*string]() return PersonLenses{ Name: L.MakeLens( func(s Person) string { return s.Name }, func(s Person, v string) Person { s.Name = v; return s }, ), Age: L.MakeLens( func(s Person) int { return s.Age }, func(s Person, v int) Person { s.Age = v; return s }, ), Email: L.MakeLens( func(s Person) string { return s.Email }, func(s Person, v string) Person { s.Email = v; return s }, ), Phone: L.MakeLens( func(s Person) O.Option[*string] { return isoPhone.Get(s.Phone) }, func(s Person, v O.Option[*string]) Person { s.Phone = isoPhone.ReverseGet(v); return s }, ), } } // MakePersonRefLenses creates a new PersonRefLenses with lenses for all fields func MakePersonRefLenses() PersonRefLenses { return PersonRefLenses{ Name: L.MakeLensStrict( func(s *Person) string { return s.Name }, func(s *Person, v string) *Person { s.Name = v; return s }, ), Age: L.MakeLensStrict( func(s *Person) int { return s.Age }, func(s *Person, v int) *Person { s.Age = v; return s }, ), Email: L.MakeLensStrict( func(s *Person) string { return s.Email }, func(s *Person, v string) *Person { s.Email = v; return s }, ), Phone: LO.FromIso[*Person](I.FromZero[*string]())(L.MakeLensStrict( func(s *Person) *string { return s.Phone }, func(s *Person, v *string) *Person { s.Phone = v; return s }, )), } } // AddressLenses provides lenses for accessing fields of Address type AddressLenses struct { Street L.Lens[Address, string] City L.Lens[Address, string] ZipCode L.Lens[Address, string] Country L.Lens[Address, string] State LO.LensO[Address, *string] } // AddressRefLenses provides lenses for accessing fields of Address via a reference to Address type AddressRefLenses struct { Street L.Lens[*Address, string] City L.Lens[*Address, string] ZipCode L.Lens[*Address, string] Country L.Lens[*Address, string] State LO.LensO[*Address, *string] } // MakeAddressLenses creates a new AddressLenses with lenses for all fields func MakeAddressLenses() AddressLenses { isoState := I.FromZero[*string]() return AddressLenses{ Street: L.MakeLens( func(s Address) string { return s.Street }, func(s Address, v string) Address { s.Street = v; return s }, ), City: L.MakeLens( func(s Address) string { return s.City }, func(s Address, v string) Address { s.City = v; return s }, ), ZipCode: L.MakeLens( func(s Address) string { return s.ZipCode }, func(s Address, v string) Address { s.ZipCode = v; return s }, ), Country: L.MakeLens( func(s Address) string { return s.Country }, func(s Address, v string) Address { s.Country = v; return s }, ), State: L.MakeLens( func(s Address) O.Option[*string] { return isoState.Get(s.State) }, func(s Address, v O.Option[*string]) Address { s.State = isoState.ReverseGet(v); return s }, ), } } // MakeAddressRefLenses creates a new AddressRefLenses with lenses for all fields func MakeAddressRefLenses() AddressRefLenses { return AddressRefLenses{ Street: L.MakeLensStrict( func(s *Address) string { return s.Street }, func(s *Address, v string) *Address { s.Street = v; return s }, ), City: L.MakeLensStrict( func(s *Address) string { return s.City }, func(s *Address, v string) *Address { s.City = v; return s }, ), ZipCode: L.MakeLensStrict( func(s *Address) string { return s.ZipCode }, func(s *Address, v string) *Address { s.ZipCode = v; return s }, ), Country: L.MakeLensStrict( func(s *Address) string { return s.Country }, func(s *Address, v string) *Address { s.Country = v; return s }, ), State: LO.FromIso[*Address](I.FromZero[*string]())(L.MakeLensStrict( func(s *Address) *string { return s.State }, func(s *Address, v *string) *Address { s.State = v; return s }, )), } } // CompanyLenses provides lenses for accessing fields of Company type CompanyLenses struct { Name L.Lens[Company, string] Address L.Lens[Company, Address] CEO L.Lens[Company, Person] Website LO.LensO[Company, *string] } // CompanyRefLenses provides lenses for accessing fields of Company via a reference to Company type CompanyRefLenses struct { Name L.Lens[*Company, string] Address L.Lens[*Company, Address] CEO L.Lens[*Company, Person] Website LO.LensO[*Company, *string] } // MakeCompanyLenses creates a new CompanyLenses with lenses for all fields func MakeCompanyLenses() CompanyLenses { isoWebsite := I.FromZero[*string]() return CompanyLenses{ Name: L.MakeLens( func(s Company) string { return s.Name }, func(s Company, v string) Company { s.Name = v; return s }, ), Address: L.MakeLens( func(s Company) Address { return s.Address }, func(s Company, v Address) Company { s.Address = v; return s }, ), CEO: L.MakeLens( func(s Company) Person { return s.CEO }, func(s Company, v Person) Company { s.CEO = v; return s }, ), Website: L.MakeLens( func(s Company) O.Option[*string] { return isoWebsite.Get(s.Website) }, func(s Company, v O.Option[*string]) Company { s.Website = isoWebsite.ReverseGet(v); return s }, ), } } // MakeCompanyRefLenses creates a new CompanyRefLenses with lenses for all fields func MakeCompanyRefLenses() CompanyRefLenses { return CompanyRefLenses{ Name: L.MakeLensStrict( func(s *Company) string { return s.Name }, func(s *Company, v string) *Company { s.Name = v; return s }, ), Address: L.MakeLensStrict( func(s *Company) Address { return s.Address }, func(s *Company, v Address) *Company { s.Address = v; return s }, ), CEO: L.MakeLensStrict( func(s *Company) Person { return s.CEO }, func(s *Company, v Person) *Company { s.CEO = v; return s }, ), Website: LO.FromIso[*Company](I.FromZero[*string]())(L.MakeLensStrict( func(s *Company) *string { return s.Website }, func(s *Company, v *string) *Company { s.Website = v; return s }, )), } } // CheckOptionLenses provides lenses for accessing fields of CheckOption type CheckOptionLenses struct { Name L.Lens[CheckOption, option.Option[string]] Value LO.LensO[CheckOption, string] } // CheckOptionRefLenses provides lenses for accessing fields of CheckOption via a reference to CheckOption type CheckOptionRefLenses struct { Name L.Lens[*CheckOption, option.Option[string]] Value LO.LensO[*CheckOption, string] } // MakeCheckOptionLenses creates a new CheckOptionLenses with lenses for all fields func MakeCheckOptionLenses() CheckOptionLenses { isoValue := I.FromZero[string]() return CheckOptionLenses{ Name: L.MakeLens( func(s CheckOption) option.Option[string] { return s.Name }, func(s CheckOption, v option.Option[string]) CheckOption { s.Name = v; return s }, ), Value: L.MakeLens( func(s CheckOption) O.Option[string] { return isoValue.Get(s.Value) }, func(s CheckOption, v O.Option[string]) CheckOption { s.Value = isoValue.ReverseGet(v); return s }, ), } } // MakeCheckOptionRefLenses creates a new CheckOptionRefLenses with lenses for all fields func MakeCheckOptionRefLenses() CheckOptionRefLenses { return CheckOptionRefLenses{ Name: L.MakeLensRef( func(s *CheckOption) option.Option[string] { return s.Name }, func(s *CheckOption, v option.Option[string]) *CheckOption { s.Name = v; return s }, ), Value: LO.FromIso[*CheckOption](I.FromZero[string]())(L.MakeLensStrict( func(s *CheckOption) string { return s.Value }, func(s *CheckOption, v string) *CheckOption { s.Value = v; return s }, )), } }