github.com/vanus-labs/vanus/lib@v0.0.0-20231221070800-1334a7b9605e/json/path/selector.go (about)

     1  // Copyright 2023 Linkall Inc.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package path
    16  
    17  type Selector interface {
    18  	Apply()
    19  }
    20  
    21  type nameSelector struct {
    22  	member string
    23  }
    24  
    25  // Make sure nameSelector implements Selector.
    26  var _ Selector = (*nameSelector)(nil)
    27  
    28  func (ns *nameSelector) Apply() {}
    29  
    30  type wildcardSelector struct{}
    31  
    32  // Make sure wildcardSelector implements Selector.
    33  var _ Selector = (*wildcardSelector)(nil)
    34  
    35  func (ws *wildcardSelector) Apply() {}
    36  
    37  type indexSelector struct {
    38  	index int
    39  }
    40  
    41  // Make sure indexSelector implements Selector.
    42  var _ Selector = (*indexSelector)(nil)
    43  
    44  func (is *indexSelector) Apply() {}
    45  
    46  type arraySliceSelector struct {
    47  	start *int
    48  	end   *int
    49  	step  int
    50  }
    51  
    52  // Make sure arraySliceSelector implements Selector.
    53  var _ Selector = (*arraySliceSelector)(nil)
    54  
    55  func (ass *arraySliceSelector) Apply() {}