diff options
| author | vitya-smirnov <[email protected]> | 2025-08-04 07:37:25 +0300 |
|---|---|---|
| committer | vitya-smirnov <[email protected]> | 2025-08-04 07:57:26 +0300 |
| commit | b29e1a14d3e01fc7effa95a223cb2e41a1520cd6 (patch) | |
| tree | df8259e8f2a098a04632f550e04a1ad12266bb28 | |
| parent | c21931a4e5358c65341c010b0f9a7f28306b65d9 (diff) | |
YQL-19616: Enumerate types DRY
Replaced hardcoded types list at highlighting generator with core
enumerator.
commit_hash:68fa56ed73fabf015a2469ed6bcc4e2481456647
| -rw-r--r-- | yql/essentials/sql/v1/highlight/sql_highlight.cpp | 47 | ||||
| -rw-r--r-- | yql/essentials/sql/v1/highlight/ut/suite.json | 3 | ||||
| -rw-r--r-- | yql/essentials/sql/v1/highlight/ya.make | 7 |
3 files changed, 18 insertions, 39 deletions
diff --git a/yql/essentials/sql/v1/highlight/sql_highlight.cpp b/yql/essentials/sql/v1/highlight/sql_highlight.cpp index ea82a43e0d0..3c4f4b67395 100644 --- a/yql/essentials/sql/v1/highlight/sql_highlight.cpp +++ b/yql/essentials/sql/v1/highlight/sql_highlight.cpp @@ -4,6 +4,9 @@ #include <contrib/libs/re2/re2/re2.h> +#include <library/cpp/json/json_reader.h> +#include <library/cpp/resource/resource.h> + #include <util/generic/algorithm.h> #include <util/generic/hash.h> #include <util/generic/hash_set.h> @@ -101,47 +104,17 @@ namespace NSQLHighlight { template <> TUnit MakeUnit<EUnitKind::TypeIdentifier>(Syntax& s) { + TVector<NSQLTranslationV1::TRegexPattern> types; + NJson::TJsonValue json = NJson::ReadJsonFastTree(NResource::Find("types.json")); + for (const NJson::TJsonValue& value : json.GetArraySafe()) { + types.emplace_back(CaseInsensitive(value["name"].GetStringSafe())); + } + return { .Kind = EUnitKind::TypeIdentifier, .Patterns = { {s.Get("ID_PLAIN"), s.Get("LESS")}, - {Merged({ - CaseInsensitive("Decimal"), - CaseInsensitive("Bool"), - CaseInsensitive("Int8"), - CaseInsensitive("Int16"), - CaseInsensitive("Int32"), - CaseInsensitive("Int64"), - CaseInsensitive("Uint8"), - CaseInsensitive("Uint16"), - CaseInsensitive("Uint32"), - CaseInsensitive("Uint64"), - CaseInsensitive("Float"), - CaseInsensitive("Double"), - CaseInsensitive("DyNumber"), - CaseInsensitive("String"), - CaseInsensitive("Utf8"), - CaseInsensitive("Json"), - CaseInsensitive("JsonDocument"), - CaseInsensitive("Yson"), - CaseInsensitive("Uuid"), - CaseInsensitive("Date"), - CaseInsensitive("Datetime"), - CaseInsensitive("Timestamp"), - CaseInsensitive("Interval"), - CaseInsensitive("TzDate"), - CaseInsensitive("TzDateTime"), - CaseInsensitive("TzTimestamp"), - CaseInsensitive("Callable"), - CaseInsensitive("Resource"), - CaseInsensitive("Tagged"), - CaseInsensitive("Generic"), - CaseInsensitive("Unit"), - CaseInsensitive("Null"), - CaseInsensitive("Void"), - CaseInsensitive("EmptyList"), - CaseInsensitive("EmptyDict"), - })}, + {Merged(std::move(types))}, }, }; } diff --git a/yql/essentials/sql/v1/highlight/ut/suite.json b/yql/essentials/sql/v1/highlight/ut/suite.json index 26fb2f3f4f4..624327e161f 100644 --- a/yql/essentials/sql/v1/highlight/ut/suite.json +++ b/yql/essentials/sql/v1/highlight/ut/suite.json @@ -61,7 +61,8 @@ ["select", "KKKKKK"], ["ALTER", "KKKKK"], ["GROUP BY", "KKKKK#_#KK"], - ["INSERT", "KKKKKK"] + ["INSERT", "KKKKKK"], + ["NULL", "KKKK"] ], "String": [ ["\"\"", "SS"], diff --git a/yql/essentials/sql/v1/highlight/ya.make b/yql/essentials/sql/v1/highlight/ya.make index a5e4ef7d6b6..103f1908aa0 100644 --- a/yql/essentials/sql/v1/highlight/ya.make +++ b/yql/essentials/sql/v1/highlight/ya.make @@ -9,9 +9,14 @@ SRCS( PEERDIR( yql/essentials/sql/v1/lexer/regex yql/essentials/sql/v1/reflect + library/cpp/resource + library/cpp/json ) -RESOURCE(yql/essentials/sql/v1/highlight/ut/suite.json suite.json) +RESOURCE( + yql/essentials/sql/v1/highlight/ut/suite.json suite.json + yql/essentials/data/language/types.json types.json +) END() |
