summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvitya-smirnov <[email protected]>2025-08-04 07:37:25 +0300
committervitya-smirnov <[email protected]>2025-08-04 07:57:26 +0300
commitb29e1a14d3e01fc7effa95a223cb2e41a1520cd6 (patch)
treedf8259e8f2a098a04632f550e04a1ad12266bb28
parentc21931a4e5358c65341c010b0f9a7f28306b65d9 (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.cpp47
-rw-r--r--yql/essentials/sql/v1/highlight/ut/suite.json3
-rw-r--r--yql/essentials/sql/v1/highlight/ya.make7
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()