...

Source file src/github.com/xeipuuv/gojsonschema/locales.go

Documentation: github.com/xeipuuv/gojsonschema

     1  // Copyright 2015 xeipuuv ( https://github.com/xeipuuv )
     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  // author           xeipuuv
    16  // author-github    https://github.com/xeipuuv
    17  // author-mail      xeipuuv@gmail.com
    18  //
    19  // repository-name  gojsonschema
    20  // repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.
    21  //
    22  // description      Contains const string and messages.
    23  //
    24  // created          01-01-2015
    25  
    26  package gojsonschema
    27  
    28  type (
    29  	// locale is an interface for defining custom error strings
    30  	locale interface {
    31  
    32  		// False returns a format-string for "false" schema validation errors
    33  		False() string
    34  
    35  		// Required returns a format-string for "required" schema validation errors
    36  		Required() string
    37  
    38  		// InvalidType returns a format-string for "invalid type" schema validation errors
    39  		InvalidType() string
    40  
    41  		// NumberAnyOf returns a format-string for "anyOf" schema validation errors
    42  		NumberAnyOf() string
    43  
    44  		// NumberOneOf returns a format-string for "oneOf" schema validation errors
    45  		NumberOneOf() string
    46  
    47  		// NumberAllOf returns a format-string for "allOf" schema validation errors
    48  		NumberAllOf() string
    49  
    50  		// NumberNot returns a format-string to format a NumberNotError
    51  		NumberNot() string
    52  
    53  		// MissingDependency returns a format-string for "missing dependency" schema validation errors
    54  		MissingDependency() string
    55  
    56  		// Internal returns a format-string for internal errors
    57  		Internal() string
    58  
    59  		// Const returns a format-string to format a ConstError
    60  		Const() string
    61  
    62  		// Enum returns a format-string to format an EnumError
    63  		Enum() string
    64  
    65  		// ArrayNotEnoughItems returns a format-string to format an error for arrays having not enough items to match positional list of schema
    66  		ArrayNotEnoughItems() string
    67  
    68  		// ArrayNoAdditionalItems returns a format-string to format an ArrayNoAdditionalItemsError
    69  		ArrayNoAdditionalItems() string
    70  
    71  		// ArrayMinItems returns a format-string to format an ArrayMinItemsError
    72  		ArrayMinItems() string
    73  
    74  		// ArrayMaxItems returns a format-string to format an ArrayMaxItemsError
    75  		ArrayMaxItems() string
    76  
    77  		// Unique returns a format-string  to format an ItemsMustBeUniqueError
    78  		Unique() string
    79  
    80  		// ArrayContains returns a format-string to format an ArrayContainsError
    81  		ArrayContains() string
    82  
    83  		// ArrayMinProperties returns a format-string to format an ArrayMinPropertiesError
    84  		ArrayMinProperties() string
    85  
    86  		// ArrayMaxProperties returns a format-string to format an ArrayMaxPropertiesError
    87  		ArrayMaxProperties() string
    88  
    89  		// AdditionalPropertyNotAllowed returns a format-string to format an AdditionalPropertyNotAllowedError
    90  		AdditionalPropertyNotAllowed() string
    91  
    92  		// InvalidPropertyPattern returns a format-string to format an InvalidPropertyPatternError
    93  		InvalidPropertyPattern() string
    94  
    95  		// InvalidPropertyName returns a format-string to format an InvalidPropertyNameError
    96  		InvalidPropertyName() string
    97  
    98  		// StringGTE returns a format-string to format an StringLengthGTEError
    99  		StringGTE() string
   100  
   101  		// StringLTE returns a format-string to format an StringLengthLTEError
   102  		StringLTE() string
   103  
   104  		// DoesNotMatchPattern returns a format-string to format an DoesNotMatchPatternError
   105  		DoesNotMatchPattern() string
   106  
   107  		// DoesNotMatchFormat returns a format-string to format an DoesNotMatchFormatError
   108  		DoesNotMatchFormat() string
   109  
   110  		// MultipleOf returns a format-string to format an MultipleOfError
   111  		MultipleOf() string
   112  
   113  		// NumberGTE returns a format-string to format an NumberGTEError
   114  		NumberGTE() string
   115  
   116  		// NumberGT returns a format-string to format an NumberGTError
   117  		NumberGT() string
   118  
   119  		// NumberLTE returns a format-string to format an NumberLTEError
   120  		NumberLTE() string
   121  
   122  		// NumberLT returns a format-string to format an NumberLTError
   123  		NumberLT() string
   124  
   125  		// Schema validations
   126  
   127  		// RegexPattern returns a format-string to format a regex-pattern error
   128  		RegexPattern() string
   129  
   130  		// GreaterThanZero returns a format-string to format an error where a number must be greater than zero
   131  		GreaterThanZero() string
   132  
   133  		// MustBeOfA returns a format-string to format an error where a value is of the wrong type
   134  		MustBeOfA() string
   135  
   136  		// MustBeOfAn returns a format-string to format an error where a value is of the wrong type
   137  		MustBeOfAn() string
   138  
   139  		// CannotBeUsedWithout returns a format-string to format a "cannot be used without" error
   140  		CannotBeUsedWithout() string
   141  
   142  		// CannotBeGT returns a format-string to format an error where a value are greater than allowed
   143  		CannotBeGT() string
   144  
   145  		// MustBeOfType returns a format-string to format an error where a value does not match the required type
   146  		MustBeOfType() string
   147  
   148  		// MustBeValidRegex returns a format-string to format an error where a regex is invalid
   149  		MustBeValidRegex() string
   150  
   151  		// MustBeValidFormat returns a format-string to format an error where a value does not match the expected format
   152  		MustBeValidFormat() string
   153  
   154  		// MustBeGTEZero returns a format-string to format an error where a value must be greater or equal than 0
   155  		MustBeGTEZero() string
   156  
   157  		// KeyCannotBeGreaterThan returns a format-string to format an error where a key is greater than the maximum  allowed
   158  		KeyCannotBeGreaterThan() string
   159  
   160  		// KeyItemsMustBeOfType returns a format-string to format an error where a key is of the wrong type
   161  		KeyItemsMustBeOfType() string
   162  
   163  		// KeyItemsMustBeUnique returns a format-string to format an error where keys are not unique
   164  		KeyItemsMustBeUnique() string
   165  
   166  		// ReferenceMustBeCanonical returns a format-string to format a "reference must be canonical" error
   167  		ReferenceMustBeCanonical() string
   168  
   169  		// NotAValidType returns a format-string to format an invalid type error
   170  		NotAValidType() string
   171  
   172  		// Duplicated returns a format-string to format an error where types are duplicated
   173  		Duplicated() string
   174  
   175  		// HttpBadStatus returns a format-string for errors when loading a schema using HTTP
   176  		HttpBadStatus() string
   177  
   178  		// ParseError returns a format-string for JSON parsing errors
   179  		ParseError() string
   180  
   181  		// ConditionThen returns a format-string for ConditionThenError errors
   182  		ConditionThen() string
   183  
   184  		// ConditionElse returns a format-string for ConditionElseError errors
   185  		ConditionElse() string
   186  
   187  		// ErrorFormat returns a format string for errors
   188  		ErrorFormat() string
   189  	}
   190  
   191  	// DefaultLocale is the default locale for this package
   192  	DefaultLocale struct{}
   193  )
   194  
   195  // False returns a format-string for "false" schema validation errors
   196  func (l DefaultLocale) False() string {
   197  	return "False always fails validation"
   198  }
   199  
   200  // Required returns a format-string for "required" schema validation errors
   201  func (l DefaultLocale) Required() string {
   202  	return `{{.property}} is required`
   203  }
   204  
   205  // InvalidType returns a format-string for "invalid type" schema validation errors
   206  func (l DefaultLocale) InvalidType() string {
   207  	return `Invalid type. Expected: {{.expected}}, given: {{.given}}`
   208  }
   209  
   210  // NumberAnyOf returns a format-string for "anyOf" schema validation errors
   211  func (l DefaultLocale) NumberAnyOf() string {
   212  	return `Must validate at least one schema (anyOf)`
   213  }
   214  
   215  // NumberOneOf returns a format-string for "oneOf" schema validation errors
   216  func (l DefaultLocale) NumberOneOf() string {
   217  	return `Must validate one and only one schema (oneOf)`
   218  }
   219  
   220  // NumberAllOf returns a format-string for "allOf" schema validation errors
   221  func (l DefaultLocale) NumberAllOf() string {
   222  	return `Must validate all the schemas (allOf)`
   223  }
   224  
   225  // NumberNot returns a format-string to format a NumberNotError
   226  func (l DefaultLocale) NumberNot() string {
   227  	return `Must not validate the schema (not)`
   228  }
   229  
   230  // MissingDependency returns a format-string for "missing dependency" schema validation errors
   231  func (l DefaultLocale) MissingDependency() string {
   232  	return `Has a dependency on {{.dependency}}`
   233  }
   234  
   235  // Internal returns a format-string for internal errors
   236  func (l DefaultLocale) Internal() string {
   237  	return `Internal Error {{.error}}`
   238  }
   239  
   240  // Const returns a format-string to format a ConstError
   241  func (l DefaultLocale) Const() string {
   242  	return `{{.field}} does not match: {{.allowed}}`
   243  }
   244  
   245  // Enum returns a format-string to format an EnumError
   246  func (l DefaultLocale) Enum() string {
   247  	return `{{.field}} must be one of the following: {{.allowed}}`
   248  }
   249  
   250  // ArrayNoAdditionalItems returns a format-string to format an ArrayNoAdditionalItemsError
   251  func (l DefaultLocale) ArrayNoAdditionalItems() string {
   252  	return `No additional items allowed on array`
   253  }
   254  
   255  // ArrayNotEnoughItems returns a format-string to format an error for arrays having not enough items to match positional list of schema
   256  func (l DefaultLocale) ArrayNotEnoughItems() string {
   257  	return `Not enough items on array to match positional list of schema`
   258  }
   259  
   260  // ArrayMinItems returns a format-string to format an ArrayMinItemsError
   261  func (l DefaultLocale) ArrayMinItems() string {
   262  	return `Array must have at least {{.min}} items`
   263  }
   264  
   265  // ArrayMaxItems returns a format-string to format an ArrayMaxItemsError
   266  func (l DefaultLocale) ArrayMaxItems() string {
   267  	return `Array must have at most {{.max}} items`
   268  }
   269  
   270  // Unique returns a format-string  to format an ItemsMustBeUniqueError
   271  func (l DefaultLocale) Unique() string {
   272  	return `{{.type}} items[{{.i}},{{.j}}] must be unique`
   273  }
   274  
   275  // ArrayContains returns a format-string to format an ArrayContainsError
   276  func (l DefaultLocale) ArrayContains() string {
   277  	return `At least one of the items must match`
   278  }
   279  
   280  // ArrayMinProperties returns a format-string to format an ArrayMinPropertiesError
   281  func (l DefaultLocale) ArrayMinProperties() string {
   282  	return `Must have at least {{.min}} properties`
   283  }
   284  
   285  // ArrayMaxProperties returns a format-string to format an ArrayMaxPropertiesError
   286  func (l DefaultLocale) ArrayMaxProperties() string {
   287  	return `Must have at most {{.max}} properties`
   288  }
   289  
   290  // AdditionalPropertyNotAllowed returns a format-string to format an AdditionalPropertyNotAllowedError
   291  func (l DefaultLocale) AdditionalPropertyNotAllowed() string {
   292  	return `Additional property {{.property}} is not allowed`
   293  }
   294  
   295  // InvalidPropertyPattern returns a format-string to format an InvalidPropertyPatternError
   296  func (l DefaultLocale) InvalidPropertyPattern() string {
   297  	return `Property "{{.property}}" does not match pattern {{.pattern}}`
   298  }
   299  
   300  // InvalidPropertyName returns a format-string to format an InvalidPropertyNameError
   301  func (l DefaultLocale) InvalidPropertyName() string {
   302  	return `Property name of "{{.property}}" does not match`
   303  }
   304  
   305  // StringGTE returns a format-string to format an StringLengthGTEError
   306  func (l DefaultLocale) StringGTE() string {
   307  	return `String length must be greater than or equal to {{.min}}`
   308  }
   309  
   310  // StringLTE returns a format-string to format an StringLengthLTEError
   311  func (l DefaultLocale) StringLTE() string {
   312  	return `String length must be less than or equal to {{.max}}`
   313  }
   314  
   315  // DoesNotMatchPattern returns a format-string to format an DoesNotMatchPatternError
   316  func (l DefaultLocale) DoesNotMatchPattern() string {
   317  	return `Does not match pattern '{{.pattern}}'`
   318  }
   319  
   320  // DoesNotMatchFormat returns a format-string to format an DoesNotMatchFormatError
   321  func (l DefaultLocale) DoesNotMatchFormat() string {
   322  	return `Does not match format '{{.format}}'`
   323  }
   324  
   325  // MultipleOf returns a format-string to format an MultipleOfError
   326  func (l DefaultLocale) MultipleOf() string {
   327  	return `Must be a multiple of {{.multiple}}`
   328  }
   329  
   330  // NumberGTE returns the format string to format a NumberGTEError
   331  func (l DefaultLocale) NumberGTE() string {
   332  	return `Must be greater than or equal to {{.min}}`
   333  }
   334  
   335  // NumberGT returns the format string to format a NumberGTError
   336  func (l DefaultLocale) NumberGT() string {
   337  	return `Must be greater than {{.min}}`
   338  }
   339  
   340  // NumberLTE returns the format string to format a NumberLTEError
   341  func (l DefaultLocale) NumberLTE() string {
   342  	return `Must be less than or equal to {{.max}}`
   343  }
   344  
   345  // NumberLT returns the format string to format a NumberLTError
   346  func (l DefaultLocale) NumberLT() string {
   347  	return `Must be less than {{.max}}`
   348  }
   349  
   350  // Schema validators
   351  
   352  // RegexPattern returns a format-string to format a regex-pattern error
   353  func (l DefaultLocale) RegexPattern() string {
   354  	return `Invalid regex pattern '{{.pattern}}'`
   355  }
   356  
   357  // GreaterThanZero returns a format-string to format an error where a number must be greater than zero
   358  func (l DefaultLocale) GreaterThanZero() string {
   359  	return `{{.number}} must be strictly greater than 0`
   360  }
   361  
   362  // MustBeOfA returns a format-string to format an error where a value is of the wrong type
   363  func (l DefaultLocale) MustBeOfA() string {
   364  	return `{{.x}} must be of a {{.y}}`
   365  }
   366  
   367  // MustBeOfAn returns a format-string to format an error where a value is of the wrong type
   368  func (l DefaultLocale) MustBeOfAn() string {
   369  	return `{{.x}} must be of an {{.y}}`
   370  }
   371  
   372  // CannotBeUsedWithout returns a format-string to format a "cannot be used without" error
   373  func (l DefaultLocale) CannotBeUsedWithout() string {
   374  	return `{{.x}} cannot be used without {{.y}}`
   375  }
   376  
   377  // CannotBeGT returns a format-string to format an error where a value are greater than allowed
   378  func (l DefaultLocale) CannotBeGT() string {
   379  	return `{{.x}} cannot be greater than {{.y}}`
   380  }
   381  
   382  // MustBeOfType returns a format-string to format an error where a value does not match the required type
   383  func (l DefaultLocale) MustBeOfType() string {
   384  	return `{{.key}} must be of type {{.type}}`
   385  }
   386  
   387  // MustBeValidRegex returns a format-string to format an error where a regex is invalid
   388  func (l DefaultLocale) MustBeValidRegex() string {
   389  	return `{{.key}} must be a valid regex`
   390  }
   391  
   392  // MustBeValidFormat returns a format-string to format an error where a value does not match the expected format
   393  func (l DefaultLocale) MustBeValidFormat() string {
   394  	return `{{.key}} must be a valid format {{.given}}`
   395  }
   396  
   397  // MustBeGTEZero returns a format-string to format an error where a value must be greater or equal than 0
   398  func (l DefaultLocale) MustBeGTEZero() string {
   399  	return `{{.key}} must be greater than or equal to 0`
   400  }
   401  
   402  // KeyCannotBeGreaterThan returns a format-string to format an error where a value is greater than the maximum  allowed
   403  func (l DefaultLocale) KeyCannotBeGreaterThan() string {
   404  	return `{{.key}} cannot be greater than {{.y}}`
   405  }
   406  
   407  // KeyItemsMustBeOfType returns a format-string to format an error where a key is of the wrong type
   408  func (l DefaultLocale) KeyItemsMustBeOfType() string {
   409  	return `{{.key}} items must be {{.type}}`
   410  }
   411  
   412  // KeyItemsMustBeUnique returns a format-string to format an error where keys are not unique
   413  func (l DefaultLocale) KeyItemsMustBeUnique() string {
   414  	return `{{.key}} items must be unique`
   415  }
   416  
   417  // ReferenceMustBeCanonical returns a format-string to format a "reference must be canonical" error
   418  func (l DefaultLocale) ReferenceMustBeCanonical() string {
   419  	return `Reference {{.reference}} must be canonical`
   420  }
   421  
   422  // NotAValidType returns a format-string to format an invalid type error
   423  func (l DefaultLocale) NotAValidType() string {
   424  	return `has a primitive type that is NOT VALID -- given: {{.given}} Expected valid values are:{{.expected}}`
   425  }
   426  
   427  // Duplicated returns a format-string to format an error where types are duplicated
   428  func (l DefaultLocale) Duplicated() string {
   429  	return `{{.type}} type is duplicated`
   430  }
   431  
   432  // HttpBadStatus returns a format-string for errors when loading a schema using HTTP
   433  func (l DefaultLocale) HttpBadStatus() string {
   434  	return `Could not read schema from HTTP, response status is {{.status}}`
   435  }
   436  
   437  // ErrorFormat returns a format string for errors
   438  // Replacement options: field, description, context, value
   439  func (l DefaultLocale) ErrorFormat() string {
   440  	return `{{.field}}: {{.description}}`
   441  }
   442  
   443  // ParseError returns a format-string for JSON parsing errors
   444  func (l DefaultLocale) ParseError() string {
   445  	return `Expected: {{.expected}}, given: Invalid JSON`
   446  }
   447  
   448  // ConditionThen returns a format-string for ConditionThenError errors
   449  // If/Else
   450  func (l DefaultLocale) ConditionThen() string {
   451  	return `Must validate "then" as "if" was valid`
   452  }
   453  
   454  // ConditionElse returns a format-string for ConditionElseError errors
   455  func (l DefaultLocale) ConditionElse() string {
   456  	return `Must validate "else" as "if" was not valid`
   457  }
   458  
   459  // constants
   460  const (
   461  	STRING_NUMBER                     = "number"
   462  	STRING_ARRAY_OF_STRINGS           = "array of strings"
   463  	STRING_ARRAY_OF_SCHEMAS           = "array of schemas"
   464  	STRING_SCHEMA                     = "valid schema"
   465  	STRING_SCHEMA_OR_ARRAY_OF_STRINGS = "schema or array of strings"
   466  	STRING_PROPERTIES                 = "properties"
   467  	STRING_DEPENDENCY                 = "dependency"
   468  	STRING_PROPERTY                   = "property"
   469  	STRING_UNDEFINED                  = "undefined"
   470  	STRING_CONTEXT_ROOT               = "(root)"
   471  	STRING_ROOT_SCHEMA_PROPERTY       = "(root)"
   472  )
   473  

View as plain text