Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Fixed

- Manually check format of sc-links in uiSc2SCnJsonTranslator

## [0.10.2] - 22.04.2025

### Added
Expand Down
25 changes: 20 additions & 5 deletions sc-kpm/sc-ui/src/translators/uiSc2SCnJsonTranslator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ static std::string_view const FORMAT_TXT{"format_txt"};
static std::string_view const FORMAT_HTML{"format_html"};
static std::string_view const FORMAT_LARGE_TXT{"format_large_txt"};
static std::string_view const formats[]{"format_html", "format_github_source_link", "format_pdf", "format_png"};
static tScAddrToStringMap formats_keynodes;

static size_t const FORMAT_LARGE_TXT_SIZE = 100;
}; // namespace ScnTranslatorConstants
Expand All @@ -64,6 +65,16 @@ uiSc2SCnJsonTranslator::~uiSc2SCnJsonTranslator()

void uiSc2SCnJsonTranslator::runImpl()
{
if (ScnTranslatorConstants::formats_keynodes.empty())
{
for (std::string_view const & formatStr : ScnTranslatorConstants::formats)
{
sc_addr format_keynode;
sc_helper_resolve_system_identifier(s_default_ctx, formatStr.data(), &format_keynode);
Comment thread
NikitaZotov marked this conversation as resolved.
ScnTranslatorConstants::formats_keynodes.emplace(format_keynode, formatStr);
}
}

// get command arguments
sc_iterator5 * it5 = sc_iterator5_a_a_f_a_f_new(
s_default_ctx,
Expand Down Expand Up @@ -277,16 +288,20 @@ void uiSc2SCnJsonTranslator::ParseScnJsonLink(ScStructureElementInfo * elInfo, S
}
else
{
sc_addr format;
for (std::string_view const & formatStr : ScnTranslatorConstants::formats)
// TODO(kilativ-dotcom): replace with sc_helper_check_arc when it'll support both direction while checking
sc_iterator3 * iterator_for_format =
sc_iterator3_f_a_a_new(s_default_ctx, elInfo->addr, sc_type_const_common_arc, sc_type_const_node);
while (sc_iterator3_next(iterator_for_format) == SC_TRUE)
{
sc_helper_resolve_system_identifier(s_default_ctx, formatStr.data(), &format);
if (sc_helper_check_arc(s_default_ctx, elInfo->addr, format, sc_type_const_common_arc) == SC_TRUE)
sc_addr const possible_format = sc_iterator3_value(iterator_for_format, 2);
auto const format_iterator = ScnTranslatorConstants::formats_keynodes.find(possible_format);
if (format_iterator != ScnTranslatorConstants::formats_keynodes.cend())
{
contentType = formatStr.data();
contentType = format_iterator->second.data();
break;
}
}
sc_iterator3_free(iterator_for_format);

if (contentType.is_null())
{
Expand Down
1 change: 1 addition & 0 deletions sc-kpm/sc-ui/src/uiTypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ typedef std::list<sc_addr> tScAddrList;
typedef std::vector<sc_addr> tScAddrVector;
typedef std::map<sc_addr, sc_type> tScAddrToScTypeMap;
typedef std::map<sc_addr, sc_addr> tScAddrToScAddrMap;
typedef std::map<sc_addr, String> tScAddrToStringMap;
typedef std::pair<sc_addr, sc_addr> tScAddrPair;
typedef std::list<tScAddrPair> tScAddrPairList;
typedef std::map<String, String> tStringStringMap;
Expand Down
Loading