Documentation
¶
Overview ¶
Package domain содержит базовые понятия справочника: классы приборов, системы обозначений и их разбор, единицы (коды), материалы и ошибки.
Пакет не зависит от БД и форматов наполнения. Ошибки — значения (*domain.Error с машиночитаемым кодом), без паник; тексты сообщений — дословный контракт, закреплённый тестами (языковая политика — D9: до каталога сообщений тексты формируются по-русски).
Index ¶
- Constants
- Variables
- func AdjustmentCodes() []string
- func Canonicalize(text string) (string, error)
- func CapGroupKnown(group int) bool
- func CapacitorPrefixAdjustment(prefix string) string
- func ClassificationFieldAppliesTo(field string, kind Kind) bool
- func DesignationFieldCodes() []string
- func GostEquivalentSymbol(r rune) (rune, bool)
- func GostSubclassBySymbol(r rune) (string, bool)
- func JisSubclassByLetter(r rune) (string, bool)
- func KnownDesignationField(name string) bool
- func MsgArg(id MsgID, args ...any) any
- func Msgf(id MsgID, args ...any) string
- func NumericDesignationField(name string) (numeric, known bool)
- func OtherFieldKnown(name string) bool
- func ParserFieldKnown(system System, kind Kind, field string) bool
- func ProSubclassByLetter(r rune) (string, bool)
- func ResistorFamilyAdjustment(family string) string
- func SubclassCodes() []string
- func SystemAppliesToKind(s System, k Kind) bool
- type Adjustment
- type Code
- type Error
- type Field
- type Kind
- type Material
- type MsgID
- type ParsedDesignation
- type Subclass
- type System
Constants ¶
const FieldBase = "base"
FieldBase — код производного поля разбора «базовое обозначение (тип)»: каноническая строка без буквы классификации и хвостовых элементов (план 03 §2.6). Продукт парсеров строгих систем; для записей other вычисляется сервисным слоем по явным полям series/dev_number; в секции fields формата наполнения не задаётся (производное).
Variables ¶
var ClassificationFieldCodes = []string{
"material", "subclass", "adjustment", "category", "assembly",
}
ClassificationFieldCodes — коды классификационных полей, допустимых в секции fields формата наполнения (документация формата и валидация сервисного слоя). Поля грамматик систем (dev_number, letters, group, …) парсер устанавливает сам; исключение — записи без разбора (other): для них секция fields может задать поле семейства (D10).
var OtherFieldCodes = []string{
"series", "dev_number", "letters",
}
OtherFieldCodes — грамматические поля, допустимые в секции fields только для записей other (разбора нет — пер-полое правило D10 выполняется тривиально): семейство, номер разработки, буквы. Значения свободные (не словарь): series/letters — непустой текст, dev_number — положительное целое; применимость — все классы.
Functions ¶
func AdjustmentCodes ¶
func AdjustmentCodes() []string
AdjustmentCodes перечисляет коды словаря в стабильном порядке (аргумент перечня допустимых в сообщениях об ошибках).
func Canonicalize ¶
Canonicalize нормализует обозначение на входе (план 03 §2.4): trim, верхний регистр, удаление пробелов, типографские дефисы → «-», запятая → точка (десятичный разделитель хвостов-мощностей). Кириллица и латиница не смешиваются в одном обозначении — смешение алфавитов диагностируется ошибкой с указанием позиции.
func CapGroupKnown ¶
CapGroupKnown сообщает, входит ли группа подкласса К в таблицу (перспективные и исторические); используется тестами и будущими сидами.
func CapacitorPrefixAdjustment ¶
CapacitorPrefixAdjustment отображает подкласс конденсаторной грамматики (К, КТ, КП, КН, КС) в код способа подстройки.
func ClassificationFieldAppliesTo ¶
ClassificationFieldAppliesTo сообщает, применимо ли классификационное поле к классу записи.
func DesignationFieldCodes ¶
func DesignationFieldCodes() []string
DesignationFieldCodes перечисляет коды реестра полей разбора в стабильном порядке (для тестов полноты бандлов internal/i18n: field.<код> — D9).
func GostEquivalentSymbol ¶
GostEquivalentSymbol возвращает парный равнозначный символ материала ГОСТ (Г ↔ 1, К ↔ 2, А ↔ 3, И ↔ 4, Д ↔ 5, П ↔ 6) — только для подсказки find у полупроводников gost; записи с обоими символами раздельны (03 §2.1).
func GostSubclassBySymbol ¶
GostSubclassBySymbol ищет код подкласса по букве ГОСТ (поддерживаемые классами модуля однобуквенные формы: Т, П, Д, С, В, А, И, Г, Л, Ц, Ф).
func JisSubclassByLetter ¶
JisSubclassByLetter ищет код подкласса по букве класса JIS.
func KnownDesignationField ¶
KnownDesignationField сообщает, существует ли поле разбора с кодом name.
func MsgArg ¶
MsgArg возвращает аргумент-сообщение для слоёв над domain: при рендере родительского формата подставляется локализованный текст вложенного сообщения (позиционные префиксы вида «раздел units, «кВ»»).
func Msgf ¶
Msgf возвращает канонический (en) текст сообщения — для заполнения Message при конструировании ошибок.
func NumericDesignationField ¶
NumericDesignationField возвращает разряд поля разбора: числовое либо текстовое (второе значение — существование поля; числовые поля допускают eq-фильтр и числовую сортировку).
func OtherFieldKnown ¶ added in v0.0.2
OtherFieldKnown сообщает, входит ли имя в реестр полей для other.
func ParserFieldKnown ¶
ParserFieldKnown сообщает, способна ли система обозначений установить поле разбора сама для класса записи (продукты грамматики парсера).
func ProSubclassByLetter ¶
ProSubclassByLetter ищет код подкласса по второй букве PRO ELECTRON.
func ResistorFamilyAdjustment ¶
ResistorFamilyAdjustment отображает семейство резисторных грамматик (gost: С/СП; ost: Р/РП/НР) в код способа подстройки.
func SubclassCodes ¶
func SubclassCodes() []string
SubclassCodes перечисляет коды словаря подклассов в стабильном порядке (аргумент перечня допустимых в сообщениях об ошибках).
func SystemAppliesToKind ¶
SystemAppliesToKind сообщает, применима ли система к классу (проверяется метасхемой импорта и автодетектом).
Types ¶
type Adjustment ¶
type Adjustment struct {
Code string // стабильный код словаря: «fixed», «variable», «preset»
}
Способ подстройки номинала: единый словарь значений для сквозного фильтра по полю adjustment между системами обозначений резисторов и конденсаторов (docs/plan/03-data-model.md §2.2–§2.3).
Ключ словаря — стабильный код (латиница, D9): значение поля adjustment разбора обозначений, device_designation_fields.text_value и фильтры поиска оперируют кодом; отображаемые названия — бандлы internal/i18n (adjustment.<код>). Отображения задают парсеры: семейства резисторов ГОСТ 3453-68 (С постоянные, СП переменные) и ОСТ 11.074.009-78 (Р постоянные, РП переменные; НР — наборы постоянных), подклассы конденсаторов (К постоянной ёмкости, КТ подстроечные, КП переменной ёмкости; КН нелинейные и КС сборки — не перестраиваемые вручную). Записи other задают поле явно секцией fields (нелинейные различия подстроечный/переменный у конкретных семейств — наполнением).
func AdjustmentByCode ¶
func AdjustmentByCode(code string) (Adjustment, bool)
AdjustmentByCode ищет способ подстройки по стабильному коду словаря.
func Adjustments ¶
func Adjustments() []Adjustment
Adjustments возвращает словарь способов подстройки в стабильном порядке.
type Code ¶
type Code string
Code — машиночитаемый код ошибки (латиница, snake_case).
const ( CodeAlreadyExists Code = "already_exists" CodeAttributeNotApplicable Code = "attribute_not_applicable" CodeDatabaseNotInitialized Code = "database_not_initialized" CodeDesignationMismatch Code = "designation_mismatch" CodeInvalidDesignation Code = "invalid_designation" CodeInvalidImportFile Code = "invalid_import_file" CodeInternal Code = "internal_error" CodeKindAmbiguous Code = "kind_ambiguous" CodeKindNotSupported Code = "kind_not_supported" CodeMethodNotAllowed Code = "method_not_allowed" CodeNotFound Code = "not_found" CodeParameterNotApplicable Code = "parameter_not_applicable" CodePowerSuffix Code = "power_suffix_not_supported" CodeSchemaVersionMismatch Code = "schema_version_mismatch" CodeSeedFailed Code = "seed_failed" CodeStorageDDLFailed Code = "storage_ddl_failed" CodeStorageOpenFailed Code = "storage_open_failed" CodeUnknownAttribute Code = "unknown_attribute" CodeUnknownCondition Code = "unknown_condition" CodeUnknownParameter Code = "unknown_parameter" CodeUnknownSource Code = "unknown_source" CodeValidationFailed Code = "validation_failed" )
Реестр кодов ошибок — контракт CLI, REST и импорта; коды стабильны, изменение кода — несовместимое изменение. Исходный перечень — docs/plan/01-architecture.md §2.1, расширяется по мере этапов плана.
func KnownCodes ¶
func KnownCodes() []Code
KnownCodes возвращает все зарегистрированные коды, отсортированные.
type Error ¶
Error — ожидаемая ошибка модуля: машиночитаемый код, стабильный идентификатор сообщения каталога и аргументы рендера (этап 8.3, D9). Message — канонический en-рендер (для журналов и тестов); тексты — контракт: en-формат закреплён каноническим, ru — бандл internal/i18n; переформулировка формата — несовместимое изменение. Локализованный рендер по MsgID+Args выполняют транспорты.
func AsError ¶
AsError извлекает *Error из цепочки ошибок; классификация «ожидаемая/непредвиденная» для вывода CLI и статусов REST.
func DatabaseNotInitialized ¶
func DatabaseNotInitialized() *Error
DatabaseNotInitialized — в базе нет таблицы schema_meta: база не инициализирована, принадлежит другой программе или повреждена.
func KindAmbiguous ¶
func KindAmbiguous() *Error
KindAmbiguous — класс не определяется по обозначению однозначно (фотоприборы: фотодиоды и фототранзисторы) — требуется явное указание класса (ключ kind / --kind), которое переопределяет автодетект.
func KindNotSupported ¶
func KindNotSupported() *Error
KindNotSupported — обозначение принадлежит классу приборов, не поддерживаемому модулем.
func SchemaVersionMismatch ¶
SchemaVersionMismatch — версия схемы базы (dbVersion) не совпадает с версией модуля (moduleVersion); продолжение работы запрещено.
type Field ¶
type Field struct {
Name string
// Text — текстовое значение; Num и IsNum задают числовое:
// поле либо текстовое, либо числовое, одновременно — никогда.
Text string
Num float64
IsNum bool
}
Field — поле разбора обозначения: единые имена для одинаковой семантики между системами (material, subclass, junctions, dev_number, letters, series, …) — план 03-data-model.md §1.2, §2; хранится в device_designation_fields как текстовое либо числовое значение.
type Kind ¶
type Kind string
Kind — класс приборов. Реестр синхронизирован с сидами kinds (docs/plan/03-data-model.md §1.1): код ⇄ сиды проверяется пин-тестом. Отображаемое название класса — бандлы internal/i18n (D9): в реестре только коды.
const ( KindTransistor Kind = "transistor" KindDiode Kind = "diode" KindResistor Kind = "resistor" KindCapacitor Kind = "capacitor" KindRelay Kind = "relay" )
Реестр классов: расширение — новыми кодами здесь и строками сидов; код стабилен (ключ фильтров и REST). Реле — только система other (разбора нет, 03-data-model.md §1.1).
type Material ¶
type Material struct {
Code string // стабильный код словаря: «ge», «si», …
// GostLetter и GostDigit — пара равнозначных символов ГОСТ
// (0 — символ не используется, например у арсенида галлия).
GostLetter rune
GostDigit rune
// ProLetter — буква материала PRO ELECTRON (0 — нет).
ProLetter rune
}
Материалы полупроводников: единый словарь значений для сквозного фильтра по полю material между системами gost и pro (docs/plan/03-data-model.md §2.1, §2.4; выверка — docs/plan/07-r1-verification.md §1–2).
Ключ словаря — стабильный код (латиница, D9): значение поля material разбора обозначений, device_designation_fields.text_value и фильтры поиска оперируют кодом; отображаемые названия — бандлы internal/i18n (material.<код>). Равнозначные символы ГОСТ (буква — общегражданское применение, цифра — категории качества ВП/ОС/ОСМ) физически равнозначны: КТ312 и 2Т312 — раздельные записи, подсказка find использует пару символов материала.
func GostMaterialBySymbol ¶
GostMaterialBySymbol ищет материал по символу ГОСТ — букве (Г, К, А, И, Д, П) или цифре (1–6); используется парсером gost и подсказкой find. Нулевая и отрицательная руна не «находит» материал (в частности, арсенид галлия без символов ГОСТ не выпадает из поиска по невалидной руне).
func MaterialByCode ¶
MaterialByCode ищет материал по стабильному коду словаря.
func Materials ¶
func Materials() []Material
Materials возвращает словарь материалов в стабильном порядке.
func ProMaterialByLetter ¶
ProMaterialByLetter ищет материал по первой букве PRO ELECTRON (A, B, C).
type MsgID ¶
type MsgID string
MsgID реестра сообщений. Расширение — новой константой здесь, строкой в registry и форматами en/ru в internal/i18n тем же изменением (полнота закреплена тестом полноты каталога).
const ( MsgSchemaVersionMismatch MsgID = "schema_version_mismatch" MsgDatabaseNotInitialized MsgID = "database_not_initialized" MsgKindNotSupported MsgID = "kind_not_supported" MsgGostSubclassDictSync MsgID = "gost_subclass_dict_sync" MsgKindAmbiguous MsgID = "kind_ambiguous" MsgKindAmbiguousMismatch MsgID = "kind_ambiguous_mismatch" MsgKindRequired MsgID = "kind_required" MsgEmptyDesignation MsgID = "empty_designation" MsgScannerExpected MsgID = "scanner_expected" MsgScannerUnexpected MsgID = "scanner_unexpected" MsgScannerToken MsgID = "scanner_token" MsgScannerEof MsgID = "scanner_eof" MsgKindUnknown MsgID = "kind_unknown" MsgSystemUnknown MsgID = "system_unknown" MsgUnknownMaterial MsgID = "unknown_material" MsgUnknownSubclass MsgID = "unknown_subclass" MsgUnknownAdjust MsgID = "unknown_adjustment" MsgUnknownCategory MsgID = "unknown_category" MsgPowerSuffix MsgID = "power_suffix" MsgDevNumberZeros MsgID = "dev_number_leading_zero" MsgDevNumberDigits MsgID = "dev_number_digits" MsgCanonicalAlphabetMix MsgID = "canonical_alphabet_mix" MsgCanonicalBadRune MsgID = "canonical_bad_rune" MsgCanonicalNoLetters MsgID = "canonical_no_letters" MsgKindMismatch MsgID = "kind_mismatch" MsgSystemMismatch MsgID = "system_mismatch" MsgAutodetectFailed MsgID = "autodetect_failed" MsgCapGroupUnknown MsgID = "cap_group_unknown" // Фрагменты грамматик «ожидалось: …» — аргументы scanner-сообщений. MsgExpectGostSubclass MsgID = "expect_gost_subclass" MsgExpectGostOptoFunction MsgID = "expect_gost_opto_function" MsgExpectGostDevNumberFull MsgID = "expect_gost_dev_number_full" MsgExpectGostDevNumber MsgID = "expect_gost_dev_number" MsgExpectGostMaterial MsgID = "expect_gost_material" MsgExpectDevNumber MsgID = "expect_dev_number" MsgExpectGostFeatureAndDev MsgID = "expect_gost_feature_and_dev" MsgExpectGostFeatureDigit MsgID = "expect_gost_feature_digit" MsgExpectGostDevOne MsgID = "expect_gost_dev_one" MsgExpectGostDevOneDigit MsgID = "expect_gost_dev_one_digit" MsgExpectGostFeatureDevRun MsgID = "expect_gost_feature_dev_run" MsgExpectGostModification MsgID = "expect_gost_modification" MsgExpectGostChip MsgID = "expect_gost_chip" MsgExpectGostMakerCode MsgID = "expect_gost_maker_code" MsgExpectJedecJunctions MsgID = "expect_jedec_junctions" MsgExpectJedecLetter MsgID = "expect_jedec_letter" MsgExpectJedecNumber MsgID = "expect_jedec_number" MsgExpectJedecNumberNoZero MsgID = "expect_jedec_number_nonzero" MsgExpectJisJunctions MsgID = "expect_jis_junctions" MsgExpectJisS MsgID = "expect_jis_s" MsgExpectJisClassLetter MsgID = "expect_jis_class_letter" MsgExpectJisClassRequired MsgID = "expect_jis_class_required" MsgExpectJisNumber MsgID = "expect_jis_number" MsgExpectJisSuffix MsgID = "expect_jis_suffix" MsgExpectJisShortForm MsgID = "expect_jis_short_form" MsgExpectJisShortNumber MsgID = "expect_jis_short_number" MsgExpectProMaterial MsgID = "expect_pro_material" MsgExpectProClassLetter MsgID = "expect_pro_class_letter" MsgExpectProClassTable MsgID = "expect_pro_class_table" MsgExpectProNumber MsgID = "expect_pro_number" MsgExpectProConsumerNumber MsgID = "expect_pro_consumer_number" MsgExpectProAnyNumber MsgID = "expect_pro_any_number" MsgExpectProSuffix MsgID = "expect_pro_suffix" MsgExpectResFamilyCS MsgID = "expect_res_family_cs" MsgExpectResFamilyR MsgID = "expect_res_family_r" MsgExpectHyphen MsgID = "expect_hyphen" MsgExpectCapGroup MsgID = "expect_cap_group" MsgExpectCapPrefix MsgID = "expect_cap_prefix" MsgExpectCapSubclassGroup MsgID = "expect_cap_subclass_group" MsgExpectResMaterialGroup6 MsgID = "expect_res_material_group_6" MsgExpectResMaterialGroup2 MsgID = "expect_res_material_group_2" // Сообщения движка валидации и метасхемы (internal/catalog). MsgEngineKindMissing MsgID = "engine_kind_missing" MsgEngineKindNoVariants MsgID = "engine_kind_no_variants" MsgEngineSystemNotApplicable MsgID = "engine_system_not_applicable" MsgEngineAttrUnknown MsgID = "engine_attr_unknown" MsgEngineAttrInactive MsgID = "engine_attr_inactive" MsgEngineAttrNotApplicable MsgID = "engine_attr_not_applicable" MsgEngineAttrTextExpected MsgID = "engine_attr_text_expected" MsgEngineAttrTextEmpty MsgID = "engine_attr_text_empty" MsgEngineAttrTextsExpected MsgID = "engine_attr_texts_expected" MsgEngineAttrTextsEmpty MsgID = "engine_attr_texts_empty" MsgEngineAttrTextsElementEmpty MsgID = "engine_attr_texts_element_empty" MsgEngineAttrTextsDuplicate MsgID = "engine_attr_texts_duplicate" MsgEngineAttrEnumExpected MsgID = "engine_attr_enum_expected" MsgEngineAttrEnumInvalid MsgID = "engine_attr_enum_invalid" MsgEngineAttrBoolExpected MsgID = "engine_attr_bool_expected" MsgEngineAttrIntExpected MsgID = "engine_attr_int_expected" MsgEngineAttrNumExpected MsgID = "engine_attr_num_expected" MsgEngineAttrWhole MsgID = "engine_attr_whole" MsgEngineAttrPositive MsgID = "engine_attr_positive" MsgEngineParamUnknown MsgID = "engine_param_unknown" MsgEngineParamInactive MsgID = "engine_param_inactive" MsgEngineParamNotApplicable MsgID = "engine_param_not_applicable" MsgEngineParamWrongSection MsgID = "engine_param_wrong_section" MsgEngineParamDuplicate MsgID = "engine_param_duplicate" MsgEngineParamTextEmpty MsgID = "engine_param_text_empty" MsgValueKeyRequired MsgID = "value_key_required" MsgValueKeyForbidden MsgID = "value_key_forbidden" MsgValueKeysPairRequired MsgID = "value_keys_pair_required" MsgValueBoundRequired MsgID = "value_bound_required" MsgValueEnumInvalid MsgID = "value_enum_invalid" MsgValueKeyPositive MsgID = "value_key_positive" MsgValueKeyCeiling MsgID = "value_key_ceiling" MsgValueMinMax MsgID = "value_min_max" MsgCondDuplicate MsgID = "cond_duplicate" MsgCondUnknown MsgID = "cond_unknown" MsgCondPositive MsgID = "cond_positive" MsgCondNotAllowed MsgID = "cond_not_allowed" MsgCondFixed MsgID = "cond_fixed" MsgCondSetMismatch MsgID = "cond_set_mismatch" MsgRuleYearRange MsgID = "rule_year_range_value" MsgRuleYearOrder MsgID = "rule_year_order" MsgRuleTempPair MsgID = "rule_temp_pair_order" MsgRuleCapCylIncomplete MsgID = "rule_cap_cyl_incomplete" MsgRuleCapFormMix MsgID = "rule_cap_form_mix" MsgRuleCapRectIncomplete MsgID = "rule_cap_rect_incomplete" MsgRuleVariantVnomMissing MsgID = "rule_variant_vnom_missing" MsgRuleVariantCnomMissing MsgID = "rule_variant_cnom_missing" MsgRuleVariantCellDup MsgID = "rule_variant_cell_dup" MsgRuleVariantLabelDup MsgID = "rule_variant_label_dup" MsgRuleVariantPnomMissing MsgID = "rule_variant_pnom_missing" MsgRuleVariantPnomDup MsgID = "rule_variant_pnom_dup" MsgRuleRelayVariantRcoilMissing MsgID = "rule_variant_rcoil_missing" MsgRuleRelayVariantNominalMissing MsgID = "rule_variant_nominal_missing" MsgMetaSectionNoCode MsgID = "meta_section_no_code" MsgMetaSectionDupCode MsgID = "meta_section_dup_code" MsgMetaRuleUnknownSection MsgID = "meta_rule_unknown_section" MsgMetaParamValueType MsgID = "meta_param_value_type" MsgMetaParamRuleUnknown MsgID = "meta_param_rule_unknown" MsgMetaCondModeUnknown MsgID = "meta_cond_mode_unknown" MsgMetaAttrValueType MsgID = "meta_attr_value_type" MsgMetaAttrRuleUnknown MsgID = "meta_attr_rule_unknown" MsgMetaSystemRefMissing MsgID = "meta_system_ref_missing" MsgMetaSystemKindMissing MsgID = "meta_system_kind_missing" MsgMetaCondUnitMissing MsgID = "meta_cond_unit_missing" MsgMetaCondCodeReserved MsgID = "meta_cond_code_reserved" MsgMetaGroupNoSection MsgID = "meta_group_no_section" MsgMetaGroupSortNegative MsgID = "meta_group_sort_negative" MsgMetaGroupSectionDup MsgID = "meta_group_section_dup" MsgMetaGroupSectionReserved MsgID = "meta_group_section_reserved" MsgMetaRuleUnknown MsgID = "meta_rule_unknown" MsgMetaKindRuleKindMissing MsgID = "meta_kind_rule_kind_missing" MsgMetaKindRuleUnknown MsgID = "meta_kind_rule_unknown" MsgMetaKindRuleRowMissing MsgID = "meta_kind_rule_row_missing" MsgMetaKindRuleNotDevice MsgID = "meta_kind_rule_not_device" MsgMetaParamGroupMissing MsgID = "meta_param_group_missing" MsgMetaParamUnitMissing MsgID = "meta_param_unit_missing" MsgMetaParamUnitForbidden MsgID = "meta_param_unit_forbidden" MsgMetaParamEnumRequired MsgID = "meta_param_enum_required" MsgMetaParamEnumOnly MsgID = "meta_param_enum_only" MsgMetaParamCeiling MsgID = "meta_param_ceiling" MsgMetaParamSortNegative MsgID = "meta_param_sort_negative" MsgMetaParamKindMissing MsgID = "meta_param_kind_missing" MsgMetaParamRuleRowMissing MsgID = "meta_param_rule_row_missing" MsgMetaParamRuleWrongLevel MsgID = "meta_param_rule_wrong_level" MsgMetaCondSetEmpty MsgID = "meta_cond_set_empty" MsgMetaCondMissing MsgID = "meta_cond_missing" MsgMetaCondFixedOptional MsgID = "meta_cond_fixed_optional" MsgMetaAttrUnitMissing MsgID = "meta_attr_unit_missing" MsgMetaAttrUnitForbidden MsgID = "meta_attr_unit_forbidden" MsgMetaAttrEnumRequired MsgID = "meta_attr_enum_required" MsgMetaAttrEnumOnly MsgID = "meta_attr_enum_only" MsgMetaAttrSortNegative MsgID = "meta_attr_sort_negative" MsgMetaAttrKindMissing MsgID = "meta_attr_kind_missing" MsgMetaAttrRuleRowMissing MsgID = "meta_attr_rule_row_missing" MsgMetaAttrRuleWrongLevel MsgID = "meta_attr_rule_wrong_level" // Сообщения формата наполнения (internal/importer). MsgImportRootNotObject MsgID = "import_root_not_object" MsgImportRootUnknownKey MsgID = "import_root_unknown_key" MsgImportRootSectionArray MsgID = "import_root_section_array" MsgImportRecordEmptyName MsgID = "import_record_empty_name" MsgImportRecordBadValue MsgID = "import_record_bad_value" MsgImportRecordNameRequired MsgID = "import_record_name_required" MsgImportRecordNameString MsgID = "import_record_name_string" MsgImportRecordUnknownField MsgID = "import_record_unknown_field" MsgImportRecordSystemString MsgID = "import_record_system_string" MsgImportRecordSystemUnknown MsgID = "import_record_system_unknown" MsgImportFieldsObject MsgID = "import_fields_object" MsgImportFieldUnknown MsgID = "import_field_unknown" MsgImportFieldString MsgID = "import_field_string" MsgImportFieldNumber MsgID = "import_field_number" MsgImportSectionArray MsgID = "import_section_array" MsgImportManufacturersArray MsgID = "import_manufacturers_array" MsgImportManufacturerItem MsgID = "import_manufacturer_item" MsgImportVariantsArray MsgID = "import_variants_array" MsgImportAnalogsArray MsgID = "import_analogs_array" MsgImportAttributesObject MsgID = "import_attributes_object" MsgImportAttrNumber MsgID = "import_attr_number" MsgImportAttrBadValue MsgID = "import_attr_bad_value" MsgImportAttrElementString MsgID = "import_attr_element_string" MsgImportWhereSection MsgID = "import_where_section" MsgImportValueObject MsgID = "import_value_object" MsgImportValueParameterString MsgID = "import_value_parameter_string" MsgImportValueTextString MsgID = "import_value_text_string" MsgImportValueKeyNumber MsgID = "import_value_key_number" MsgImportValueUnknownKey MsgID = "import_value_unknown_key" MsgImportValueParameterRequired MsgID = "import_value_parameter_required" MsgImportVariantLabelString MsgID = "import_variant_label_string" MsgImportVariantUnknownField MsgID = "import_variant_unknown_field" MsgImportVariantSectionArray MsgID = "import_variant_section_array" MsgImportVariantAttributesObject MsgID = "import_variant_attributes_object" MsgImportVariantAttrNumber MsgID = "import_variant_attr_number" MsgImportVariantAttrBadValue MsgID = "import_variant_attr_bad_value" MsgImportVariantAttrElementString MsgID = "import_variant_attr_element_string" MsgImportAnalogNameRequired MsgID = "import_analog_name_required" MsgImportAnalogNoteString MsgID = "import_analog_note_string" MsgImportAnalogUnknownField MsgID = "import_analog_unknown_field" MsgImportAnalogItem MsgID = "import_analog_item" MsgImportSynonymsArray MsgID = "import_synonyms_array" MsgImportSynonymItem MsgID = "import_synonym_item" MsgImportSynonymNameRequired MsgID = "import_synonym_name_required" MsgImportSynonymUnknownField MsgID = "import_synonym_unknown_field" MsgImportSynonymNoteString MsgID = "import_synonym_note_string" MsgImportSynonymYearInt MsgID = "import_synonym_year_int" MsgImportSourcesArray MsgID = "import_sources_array" MsgImportSourcesObject MsgID = "import_sources_object" MsgImportSourcesUnknownField MsgID = "import_sources_unknown_field" MsgImportSourcesFieldRequired MsgID = "import_sources_field_required" MsgImportSourcesFieldString MsgID = "import_sources_field_string" MsgImportSourcesFieldInteger MsgID = "import_sources_field_integer" MsgImportSourcesFieldStrings MsgID = "import_sources_field_strings" MsgImportSourcesItemString MsgID = "import_sources_item_string" MsgImportRecordSourcesArray MsgID = "import_record_sources_array" MsgImportRecordSourceItem MsgID = "import_record_source_item" MsgImportRecordSourceCodeRequired MsgID = "import_record_source_code_required" MsgImportRecordSourceUnknownField MsgID = "import_record_source_unknown_field" MsgImportRecordSourceNoteString MsgID = "import_record_source_note_string" MsgImportNdjsonLineObject MsgID = "import_ndjson_line_object" MsgImportNdjsonCatalogOrder MsgID = "import_ndjson_catalog_order" MsgImportNdjsonSourcesOrder MsgID = "import_ndjson_sources_order" MsgImportNdjsonClassKey MsgID = "import_ndjson_class_key" MsgImportNdjsonWrapperSingle MsgID = "import_ndjson_wrapper_single" MsgImportCatalogObject MsgID = "import_catalog_object" MsgImportCatalogSubsection MsgID = "import_catalog_subsection" MsgImportCatalogRowsArray MsgID = "import_catalog_rows_array" MsgImportCatalogRowObject MsgID = "import_catalog_row_object" MsgImportCatalogUnknownField MsgID = "import_catalog_unknown_field" MsgImportCatalogFieldRequired MsgID = "import_catalog_field_required" MsgImportCatalogFieldString MsgID = "import_catalog_field_string" MsgImportCatalogFieldNumber MsgID = "import_catalog_field_number" MsgImportCatalogFieldInteger MsgID = "import_catalog_field_integer" MsgImportCatalogFieldBool MsgID = "import_catalog_field_bool" MsgImportCatalogFieldStrings MsgID = "import_catalog_field_strings" MsgImportCatalogItemString MsgID = "import_catalog_item_string" MsgImportCatalogParamActiveBool MsgID = "import_catalog_param_active_bool" MsgImportCatalogAttrActiveBool MsgID = "import_catalog_attr_active_bool" MsgImportCatalogCondsetsArray MsgID = "import_catalog_condsets_array" MsgImportCatalogCondsetObject MsgID = "import_catalog_condset_object" MsgImportCatalogCondsetItems MsgID = "import_catalog_condset_items" MsgImportCatalogCondsetItemObject MsgID = "import_catalog_condset_item_object" MsgImportCatalogCondsetEmpty MsgID = "import_catalog_condset_empty" MsgImportCatalogRow MsgID = "import_catalog_row" MsgImportCatalogRowCode MsgID = "import_catalog_row_code" MsgImportFormatUnknown MsgID = "import_format_unknown" MsgImportFormatByExt MsgID = "import_format_by_ext" MsgImportFormatLineOnly MsgID = "import_format_line_only" MsgImportYamlNonFinite MsgID = "import_yaml_non_finite" MsgImportYamlMultiDoc MsgID = "import_yaml_multi_doc" MsgImportYamlAliasCycle MsgID = "import_yaml_alias_cycle" MsgImportYamlAliasUnknown MsgID = "import_yaml_alias_unknown" MsgImportYamlKeyInvalid MsgID = "import_yaml_key_invalid" MsgImportYamlNodeUnsupported MsgID = "import_yaml_node_unsupported" MsgImportNdjsonLineError MsgID = "import_ndjson_line_error" MsgImportSyntaxError MsgID = "import_syntax_error" MsgImportCatalogRecordsMixed MsgID = "import_catalog_records_mixed" MsgImportCatalogSourcesMixed MsgID = "import_catalog_sources_mixed" MsgImportDuplicateKey MsgID = "import_duplicate_key" MsgImportUnexpectedToken MsgID = "import_unexpected_token" MsgImportIssueRecordLine MsgID = "import_issue_record_line" MsgImportIssueRecord MsgID = "import_issue_record" MsgImportIssueLine MsgID = "import_issue_line" MsgImportIssueNo MsgID = "import_issue_no" MsgImportValueKindNumber MsgID = "import_value_kind_number" MsgImportValueKindString MsgID = "import_value_kind_string" MsgImportValueKindArray MsgID = "import_value_kind_array" MsgImportValueKindObject MsgID = "import_value_kind_object" MsgImportValueKindBool MsgID = "import_value_kind_bool" MsgImportValueKindOther MsgID = "import_value_kind_other" // Итог прогона и позиционные префиксы исполнений/аналогов/синонимов. MsgImportSummary MsgID = "import_summary" MsgImportSummaryRejected MsgID = "import_summary_rejected" MsgImportSummaryCatalog MsgID = "import_summary_catalog" MsgImportSummarySources MsgID = "import_summary_sources" MsgImportWhereVariant MsgID = "import_where_variant" MsgImportWhereAnalog MsgID = "import_where_analog" MsgImportWhereSynonym MsgID = "import_where_synonym" MsgImportWhereSource MsgID = "import_where_source" MsgImportWhereValue MsgID = "import_where_value" MsgImportCatalogPlain MsgID = "import_catalog_object_plain" MsgImportNdjsonSubsection MsgID = "import_ndjson_subsection_array" // Сообщения хранилища (internal/storage) и сидирования. MsgStorageDsnMissing MsgID = "storage_dsn_missing" MsgStorageDialectUnknown MsgID = "storage_dialect_unknown" MsgStorageOpen MsgID = "storage_open_failed" MsgStorageDDL MsgID = "storage_ddl_failed" MsgStorageCatalogWrite MsgID = "storage_catalog_write_failed" MsgStorageRereadMissing MsgID = "storage_reread_missing" MsgStorageRevisionRowMissing MsgID = "storage_revision_row_missing" MsgStoragePageInvalid MsgID = "storage_page_invalid" MsgStorageCommitReadOnly MsgID = "storage_commit_read_only" MsgSeedFailed MsgID = "seed_failed" // Сообщения сервисного слоя (internal/service). MsgSvcRecordNameMissing MsgID = "svc_record_name_missing" MsgSvcRecordAlreadyExists MsgID = "svc_record_already_exists" MsgSvcSectionUnknown MsgID = "svc_section_unknown" MsgSvcSectionMissing MsgID = "svc_section_missing" MsgSvcSectionDuplicate MsgID = "svc_section_duplicate" MsgSvcAttrCodeMissing MsgID = "svc_attr_code_missing" MsgSvcAttrDuplicate MsgID = "svc_attr_duplicate" MsgSvcManufacturerEmpty MsgID = "svc_manufacturer_empty" MsgSvcManufacturerDuplicate MsgID = "svc_manufacturer_duplicate" MsgSvcAnalogEmpty MsgID = "svc_analog_empty" MsgSvcAnalogSelf MsgID = "svc_analog_self" MsgSvcAnalogDuplicate MsgID = "svc_analog_duplicate" MsgSvcAnalogNotFound MsgID = "svc_analog_not_found" MsgSvcSynonymEmpty MsgID = "svc_synonym_empty" MsgSvcSynonymSelf MsgID = "svc_synonym_self" MsgSvcSynonymDuplicate MsgID = "svc_synonym_duplicate" MsgSvcSynonymConflictRecord MsgID = "svc_synonym_conflict_record" MsgSvcSynonymConflictOther MsgID = "svc_synonym_conflict_other" MsgSvcSynonymOwnerConflict MsgID = "svc_synonym_owner_conflict" MsgSvcSynonymYearOrder MsgID = "svc_synonym_year_order" MsgSvcSynonymYearRange MsgID = "svc_synonym_year_range" MsgSvcSourceCodeMissing MsgID = "svc_source_code_missing" MsgSvcSourceCodeCharset MsgID = "svc_source_code_charset" MsgSvcSourceTitleMissing MsgID = "svc_source_title_missing" MsgSvcSourceTypeMissing MsgID = "svc_source_type_missing" MsgSvcSourceTypeUnknown MsgID = "svc_source_type_unknown" MsgSvcSourceYearRange MsgID = "svc_source_year_range" MsgSvcSourceListElementBad MsgID = "svc_source_list_element_bad" MsgSvcSourceListDuplicate MsgID = "svc_source_list_duplicate" MsgSvcSourceDuplicateCode MsgID = "svc_source_duplicate_code" MsgSvcDeviceSourceEmpty MsgID = "svc_device_source_empty" MsgSvcDeviceSourceDuplicate MsgID = "svc_device_source_duplicate" MsgSvcDeviceSourceNotFound MsgID = "svc_device_source_not_found" MsgSvcFilterFieldMissing MsgID = "svc_designation_filter_field_missing" MsgSvcFilterOpUnknown MsgID = "svc_filter_op_unknown" MsgSvcSearchFieldUnknown MsgID = "svc_search_field_unknown" MsgSvcSearchIDMax MsgID = "svc_search_id_max" MsgSvcSearchIDPositive MsgID = "svc_search_id_positive" MsgSvcSearchIDDuplicate MsgID = "svc_search_id_duplicate" MsgSvcSearchValueDuplicate MsgID = "svc_search_value_duplicate" MsgSvcSearchValuesMax MsgID = "svc_search_values_max" MsgSvcSearchValuesDuplicate MsgID = "svc_search_values_duplicate" MsgSvcValuesBoolAttr MsgID = "svc_values_attr_bool" MsgSvcFilterAttrText MsgID = "svc_filter_attr_text_expected" MsgSvcFilterAttrNumber MsgID = "svc_filter_attr_number_expected" MsgSvcFilterParamSet MsgID = "svc_filter_param_value_missing" MsgSvcFilterParamText MsgID = "svc_filter_param_text_expected" MsgSvcFilterParamNumber MsgID = "svc_filter_param_number_expected" MsgSvcSortParamNumber MsgID = "svc_sort_param_number_expected" MsgSvcFieldDuplicate MsgID = "svc_field_duplicate" MsgSvcFieldUnknown MsgID = "svc_field_unknown" MsgSvcFieldParserOwned MsgID = "svc_field_parser_owned" MsgSvcFieldBaseDerived MsgID = "svc_field_base_derived" MsgSvcFieldNotApplicable MsgID = "svc_field_not_applicable" MsgSvcFieldAssemblyRange MsgID = "svc_field_assembly_range" MsgSvcFieldTextExpected MsgID = "svc_field_text_expected" MsgSvcFieldDevNumber MsgID = "svc_field_dev_number" // Транспортные сообщения REST (internal/httpapi). MsgApiRouteNotFound MsgID = "api_route_not_found" MsgApiMethodNotAllowed MsgID = "api_method_not_allowed" MsgApiPanic MsgID = "api_panic" MsgApiBodyTooLarge MsgID = "api_body_too_large" MsgApiBodyRead MsgID = "api_body_read" MsgApiImportBodyTooLarge MsgID = "api_import_body_too_large" MsgApiImportCTMissing MsgID = "api_import_content_type_missing" MsgApiImportCTUnknown MsgID = "api_import_content_type_unknown" MsgApiCardNotFound MsgID = "api_card_not_found" MsgApiIdNotFound MsgID = "api_id_not_found" MsgApiAlreadyExists MsgID = "api_already_exists" MsgApiDesignationMismatch MsgID = "api_designation_mismatch" MsgApiBadID MsgID = "api_bad_id" MsgApiQMissing MsgID = "api_q_missing" MsgApiDesignationMissing MsgID = "api_designation_missing" MsgApiQueryInvalid MsgID = "api_query_invalid" MsgApiLimitRange MsgID = "api_limit_range" MsgApiOffsetNonNeg MsgID = "api_offset_non_negative" MsgApiAfterNonNeg MsgID = "api_after_non_negative" MsgApiSortKey MsgID = "api_sort_key_unknown" MsgApiQueryParamUnknown MsgID = "api_query_param_unknown" MsgApiParamDuplicate MsgID = "api_param_duplicate" MsgApiNumberParam MsgID = "api_number_param" MsgApiBoolParam MsgID = "api_bool_param" MsgApiBoolAttrFilter MsgID = "api_bool_attr_filter" MsgApiIdParam MsgID = "api_id_param" MsgApiValuesCode MsgID = "api_values_code" MsgInternalError MsgID = "internal_error" // Интерфейсные строки CLI (internal/cli). MsgCliUnknownCommand MsgID = "cli_unknown_command" MsgCliOptionsAfterCmd MsgID = "cli_options_after_command" MsgCliDsnDialect MsgID = "cli_dsn_dialect_mismatch" MsgCliArgCount MsgID = "cli_arg_count" MsgCliHelpArgs MsgID = "cli_help_args" MsgCliListArg MsgID = "cli_list_arg" MsgCliListAllFlags MsgID = "cli_list_all_flags" MsgCliUnknownFlag MsgID = "cli_unknown_flag" MsgCliFlagValueRequired MsgID = "cli_flag_value_required" MsgCliFlagNoValue MsgID = "cli_flag_no_value" MsgCliLangInvalid MsgID = "cli_lang_invalid" MsgCliFlagNonNegative MsgID = "cli_flag_non_negative" MsgCliFlagNumber MsgID = "cli_flag_number" MsgCliUnknownFlagSet MsgID = "cli_unknown_flag_set" MsgCliDialectUnknown MsgID = "cli_dialect_unknown" MsgCliCatalogSubMissing MsgID = "cli_catalog_subcommand_missing" MsgCliCatalogExportArgs MsgID = "cli_catalog_export_args" MsgCliCatalogImportArgs MsgID = "cli_catalog_import_args" MsgCliCatalogListArgs MsgID = "cli_catalog_list_args" MsgCliCatalogSubUnknown MsgID = "cli_catalog_subcommand_unknown" MsgCliFileOpen MsgID = "cli_file_open" MsgCliFileWrite MsgID = "cli_file_write" MsgCliErrPrefix MsgID = "cli_err_prefix" MsgCliUnexpectedPrefix MsgID = "cli_unexpected_prefix" MsgCliDbInitialized MsgID = "cli_db_initialized" MsgCliOutcomeAdded MsgID = "cli_outcome_added" MsgCliOutcomeUpdated MsgID = "cli_outcome_updated" MsgCliOutcomeSkipped MsgID = "cli_outcome_skipped" MsgCliRecordNotFound MsgID = "cli_record_not_found" MsgCliFindSuggestion MsgID = "cli_find_suggestion" MsgCliFindType MsgID = "cli_find_type" MsgCliFindSynonym MsgID = "cli_find_synonym" MsgCliFindNotFound MsgID = "cli_find_not_found" MsgCliDeleteDryRun MsgID = "cli_delete_dry_run" MsgCliDeleted MsgID = "cli_deleted" MsgCliDryRunHead MsgID = "cli_dry_run_head" MsgCliIssueLine MsgID = "cli_issue_line" MsgCliSystemLine MsgID = "cli_system_line" MsgCliVariantHead MsgID = "cli_variant_head" MsgCliTypeGroupHead MsgID = "cli_type_group_head" MsgCliNoLabel MsgID = "cli_no_label" MsgCliManufacturers MsgID = "cli_manufacturers" MsgCliAnalogs MsgID = "cli_analogs" MsgCliBacklinks MsgID = "cli_backlinks" MsgCliSynonyms MsgID = "cli_synonyms" MsgCliSources MsgID = "cli_sources" MsgCliYearSince MsgID = "cli_year_since" MsgCliYearUntil MsgID = "cli_year_until" MsgCliParseHead MsgID = "cli_parse_head" MsgCliFieldLine MsgID = "cli_field_line" MsgCliAtLeast MsgID = "cli_at_least" MsgCliAtMost MsgID = "cli_at_most" MsgCliCondAt MsgID = "cli_cond_at" MsgCliAssemblyValue MsgID = "cli_assembly_value" MsgCliDeviceValue MsgID = "cli_device_value" MsgCliHKinds MsgID = "cli_h_kinds" MsgCliHSystems MsgID = "cli_h_systems" MsgCliHGroups MsgID = "cli_h_groups" MsgCliHParams MsgID = "cli_h_params" MsgCliHAttrs MsgID = "cli_h_attrs" MsgCliGroupLine MsgID = "cli_group_line" MsgCliParamLine MsgID = "cli_param_line" MsgCliAttrListLine MsgID = "cli_attr_list_line" MsgCliUsageWord MsgID = "cli_usage_word" // Фрагменты общей справки (catalogctl help и вызов без аргументов): // текст собирается генератором internal/cli/help.go по реестру команд // (порядок, колонки, перенос строк), строки — каталог сообщений. // Структурные: заголовок, заголовки секций, футер о префиксах ошибок // (аргументы — вложенные сообщения префиксов). MsgCliUsageHeader MsgID = "cli_usage_header" MsgCliUsageCommands MsgID = "cli_usage_commands" MsgCliUsageOptions MsgID = "cli_usage_options" // Команды: синопсис и описание (list — с перечнем фильтров реестра). MsgCliUsageCmdInit MsgID = "cli_usage_cmd_init" MsgCliUsageCmdInitDesc MsgID = "cli_usage_cmd_init_desc" MsgCliUsageCmdParse MsgID = "cli_usage_cmd_parse" MsgCliUsageCmdParseDesc MsgID = "cli_usage_cmd_parse_desc" MsgCliUsageCmdAdd MsgID = "cli_usage_cmd_add" MsgCliUsageCmdAddDesc MsgID = "cli_usage_cmd_add_desc" MsgCliUsageCmdImport MsgID = "cli_usage_cmd_import" MsgCliUsageCmdImportDesc MsgID = "cli_usage_cmd_import_desc" MsgCliUsageCmdList MsgID = "cli_usage_cmd_list" MsgCliUsageCmdListDesc MsgID = "cli_usage_cmd_list_desc" MsgCliUsageCmdInfo MsgID = "cli_usage_cmd_info" MsgCliUsageCmdInfoDesc MsgID = "cli_usage_cmd_info_desc" MsgCliUsageCmdFind MsgID = "cli_usage_cmd_find" MsgCliUsageCmdFindDesc MsgID = "cli_usage_cmd_find_desc" MsgCliUsageCmdDelete MsgID = "cli_usage_cmd_delete" MsgCliUsageCmdDeleteDesc MsgID = "cli_usage_cmd_delete_desc" MsgCliUsageCmdCount MsgID = "cli_usage_cmd_count" MsgCliUsageCmdCountDesc MsgID = "cli_usage_cmd_count_desc" MsgCliUsageCmdExport MsgID = "cli_usage_cmd_export" MsgCliUsageCmdExportDesc MsgID = "cli_usage_cmd_export_desc" MsgCliUsageCmdCatalogExport MsgID = "cli_usage_cmd_catalog_export" MsgCliUsageCmdCatalogExportDesc MsgID = "cli_usage_cmd_catalog_export_desc" MsgCliUsageCmdCatalogImport MsgID = "cli_usage_cmd_catalog_import" MsgCliUsageCmdCatalogImportDesc MsgID = "cli_usage_cmd_catalog_import_desc" MsgCliUsageCmdCatalogList MsgID = "cli_usage_cmd_catalog_list" MsgCliUsageCmdCatalogListDesc MsgID = "cli_usage_cmd_catalog_list_desc" MsgCliUsageCmdHelp MsgID = "cli_usage_cmd_help" MsgCliUsageCmdHelpDesc MsgID = "cli_usage_cmd_help_desc" // Общие опции: спецификация и описание. MsgCliUsageOptDialect MsgID = "cli_usage_opt_dialect" MsgCliUsageOptDialectDesc MsgID = "cli_usage_opt_dialect_desc" MsgCliUsageOptDb MsgID = "cli_usage_opt_db" MsgCliUsageOptDbDesc MsgID = "cli_usage_opt_db_desc" MsgCliUsageOptDsn MsgID = "cli_usage_opt_dsn" MsgCliUsageOptDsnDesc MsgID = "cli_usage_opt_dsn_desc" MsgCliUsageOptKind MsgID = "cli_usage_opt_kind" MsgCliUsageOptKindDesc MsgID = "cli_usage_opt_kind_desc" MsgCliUsageOptSystem MsgID = "cli_usage_opt_system" MsgCliUsageOptSystemDesc MsgID = "cli_usage_opt_system_desc" MsgCliUsageOptLang MsgID = "cli_usage_opt_lang" MsgCliUsageOptLangDesc MsgID = "cli_usage_opt_lang_desc" MsgCliUsageOptDryRun MsgID = "cli_usage_opt_dry_run" MsgCliUsageOptDryRunDesc MsgID = "cli_usage_opt_dry_run_desc" MsgCliUsageOptFormat MsgID = "cli_usage_opt_format" MsgCliUsageOptFormatDesc MsgID = "cli_usage_opt_format_desc" // Строка использования команды (карточка help <команда> и ошибки // числа аргументов): путь и позиционные аргументы, %[1]s — полный // перечень флагов реестра команды («[--имя] …», генерируется). MsgCliUseInit MsgID = "cli_use_init" MsgCliUseParse MsgID = "cli_use_parse" MsgCliUseAdd MsgID = "cli_use_add" MsgCliUseImport MsgID = "cli_use_import" MsgCliUseList MsgID = "cli_use_list" MsgCliUseInfo MsgID = "cli_use_info" MsgCliUseFind MsgID = "cli_use_find" MsgCliUseDelete MsgID = "cli_use_delete" MsgCliUseCount MsgID = "cli_use_count" MsgCliUseExport MsgID = "cli_use_export" MsgCliUseCatalogExport MsgID = "cli_use_catalog_export" MsgCliUseCatalogImport MsgID = "cli_use_catalog_import" MsgCliUseCatalogList MsgID = "cli_use_catalog_list" MsgCliUseVersion MsgID = "cli_use_version" MsgCliUseHelp MsgID = "cli_use_help" // Карточка команды: заголовок секции опций. MsgCliUsageFlags MsgID = "cli_usage_flags" // Фильтры list (спецификации и описания опций карточек и общей // справки). MsgCliUsageOptMaterial MsgID = "cli_usage_opt_material" MsgCliUsageOptMaterialDesc MsgID = "cli_usage_opt_material_desc" MsgCliUsageOptSubclass MsgID = "cli_usage_opt_subclass" MsgCliUsageOptSubclassDesc MsgID = "cli_usage_opt_subclass_desc" MsgCliUsageOptAdjustment MsgID = "cli_usage_opt_adjustment" MsgCliUsageOptAdjustmentDesc MsgID = "cli_usage_opt_adjustment_desc" MsgCliUsageOptCategory MsgID = "cli_usage_opt_category" MsgCliUsageOptCategoryDesc MsgID = "cli_usage_opt_category_desc" MsgCliUsageOptJunctions MsgID = "cli_usage_opt_junctions" MsgCliUsageOptJunctionsDesc MsgID = "cli_usage_opt_junctions_desc" MsgCliUsageOptGroup MsgID = "cli_usage_opt_group" MsgCliUsageOptGroupDesc MsgID = "cli_usage_opt_group_desc" MsgCliUsageOptSeries MsgID = "cli_usage_opt_series" MsgCliUsageOptSeriesDesc MsgID = "cli_usage_opt_series_desc" MsgCliUsageOptNumber MsgID = "cli_usage_opt_number" MsgCliUsageOptNumberDesc MsgID = "cli_usage_opt_number_desc" MsgCliUsageOptLetters MsgID = "cli_usage_opt_letters" MsgCliUsageOptLettersDesc MsgID = "cli_usage_opt_letters_desc" MsgCliUsageOptConstruction MsgID = "cli_usage_opt_construction" MsgCliUsageOptConstructionDesc MsgID = "cli_usage_opt_construction_desc" MsgCliUsageOptBase MsgID = "cli_usage_opt_base" MsgCliUsageOptBaseDesc MsgID = "cli_usage_opt_base_desc" MsgCliUsageOptQ MsgID = "cli_usage_opt_q" MsgCliUsageOptQDesc MsgID = "cli_usage_opt_q_desc" MsgCliUsageOptLimit MsgID = "cli_usage_opt_limit" MsgCliUsageOptLimitDesc MsgID = "cli_usage_opt_limit_desc" MsgCliUsageOptOffset MsgID = "cli_usage_opt_offset" MsgCliUsageOptOffsetDesc MsgID = "cli_usage_opt_offset_desc" // Примеры и примечание об позиции опций общей справки. MsgCliUsageExamples MsgID = "cli_usage_examples" MsgCliUsageExInit MsgID = "cli_usage_ex_init" MsgCliUsageExImport MsgID = "cli_usage_ex_import" MsgCliUsageExList MsgID = "cli_usage_ex_list" MsgCliUsageExInfo MsgID = "cli_usage_ex_info" MsgCliUsagePosition MsgID = "cli_usage_position" // Команда version. MsgCliUsageCmdVersion MsgID = "cli_usage_cmd_version" MsgCliUsageCmdVersionDesc MsgID = "cli_usage_cmd_version_desc" MsgCliVersion MsgID = "cli_version" )
type ParsedDesignation ¶
ParsedDesignation — результат разбора: класс, система, каноническая строка (точный ключ записи внутри класса) и поля разбора.
func ParseDesignation ¶
func ParseDesignation(text string) (ParsedDesignation, error)
ParseDesignation разбирает обозначение с автодетектом класса и системы (порядок попыток — план 03 §2.4): полупроводник gost → pro → jedec → jis → резистор gost/ost → конденсатор gost. Системы без разбора (other) автодетекта не имеют — требуют явного указания.
func ParseDesignationCandidates ¶ added in v0.0.5
func ParseDesignationCandidates(text string, kind Kind) ([]ParsedDesignation, error)
ParseDesignationCandidates перечисляет все успешные разборы обозначения строгими системами в фиксированном порядке автодетекта — эквивалент «конфиденса» строгих грамматик (числовой уверенности нет): перечень пар класс/система без дублей; первый элемент совпадает с результатом ParseDesignation при той же подсказке kind (подсказка разрешает неоднозначный класс Ф грамматики gost, как в автодетекте). Контракт ошибок общий с автодетектом: ошибки канонизации и вердикты isVerdictError возвращаются как есть (вердикт прерывает перебор), ни один парсер не принял — autodetect_failed.
func ParseDesignationForSystem ¶
func ParseDesignationForSystem(text string, system System, kind Kind) (ParsedDesignation, error)
ParseDesignationForSystem разбирает обозначение с явной системой (и опционально классом — переопределяет автодетект, обязателен для other). Пустая система — автодетект; несоответствие обозначения системе — ошибка designation_mismatch.
func (ParsedDesignation) FieldByName ¶
func (p ParsedDesignation) FieldByName(name string) (Field, bool)
FieldByName ищет поле разбора по коду.
func (ParsedDesignation) String ¶
func (p ParsedDesignation) String() string
String — компактная сериализация полей разбора для вывода и golden-тестов: поле=значение; …
type Subclass ¶
type Subclass struct {
Code string // стабильный код словаря: «bjt», «zener», …
// GostLetter — буква подкласса ГОСТ 10862-64 / ГОСТ Р 71055-2023
// (элемент 2, поддерживаемые классами модуля однобуквенные формы;
// 0 — буква не используется).
GostLetter rune
// ProLetter — вторая буква PRO ELECTRON (0 — не используется).
ProLetter rune
// JisLetter — буква класса JIS C 7012 (0 — не используется).
JisLetter rune
}
Подклассы приборов: единый словарь значений для сквозного фильтра по полю subclass между системами обозначений (docs/plan/03-data-model.md §2).
Ключ словаря — стабильный код (латиница, D9): значение поля subclass разбора обозначений, device_designation_fields.text_value и фильтры поиска оперируют кодом; отображаемые названия — бандлы internal/i18n (subclass.<код>). Коды — наименьший общий знаменатель систем: более тонкие различия (p-n-p/n-p-n, ВЧ/НЧ, маломощный/мощный) кодируются атрибутами (structure) и параметрами, словарь их не дублирует. Отображения букв — многие-к-одному (jis C и gost Т → bjt), обратных расщеплений нет. Гранулярность и источники отображений — таблицы парсеров (parse_gost.go, parse_pro.go, parse_jis.go; выверка — docs/plan/07-r1-verification.md §4).
Подкласс Ф ГОСТ (фотодиод/фототранзистор) неоднозначен по классу: код photo един для обоих — класс записи разрешается явным ключом kind, как и в грамматике парсера.
func SubclassByCode ¶
SubclassByCode ищет подкласс по стабильному коду словаря.
func Subclasses ¶
func Subclasses() []Subclass
Subclasses возвращает словарь подклассов в стабильном порядке.
type System ¶
type System string
System — система условных обозначений. Реестр синхронизирован с сидами designation_systems (docs/plan/03-data-model.md §1.2): код ⇄ сиды — пин-тест. Отображаемые имя и пояснение — бандлы internal/i18n (D9): в реестре только коды.
const ( SystemGost System = "gost" SystemOst System = "ost" SystemPro System = "pro" SystemJedec System = "jedec" SystemJis System = "jis" SystemOther System = "other" )
Реестр систем обозначений: gost покрывает полупроводники (ГОСТ 10862-64 и преемники до ГОСТ Р 71055-2023), резисторы (ГОСТ 3453-68) и конденсаторы (единая система, действующая кодификация — ГОСТ Р 57440-2017); грамматика каждой предметной области — свой парсер.
func Systems ¶
func Systems() []System
Systems возвращает системы обозначений стартового реестра в стабильном порядке.
func SystemsForKind ¶
SystemsForKind возвращает системы, применимые к классу, в стабильном порядке.