Fabric: Using templates to generate convertRawProp and debugStringConvertibleItem functions
Summary: This diff opens a diffstack where we migrate the generation of all prop conversions (convertRawProp) and pretty-printing (debugStringConvertibleItem) functions to C++ templates (instead of using `#define`s). So, this diff implements base versions of those functions as templated functions. For now we still need #define-based version, but eventually, we will get rid of it. Reviewed By: fkgozali Differential Revision: D7958247 fbshipit-source-id: 24346297c1bd17e8054758f0eb84698eebfa21e2
This commit is contained in:
parent
2b827c9f13
commit
03fb77cc95
|
@ -39,7 +39,7 @@ public:
|
||||||
int maximumNumberOfLines {0};
|
int maximumNumberOfLines {0};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In case if a text cannot fit given boudaures, defines a place where
|
* In case if a text cannot fit given boundaries, defines a place where
|
||||||
* an ellipsize should be placed.
|
* an ellipsize should be placed.
|
||||||
*/
|
*/
|
||||||
EllipsizeMode ellipsizeMode {EllipsizeMode::Clip};
|
EllipsizeMode ellipsizeMode {EllipsizeMode::Clip};
|
||||||
|
|
|
@ -52,5 +52,22 @@ CONVERT_RAW_PROP_TEMPLATE(SharedColor, colorFromDynamic)
|
||||||
CONVERT_RAW_PROP_TEMPLATE(Point, pointFromDynamic)
|
CONVERT_RAW_PROP_TEMPLATE(Point, pointFromDynamic)
|
||||||
CONVERT_RAW_PROP_TEMPLATE(Size, sizeFromDynamic)
|
CONVERT_RAW_PROP_TEMPLATE(Size, sizeFromDynamic)
|
||||||
|
|
||||||
|
inline void fromDynamic(const folly::dynamic &value, bool &result) { result = value.getBool(); }
|
||||||
|
inline void fromDynamic(const folly::dynamic &value, int &result) { result = value.getInt(); }
|
||||||
|
inline void fromDynamic(const folly::dynamic &value, Float &result) { result = value.getDouble(); }
|
||||||
|
inline void fromDynamic(const folly::dynamic &value, std::string &result) { result = value.getString(); }
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline T convertRawProp(const RawProps &rawProps, const std::string &name, const T &defaultValue) {
|
||||||
|
auto &&iterator = rawProps.find(name);
|
||||||
|
if (iterator != rawProps.end()) {
|
||||||
|
T result = defaultValue;
|
||||||
|
fromDynamic(iterator->second, result);
|
||||||
|
return result;
|
||||||
|
} else {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace react
|
} // namespace react
|
||||||
} // namespace facebook
|
} // namespace facebook
|
||||||
|
|
|
@ -19,6 +19,15 @@
|
||||||
namespace facebook {
|
namespace facebook {
|
||||||
namespace react {
|
namespace react {
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline SharedDebugStringConvertible debugStringConvertibleItem(std::string name, T value, T defaultValue = {}) {
|
||||||
|
if (value == defaultValue) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return std::make_shared<DebugStringConvertibleItem>(name, toString(value));
|
||||||
|
}
|
||||||
|
|
||||||
SharedDebugStringConvertibleList operator+(const SharedDebugStringConvertibleList &lhs, const SharedDebugStringConvertibleList &rhs);
|
SharedDebugStringConvertibleList operator+(const SharedDebugStringConvertibleList &lhs, const SharedDebugStringConvertibleList &rhs);
|
||||||
SharedDebugStringConvertible debugStringConvertibleItem(std::string name, DebugStringConvertible value, std::string defaultValue = "");
|
SharedDebugStringConvertible debugStringConvertibleItem(std::string name, DebugStringConvertible value, std::string defaultValue = "");
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "ParagraphLocalData.h"
|
#include "ParagraphLocalData.h"
|
||||||
|
|
||||||
#include <fabric/debug/debugStringConvertibleUtils.h>
|
#include <fabric/debug/debugStringConvertibleUtils.h>
|
||||||
|
#include <fabric/attributedstring/debugStringConvertibleUtils.h>
|
||||||
|
|
||||||
namespace facebook {
|
namespace facebook {
|
||||||
namespace react {
|
namespace react {
|
||||||
|
@ -38,7 +39,7 @@ std::string ParagraphLocalData::getDebugName() const {
|
||||||
|
|
||||||
SharedDebugStringConvertibleList ParagraphLocalData::getDebugProps() const {
|
SharedDebugStringConvertibleList ParagraphLocalData::getDebugProps() const {
|
||||||
return {
|
return {
|
||||||
debugStringConvertibleItem("attributedString", attributedString_)
|
debugStringConvertibleItem("attributedString", attributedString_, "")
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue