| /* |
| Copyright 2015 The Kubernetes Authors. |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| package fields |
| |
| import ( |
| "sort" |
| "strings" |
| ) |
| |
| // Fields allows you to present fields independently from their storage. |
| type Fields interface { |
| // Has returns whether the provided field exists. |
| Has(field string) (exists bool) |
| |
| // Get returns the value for the provided field. |
| Get(field string) (value string) |
| } |
| |
| // Set is a map of field:value. It implements Fields. |
| type Set map[string]string |
| |
| // String returns all fields listed as a human readable string. |
| // Conveniently, exactly the format that ParseSelector takes. |
| func (ls Set) String() string { |
| selector := make([]string, 0, len(ls)) |
| for key, value := range ls { |
| selector = append(selector, key+"="+value) |
| } |
| // Sort for determinism. |
| sort.StringSlice(selector).Sort() |
| return strings.Join(selector, ",") |
| } |
| |
| // Has returns whether the provided field exists in the map. |
| func (ls Set) Has(field string) bool { |
| _, exists := ls[field] |
| return exists |
| } |
| |
| // Get returns the value in the map for the provided field. |
| func (ls Set) Get(field string) string { |
| return ls[field] |
| } |
| |
| // AsSelector converts fields into a selectors. |
| func (ls Set) AsSelector() Selector { |
| return SelectorFromSet(ls) |
| } |