-
Notifications
You must be signed in to change notification settings - Fork 24.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Introduce toDynamic conversion for ParagraphLocalData class
Summary: This diff introduces a way to convert ParagraphLocalData object to dynamic objects Reviewed By: shergin Differential Revision: D9801892 fbshipit-source-id: e50217042a216ea67f28178bb80b136cbb8fb195
- Loading branch information
1 parent
c5276ef
commit 470a958
Showing
4 changed files
with
67 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
16 changes: 16 additions & 0 deletions
16
ReactCommon/fabric/components/text/paragraph/conversions.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
|
||
#include <fabric/attributedstring/conversions.h> | ||
#include <fabric/components/text/ParagraphLocalData.h> | ||
#include <folly/dynamic.h> | ||
|
||
namespace facebook { | ||
namespace react { | ||
|
||
inline folly::dynamic toDynamic(const ParagraphLocalData ¶graphLocalData) { | ||
folly::dynamic newLocalData = folly::dynamic::object(); | ||
newLocalData["attributedString"] = toDynamic(paragraphLocalData.getAttributedString()); | ||
return newLocalData; | ||
} | ||
|
||
} | ||
} |
49 changes: 49 additions & 0 deletions
49
ReactCommon/fabric/components/text/tests/ParagraphLocalDataTest.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
/** | ||
* 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 <memory> | ||
|
||
#include <fabric/attributedstring/AttributedString.h> | ||
#include <fabric/attributedstring/TextAttributes.h> | ||
#include <fabric/attributedstring/primitives.h> | ||
#include <fabric/components/text/conversions.h> | ||
#include <fabric/components/text/ParagraphLocalData.h> | ||
#include <gtest/gtest.h> | ||
#include <assert.h> | ||
|
||
namespace facebook { | ||
namespace react { | ||
|
||
TEST(ParagraphLocalDataTest, testSomething) { | ||
auto attString = AttributedString(); | ||
auto fragment = AttributedString::Fragment(); | ||
fragment.string = "test"; | ||
|
||
auto text = TextAttributes(); | ||
text.foregroundColor = {colorFromComponents({100/255.0, 153/255.0, 253/255.0, 1.0})}; | ||
text.opacity = 0.5; | ||
text.fontStyle = FontStyle::Italic; | ||
text.fontWeight = FontWeight::Thin; | ||
text.fontVariant = FontVariant::TabularNums; | ||
fragment.textAttributes = text; | ||
attString.prependFragment(fragment); | ||
|
||
auto paragraphLocalData = ParagraphLocalData(); | ||
paragraphLocalData.setAttributedString(attString); | ||
|
||
auto result = toDynamic(paragraphLocalData)["attributedString"]; | ||
|
||
assert(result["string"] == fragment.string); | ||
auto textAttribute = result["fragments"][0]["textAttributes"]; | ||
assert(textAttribute["foregroundColor"] == toDynamic(text.foregroundColor)); | ||
assert(textAttribute["opacity"] == text.opacity); | ||
assert(textAttribute["fontStyle"] == toString(*text.fontStyle)); | ||
assert(textAttribute["fontWeight"] == toString(*text.fontWeight)); | ||
} | ||
|
||
} | ||
} |