From fdb2bb76ec8176b4645565ef41b9ca9ffa94dc16 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Thu, 11 Mar 2021 11:50:23 -0800 Subject: [PATCH] Refactor componentNameByReactViewName into separate file Summary: Changelog: [internal] Extract componentNameByReactViewName to separate file so it can be used elsewhere. Reviewed By: shergin, mdvacca Differential Revision: D26946159 fbshipit-source-id: cf69df1f80f1c1938fc667f4666a5d3fec5a9658 --- .../ComponentDescriptorRegistry.cpp | 60 +--------------- .../componentNameByReactViewName.cpp | 72 +++++++++++++++++++ .../componentNameByReactViewName.h | 21 ++++++ 3 files changed, 95 insertions(+), 58 deletions(-) create mode 100644 ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.cpp create mode 100644 ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.h diff --git a/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp b/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp index 27cb851b102c7c..d29bbfc672a0ef 100644 --- a/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +++ b/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp @@ -7,6 +7,8 @@ #include "ComponentDescriptorRegistry.h" +#include "componentNameByReactViewName.h" + #include #include #include @@ -50,64 +52,6 @@ void ComponentDescriptorRegistry::registerComponentDescriptor( _registryByName[componentName] = componentDescriptor; } -static std::string componentNameByReactViewName(std::string viewName) { - // We need this function only for the transition period; - // eventually, all names will be unified. - - std::string rctPrefix("RCT"); - if (std::mismatch(rctPrefix.begin(), rctPrefix.end(), viewName.begin()) - .first == rctPrefix.end()) { - // If `viewName` has "RCT" prefix, remove it. - viewName.erase(0, rctPrefix.length()); - } - - // Fabric uses slightly new names for Text components because of differences - // in semantic. - if (viewName == "Text") { - return "Paragraph"; - } - - // TODO T63839307: remove this condition after deleting TextInlineImage from - // non-Fabric code - if (viewName == "TextInlineImage") { - return "Image"; - } - if (viewName == "VirtualText") { - return "Text"; - } - - if (viewName == "ImageView") { - return "Image"; - } - - if (viewName == "AndroidHorizontalScrollView") { - return "ScrollView"; - } - - if (viewName == "RKShimmeringView") { - return "ShimmeringView"; - } - - if (viewName == "RefreshControl") { - return "PullToRefreshView"; - } - - // We need this temporarily for testing purposes until we have proper - // implementation of core components. - // iOS-only - if (viewName == "ScrollContentView") { - return "View"; - } - - // iOS-only - if (viewName == "MultilineTextInputView" || - viewName == "SinglelineTextInputView") { - return "TextInput"; - } - - return viewName; -} - ComponentDescriptor const &ComponentDescriptorRegistry::at( std::string const &componentName) const { std::shared_lock lock(mutex_); diff --git a/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.cpp b/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.cpp new file mode 100644 index 00000000000000..6ad7a8ebc63664 --- /dev/null +++ b/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.cpp @@ -0,0 +1,72 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#include "componentNameByReactViewName.h" + +namespace facebook { +namespace react { + +std::string componentNameByReactViewName(std::string viewName) { + // We need this function only for the transition period; + // eventually, all names will be unified. + + std::string rctPrefix("RCT"); + if (std::mismatch(rctPrefix.begin(), rctPrefix.end(), viewName.begin()) + .first == rctPrefix.end()) { + // If `viewName` has "RCT" prefix, remove it. + viewName.erase(0, rctPrefix.length()); + } + + // Fabric uses slightly new names for Text components because of differences + // in semantic. + if (viewName == "Text") { + return "Paragraph"; + } + + // TODO T63839307: remove this condition after deleting TextInlineImage from + // non-Fabric code + if (viewName == "TextInlineImage") { + return "Image"; + } + if (viewName == "VirtualText") { + return "Text"; + } + + if (viewName == "ImageView") { + return "Image"; + } + + if (viewName == "AndroidHorizontalScrollView") { + return "ScrollView"; + } + + if (viewName == "RKShimmeringView") { + return "ShimmeringView"; + } + + if (viewName == "RefreshControl") { + return "PullToRefreshView"; + } + + // We need this temporarily for testing purposes until we have proper + // implementation of core components. + // iOS-only + if (viewName == "ScrollContentView") { + return "View"; + } + + // iOS-only + if (viewName == "MultilineTextInputView" || + viewName == "SinglelineTextInputView") { + return "TextInput"; + } + + return viewName; +} + +} // namespace react +} // namespace facebook diff --git a/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.h b/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.h new file mode 100644 index 00000000000000..8408b2a2cadc00 --- /dev/null +++ b/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include + +namespace facebook { +namespace react { + +/** + * Provides mapping from old view name format to the new format. + */ +std::string componentNameByReactViewName(std::string viewName); + +} // namespace react +} // namespace facebook