diff --git a/TOOLS/docs-generator/internal/writers/writers.go b/TOOLS/docs-generator/internal/writers/writers.go index 744e525..5dc21a6 100644 --- a/TOOLS/docs-generator/internal/writers/writers.go +++ b/TOOLS/docs-generator/internal/writers/writers.go @@ -769,6 +769,14 @@ func formatParamOrBlock(p types.ParamSpec, indent string, requiredOnly bool) str func sampleValue(p types.ParamSpec) string { if hasDefault(p.Default) { + // ВАЖНО: тип атрибута в схеме важнее «вида» значения в YAML. + // YAML-парсер отдаёт `default: 81.22.46.22` как float64, и formatLiteral + // печатает его без кавычек — а HCL не может распарсить такой литерал: + // Error: Invalid number literal (Failed to recognize the value of this number literal) + // Для строковых параметров значение обязано быть в кавычках. + if isStringParam(p) { + return strconv.Quote(fmt.Sprintf("%v", p.Default)) + } return formatLiteral(p.Default) } if len(p.ValueList) > 0 { @@ -786,6 +794,11 @@ func sampleValue(p types.ParamSpec) string { return "\"TODO\"" } +// isStringParam — параметр является строкой по схеме (data_type: string / varchar). +func isStringParam(p types.ParamSpec) bool { + return strings.Contains(strings.ToLower(firstType(p)), "string") +} + func formatLiteral(value interface{}) string { switch v := value.(type) { case bool: