src/pkg/encoding/json/tags.go - The Go Programming Language

Golang

Source file src/pkg/encoding/json/tags.go

     1	// Copyright 2011 The Go Authors. All rights reserved.
     2	// Use of this source code is governed by a BSD-style
     3	// license that can be found in the LICENSE file.
     4	
     5	package json
     6	
     7	import (
     8		"strings"
     9	)
    10	
    11	// tagOptions is the string following a comma in a struct field's "json"
    12	// tag, or the empty string. It does not include the leading comma.
    13	type tagOptions string
    14	
    15	// parseTag splits a struct field's json tag into its name and
    16	// comma-separated options.
    17	func parseTag(tag string) (string, tagOptions) {
    18		if idx := strings.Index(tag, ","); idx != -1 {
    19			return tag[:idx], tagOptions(tag[idx+1:])
    20		}
    21		return tag, tagOptions("")
    22	}
    23	
    24	// Contains returns whether checks that a comma-separated list of options
    25	// contains a particular substr flag. substr must be surrounded by a
    26	// string boundary or commas.
    27	func (o tagOptions) Contains(optionName string) bool {
    28		if len(o) == 0 {
    29			return false
    30		}
    31		s := string(o)
    32		for s != "" {
    33			var next string
    34			i := strings.Index(s, ",")
    35			if i >= 0 {
    36				s, next = s[:i], s[i+1:]
    37			}
    38			if s == optionName {
    39				return true
    40			}
    41			s = next
    42		}
    43		return false
    44	}