react-native-fast-html-parser 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FastHtmlParser.podspec +36 -0
- package/LICENSE +20 -0
- package/README.md +435 -0
- package/android/CMakeLists.txt +31 -0
- package/android/build.gradle +121 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/cpp/cpp-adapter.cpp +11 -0
- package/android/src/main/java/com/margelo/nitro/fasthtmlparser/FastHtmlParserPackage.kt +22 -0
- package/android/src/main/jniLibs/arm64-v8a/libhtml_2_json.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libhtml_2_json.so +0 -0
- package/android/src/main/jniLibs/x86/libhtml_2_json.so +0 -0
- package/android/src/main/jniLibs/x86_64/libhtml_2_json.so +0 -0
- package/cpp/HybridFastHtmlParser.cpp +178 -0
- package/cpp/HybridFastHtmlParser.hpp +224 -0
- package/ios/libs/libhtml_2_json.xcframework/Info.plist +44 -0
- package/ios/libs/libhtml_2_json.xcframework/ios-arm64/libhtml_2_json.a +0 -0
- package/ios/libs/libhtml_2_json.xcframework/ios-arm64_x86_64-simulator/libhtml_2_json.a +0 -0
- package/lib/module/FastHtmlParser.nitro.js +4 -0
- package/lib/module/FastHtmlParser.nitro.js.map +1 -0
- package/lib/module/index.js +4 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/parser.js +6 -0
- package/lib/module/parser.js.map +1 -0
- package/lib/module/parser.native.js +8 -0
- package/lib/module/parser.native.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/FastHtmlParser.nitro.d.ts +81 -0
- package/lib/typescript/src/FastHtmlParser.nitro.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/parser.d.ts +3 -0
- package/lib/typescript/src/parser.d.ts.map +1 -0
- package/lib/typescript/src/parser.native.d.ts +3 -0
- package/lib/typescript/src/parser.native.d.ts.map +1 -0
- package/nitro.json +23 -0
- package/nitrogen/generated/android/fasthtmlparser+autolinking.cmake +88 -0
- package/nitrogen/generated/android/fasthtmlparser+autolinking.gradle +27 -0
- package/nitrogen/generated/android/fasthtmlparserOnLoad.cpp +49 -0
- package/nitrogen/generated/android/fasthtmlparserOnLoad.hpp +34 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/fasthtmlparser/fasthtmlparserOnLoad.kt +35 -0
- package/nitrogen/generated/ios/FastHtmlParser+autolinking.rb +62 -0
- package/nitrogen/generated/ios/FastHtmlParser-Swift-Cxx-Bridge.cpp +17 -0
- package/nitrogen/generated/ios/FastHtmlParser-Swift-Cxx-Bridge.hpp +27 -0
- package/nitrogen/generated/ios/FastHtmlParser-Swift-Cxx-Umbrella.hpp +38 -0
- package/nitrogen/generated/ios/FastHtmlParserAutolinking.mm +35 -0
- package/nitrogen/generated/ios/FastHtmlParserAutolinking.swift +16 -0
- package/nitrogen/generated/shared/c++/HybridContentBlockSpec.cpp +39 -0
- package/nitrogen/generated/shared/c++/HybridContentBlockSpec.hpp +96 -0
- package/nitrogen/generated/shared/c++/HybridDefinitionItemSpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridDefinitionItemSpec.hpp +68 -0
- package/nitrogen/generated/shared/c++/HybridFastHtmlParserSpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridFastHtmlParserSpec.hpp +67 -0
- package/nitrogen/generated/shared/c++/HybridInlineNodeSpec.cpp +25 -0
- package/nitrogen/generated/shared/c++/HybridInlineNodeSpec.hpp +70 -0
- package/nitrogen/generated/shared/c++/HybridListItemSpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridListItemSpec.hpp +71 -0
- package/nitrogen/generated/shared/c++/HybridParsedArticleSpec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridParsedArticleSpec.hpp +66 -0
- package/nitrogen/generated/shared/c++/HybridTableCellSpec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridTableCellSpec.hpp +66 -0
- package/nitrogen/generated/shared/c++/HybridTableRowSpec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridTableRowSpec.hpp +66 -0
- package/package.json +153 -0
- package/scripts/postinstall.js +234 -0
- package/src/FastHtmlParser.nitro.ts +86 -0
- package/src/index.tsx +12 -0
- package/src/parser.native.tsx +9 -0
- package/src/parser.tsx +7 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
#include "HybridFastHtmlParser.hpp"
|
|
2
|
+
|
|
3
|
+
namespace margelo::nitro::fasthtmlparser {
|
|
4
|
+
|
|
5
|
+
// ── HybridInlineNode ─────────────────────────────────────────────────────────
|
|
6
|
+
std::string HybridInlineNode::getType() {
|
|
7
|
+
return getStringAndFree(get_inline_node_type(m_node));
|
|
8
|
+
}
|
|
9
|
+
std::string HybridInlineNode::getText() {
|
|
10
|
+
return getStringAndFree(get_inline_node_text(m_node));
|
|
11
|
+
}
|
|
12
|
+
std::string HybridInlineNode::getUrl() {
|
|
13
|
+
return getStringAndFree(get_inline_node_url(m_node));
|
|
14
|
+
}
|
|
15
|
+
double HybridInlineNode::getChildCount() {
|
|
16
|
+
return (double)get_inline_node_child_count(m_node);
|
|
17
|
+
}
|
|
18
|
+
std::variant<std::shared_ptr<HybridInlineNodeSpec>, NullType> HybridInlineNode::getChild(double index) {
|
|
19
|
+
const InlineNode* child = get_inline_node_child_by_index(m_node, (size_t)index);
|
|
20
|
+
if (!child) return nullptr;
|
|
21
|
+
return std::make_shared<HybridInlineNode>(m_root, child);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// ── HybridDefinitionItem ─────────────────────────────────────────────────────
|
|
25
|
+
double HybridDefinitionItem::getTermCount() {
|
|
26
|
+
return (double)get_def_item_term_count(m_item);
|
|
27
|
+
}
|
|
28
|
+
std::variant<std::shared_ptr<HybridInlineNodeSpec>, NullType> HybridDefinitionItem::getTerm(double index) {
|
|
29
|
+
const InlineNode* child = get_def_item_term_by_index(m_item, (size_t)index);
|
|
30
|
+
if (!child) return nullptr;
|
|
31
|
+
return std::make_shared<HybridInlineNode>(m_root, child);
|
|
32
|
+
}
|
|
33
|
+
double HybridDefinitionItem::getDefCount() {
|
|
34
|
+
return (double)get_def_item_def_count(m_item);
|
|
35
|
+
}
|
|
36
|
+
std::variant<std::shared_ptr<HybridInlineNodeSpec>, NullType> HybridDefinitionItem::getDef(double index) {
|
|
37
|
+
const InlineNode* child = get_def_item_def_by_index(m_item, (size_t)index);
|
|
38
|
+
if (!child) return nullptr;
|
|
39
|
+
return std::make_shared<HybridInlineNode>(m_root, child);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// ── HybridTableCell ──────────────────────────────────────────────────────────
|
|
43
|
+
double HybridTableCell::getChildCount() {
|
|
44
|
+
return (double)get_table_cell_child_count(m_cell);
|
|
45
|
+
}
|
|
46
|
+
std::variant<std::shared_ptr<HybridInlineNodeSpec>, NullType> HybridTableCell::getChild(double index) {
|
|
47
|
+
const InlineNode* child = get_table_cell_child_by_index(m_cell, (size_t)index);
|
|
48
|
+
if (!child) return nullptr;
|
|
49
|
+
return std::make_shared<HybridInlineNode>(m_root, child);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// ── HybridTableRow ───────────────────────────────────────────────────────────
|
|
53
|
+
double HybridTableRow::getCellCount() {
|
|
54
|
+
return (double)get_table_row_cell_count(m_row);
|
|
55
|
+
}
|
|
56
|
+
std::variant<std::shared_ptr<HybridTableCellSpec>, NullType> HybridTableRow::getCell(double index) {
|
|
57
|
+
const TableCell* cell = get_table_row_cell_by_index(m_row, (size_t)index);
|
|
58
|
+
if (!cell) return nullptr;
|
|
59
|
+
return std::make_shared<HybridTableCell>(m_root, cell);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// ── HybridListItem ───────────────────────────────────────────────────────────
|
|
63
|
+
double HybridListItem::getChildCount() {
|
|
64
|
+
return (double)get_list_item_child_count(m_item);
|
|
65
|
+
}
|
|
66
|
+
std::variant<std::shared_ptr<HybridInlineNodeSpec>, NullType> HybridListItem::getChild(double index) {
|
|
67
|
+
const InlineNode* child = get_list_item_child_by_index(m_item, (size_t)index);
|
|
68
|
+
if (!child) return nullptr;
|
|
69
|
+
return std::make_shared<HybridInlineNode>(m_root, child);
|
|
70
|
+
}
|
|
71
|
+
double HybridListItem::getNestedCount() {
|
|
72
|
+
return (double)get_list_item_nested_count(m_item);
|
|
73
|
+
}
|
|
74
|
+
std::variant<std::shared_ptr<HybridContentBlockSpec>, NullType> HybridListItem::getNested(double index) {
|
|
75
|
+
const ContentBlock* nested = get_list_item_nested_by_index(m_item, (size_t)index);
|
|
76
|
+
if (!nested) return nullptr;
|
|
77
|
+
char* raw_type = get_block_type_ptr(nested);
|
|
78
|
+
std::string t(raw_type);
|
|
79
|
+
free_string_ffi(raw_type);
|
|
80
|
+
return std::make_shared<HybridContentBlock>(m_root, nested, t);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// ── HybridContentBlock ───────────────────────────────────────────────────────
|
|
84
|
+
std::string HybridContentBlock::getType() {
|
|
85
|
+
return m_type;
|
|
86
|
+
}
|
|
87
|
+
double HybridContentBlock::getLevel() {
|
|
88
|
+
return (double)get_heading_level_ptr(m_block);
|
|
89
|
+
}
|
|
90
|
+
std::string HybridContentBlock::getUrl() {
|
|
91
|
+
return getStringAndFree(get_image_url_ptr(m_block));
|
|
92
|
+
}
|
|
93
|
+
std::string HybridContentBlock::getAlt() {
|
|
94
|
+
return getStringAndFree(get_image_alt_ptr(m_block));
|
|
95
|
+
}
|
|
96
|
+
std::string HybridContentBlock::getCaption() {
|
|
97
|
+
return getStringAndFree(get_figure_caption_ptr(m_block));
|
|
98
|
+
}
|
|
99
|
+
std::string HybridContentBlock::getCode() {
|
|
100
|
+
return getStringAndFree(get_codeblock_code_ptr(m_block));
|
|
101
|
+
}
|
|
102
|
+
std::string HybridContentBlock::getLanguage() {
|
|
103
|
+
return getStringAndFree(get_codeblock_lang_ptr(m_block));
|
|
104
|
+
}
|
|
105
|
+
std::string HybridContentBlock::getSrc() {
|
|
106
|
+
if (m_type == "Video") return getStringAndFree(get_video_src_ptr(m_block));
|
|
107
|
+
if (m_type == "Audio") return getStringAndFree(get_audio_src_ptr(m_block));
|
|
108
|
+
return getStringAndFree(get_embed_src_ptr(m_block));
|
|
109
|
+
}
|
|
110
|
+
std::string HybridContentBlock::getPoster() {
|
|
111
|
+
return getStringAndFree(get_video_poster_ptr(m_block));
|
|
112
|
+
}
|
|
113
|
+
std::string HybridContentBlock::getTitle() {
|
|
114
|
+
return getStringAndFree(get_embed_title_ptr(m_block));
|
|
115
|
+
}
|
|
116
|
+
double HybridContentBlock::getChildCount() {
|
|
117
|
+
return (double)get_block_child_count_ptr(m_block);
|
|
118
|
+
}
|
|
119
|
+
std::variant<std::shared_ptr<HybridInlineNodeSpec>, NullType> HybridContentBlock::getChild(double index) {
|
|
120
|
+
const InlineNode* child = get_block_child_by_index(m_block, (size_t)index);
|
|
121
|
+
if (!child) return nullptr;
|
|
122
|
+
return std::make_shared<HybridInlineNode>(m_root, child);
|
|
123
|
+
}
|
|
124
|
+
std::variant<std::shared_ptr<HybridContentBlockSpec>, NullType> HybridContentBlock::getQuoteChild(double index) {
|
|
125
|
+
const ContentBlock* child = get_quote_child_by_index(m_block, (size_t)index);
|
|
126
|
+
if (!child) return nullptr;
|
|
127
|
+
char* raw_type = get_block_type_ptr(child);
|
|
128
|
+
std::string t(raw_type);
|
|
129
|
+
free_string_ffi(raw_type);
|
|
130
|
+
return std::make_shared<HybridContentBlock>(m_root, child, t);
|
|
131
|
+
}
|
|
132
|
+
bool HybridContentBlock::getOrdered() {
|
|
133
|
+
return get_list_ordered(m_block);
|
|
134
|
+
}
|
|
135
|
+
double HybridContentBlock::getItemCount() {
|
|
136
|
+
return (double)get_list_item_count(m_block);
|
|
137
|
+
}
|
|
138
|
+
std::variant<std::shared_ptr<HybridListItemSpec>, NullType> HybridContentBlock::getItem(double index) {
|
|
139
|
+
const ListItem* item = get_list_item_by_index(m_block, (size_t)index);
|
|
140
|
+
if (!item) return nullptr;
|
|
141
|
+
return std::make_shared<HybridListItem>(m_root, item);
|
|
142
|
+
}
|
|
143
|
+
double HybridContentBlock::getRowCount() {
|
|
144
|
+
return (double)get_table_row_count(m_block);
|
|
145
|
+
}
|
|
146
|
+
std::variant<std::shared_ptr<HybridTableRowSpec>, NullType> HybridContentBlock::getRow(double index) {
|
|
147
|
+
const TableRow* row = get_table_row_by_index(m_block, (size_t)index);
|
|
148
|
+
if (!row) return nullptr;
|
|
149
|
+
return std::make_shared<HybridTableRow>(m_root, row);
|
|
150
|
+
}
|
|
151
|
+
std::variant<std::shared_ptr<HybridDefinitionItemSpec>, NullType> HybridContentBlock::getDefItem(double index) {
|
|
152
|
+
const DefinitionItem* item = get_def_list_item_by_index(m_block, (size_t)index);
|
|
153
|
+
if (!item) return nullptr;
|
|
154
|
+
return std::make_shared<HybridDefinitionItem>(m_root, item);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// ── HybridParsedArticle ──────────────────────────────────────────────────────
|
|
158
|
+
double HybridParsedArticle::getLength() {
|
|
159
|
+
return (double)get_block_count(m_article);
|
|
160
|
+
}
|
|
161
|
+
std::variant<std::shared_ptr<HybridContentBlockSpec>, NullType> HybridParsedArticle::getBlock(double index) {
|
|
162
|
+
const ContentBlock* block = get_block_by_index(m_article, (size_t)index);
|
|
163
|
+
if (!block) return nullptr;
|
|
164
|
+
char* raw_type = get_block_type_ptr(block);
|
|
165
|
+
std::string t(raw_type);
|
|
166
|
+
free_string_ffi(raw_type);
|
|
167
|
+
|
|
168
|
+
// Correctly query the shared_ptr to ourself via dynamic_pointer_cast from HybridObject's shared_from_this()
|
|
169
|
+
auto self = std::dynamic_pointer_cast<HybridParsedArticle>(shared_from_this());
|
|
170
|
+
return std::make_shared<HybridContentBlock>(self, block, t);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// ── HybridFastHtmlParser ─────────────────────────────────────────────────────
|
|
174
|
+
std::variant<std::shared_ptr<HybridParsedArticleSpec>, NullType> HybridFastHtmlParser::parse(const std::string& html) {
|
|
175
|
+
return std::make_shared<HybridParsedArticle>(html.c_str());
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
} // namespace margelo::nitro::fasthtmlparser
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include "HybridFastHtmlParserSpec.hpp"
|
|
4
|
+
#include "HybridParsedArticleSpec.hpp"
|
|
5
|
+
#include "HybridContentBlockSpec.hpp"
|
|
6
|
+
#include "HybridListItemSpec.hpp"
|
|
7
|
+
#include "HybridInlineNodeSpec.hpp"
|
|
8
|
+
#include "HybridTableRowSpec.hpp"
|
|
9
|
+
#include "HybridTableCellSpec.hpp"
|
|
10
|
+
#include "HybridDefinitionItemSpec.hpp"
|
|
11
|
+
|
|
12
|
+
#include <NitroModules/Null.hpp>
|
|
13
|
+
#include <memory>
|
|
14
|
+
#include <string>
|
|
15
|
+
#include <variant>
|
|
16
|
+
|
|
17
|
+
extern "C" {
|
|
18
|
+
struct ParsedArticle;
|
|
19
|
+
struct ContentBlock;
|
|
20
|
+
struct ListItem;
|
|
21
|
+
struct TableRow;
|
|
22
|
+
struct TableCell;
|
|
23
|
+
struct DefinitionItem;
|
|
24
|
+
struct InlineNode;
|
|
25
|
+
|
|
26
|
+
ParsedArticle* parse_html_ffi(const char* html);
|
|
27
|
+
void free_article_ffi(ParsedArticle* article);
|
|
28
|
+
size_t get_block_count(const ParsedArticle* article);
|
|
29
|
+
void free_string_ffi(char* s);
|
|
30
|
+
|
|
31
|
+
const ContentBlock* get_block_by_index(const ParsedArticle* article, size_t index);
|
|
32
|
+
char* get_block_type_ptr(const ContentBlock* block);
|
|
33
|
+
uint8_t get_heading_level_ptr(const ContentBlock* block);
|
|
34
|
+
char* get_image_url_ptr(const ContentBlock* block);
|
|
35
|
+
char* get_image_alt_ptr(const ContentBlock* block);
|
|
36
|
+
char* get_codeblock_code_ptr(const ContentBlock* block);
|
|
37
|
+
char* get_codeblock_lang_ptr(const ContentBlock* block);
|
|
38
|
+
char* get_video_src_ptr(const ContentBlock* block);
|
|
39
|
+
char* get_video_poster_ptr(const ContentBlock* block);
|
|
40
|
+
char* get_audio_src_ptr(const ContentBlock* block);
|
|
41
|
+
char* get_embed_src_ptr(const ContentBlock* block);
|
|
42
|
+
char* get_embed_title_ptr(const ContentBlock* block);
|
|
43
|
+
char* get_figure_caption_ptr(const ContentBlock* block);
|
|
44
|
+
size_t get_block_child_count_ptr(const ContentBlock* block);
|
|
45
|
+
const InlineNode* get_block_child_by_index(const ContentBlock* block, size_t index);
|
|
46
|
+
size_t get_quote_child_count(const ContentBlock* block);
|
|
47
|
+
const ContentBlock* get_quote_child_by_index(const ContentBlock* block, size_t index);
|
|
48
|
+
bool get_list_ordered(const ContentBlock* block);
|
|
49
|
+
size_t get_list_item_count(const ContentBlock* block);
|
|
50
|
+
const ListItem* get_list_item_by_index(const ContentBlock* block, size_t index);
|
|
51
|
+
size_t get_table_row_count(const ContentBlock* block);
|
|
52
|
+
const TableRow* get_table_row_by_index(const ContentBlock* block, size_t index);
|
|
53
|
+
size_t get_def_list_item_count(const ContentBlock* block);
|
|
54
|
+
const DefinitionItem* get_def_list_item_by_index(const ContentBlock* block, size_t index);
|
|
55
|
+
|
|
56
|
+
size_t get_list_item_child_count(const ListItem* item);
|
|
57
|
+
const InlineNode* get_list_item_child_by_index(const ListItem* item, size_t index);
|
|
58
|
+
size_t get_list_item_nested_count(const ListItem* item);
|
|
59
|
+
const ContentBlock* get_list_item_nested_by_index(const ListItem* item, size_t index);
|
|
60
|
+
|
|
61
|
+
size_t get_table_row_cell_count(const TableRow* row);
|
|
62
|
+
const TableCell* get_table_row_cell_by_index(const TableRow* row, size_t index);
|
|
63
|
+
size_t get_table_cell_child_count(const TableCell* cell);
|
|
64
|
+
const InlineNode* get_table_cell_child_by_index(const TableCell* cell, size_t index);
|
|
65
|
+
|
|
66
|
+
size_t get_def_item_term_count(const DefinitionItem* item);
|
|
67
|
+
const InlineNode* get_def_item_term_by_index(const DefinitionItem* item, size_t index);
|
|
68
|
+
size_t get_def_item_def_count(const DefinitionItem* item);
|
|
69
|
+
const InlineNode* get_def_item_def_by_index(const DefinitionItem* item, size_t index);
|
|
70
|
+
|
|
71
|
+
char* get_inline_node_type(const InlineNode* node);
|
|
72
|
+
char* get_inline_node_text(const InlineNode* node);
|
|
73
|
+
char* get_inline_node_url(const InlineNode* node);
|
|
74
|
+
size_t get_inline_node_child_count(const InlineNode* node);
|
|
75
|
+
const InlineNode* get_inline_node_child_by_index(const InlineNode* node, size_t index);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
namespace margelo::nitro::fasthtmlparser {
|
|
79
|
+
|
|
80
|
+
using namespace margelo::nitro;
|
|
81
|
+
|
|
82
|
+
inline std::string getStringAndFree(char* raw_str) {
|
|
83
|
+
if (!raw_str) return "";
|
|
84
|
+
std::string s(raw_str);
|
|
85
|
+
free_string_ffi(raw_str);
|
|
86
|
+
return s;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
class HybridParsedArticle;
|
|
90
|
+
|
|
91
|
+
// ── HybridInlineNode ─────────────────────────────────────────────────────────
|
|
92
|
+
class HybridInlineNode : public HybridInlineNodeSpec {
|
|
93
|
+
private:
|
|
94
|
+
std::shared_ptr<HybridParsedArticle> m_root;
|
|
95
|
+
const InlineNode* m_node;
|
|
96
|
+
public:
|
|
97
|
+
HybridInlineNode(std::shared_ptr<HybridParsedArticle> root, const InlineNode* node)
|
|
98
|
+
: HybridObject("InlineNode"), HybridInlineNodeSpec(), m_root(root), m_node(node) {}
|
|
99
|
+
|
|
100
|
+
std::string getType() override;
|
|
101
|
+
std::string getText() override;
|
|
102
|
+
std::string getUrl() override;
|
|
103
|
+
double getChildCount() override;
|
|
104
|
+
std::variant<std::shared_ptr<HybridInlineNodeSpec>, NullType> getChild(double index) override;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
// ── HybridDefinitionItem ─────────────────────────────────────────────────────
|
|
108
|
+
class HybridDefinitionItem : public HybridDefinitionItemSpec {
|
|
109
|
+
private:
|
|
110
|
+
std::shared_ptr<HybridParsedArticle> m_root;
|
|
111
|
+
const DefinitionItem* m_item;
|
|
112
|
+
public:
|
|
113
|
+
HybridDefinitionItem(std::shared_ptr<HybridParsedArticle> root, const DefinitionItem* item)
|
|
114
|
+
: HybridObject("DefinitionItem"), HybridDefinitionItemSpec(), m_root(root), m_item(item) {}
|
|
115
|
+
|
|
116
|
+
double getTermCount() override;
|
|
117
|
+
std::variant<std::shared_ptr<HybridInlineNodeSpec>, NullType> getTerm(double index) override;
|
|
118
|
+
double getDefCount() override;
|
|
119
|
+
std::variant<std::shared_ptr<HybridInlineNodeSpec>, NullType> getDef(double index) override;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
// ── HybridTableCell ──────────────────────────────────────────────────────────
|
|
123
|
+
class HybridTableCell : public HybridTableCellSpec {
|
|
124
|
+
private:
|
|
125
|
+
std::shared_ptr<HybridParsedArticle> m_root;
|
|
126
|
+
const TableCell* m_cell;
|
|
127
|
+
public:
|
|
128
|
+
HybridTableCell(std::shared_ptr<HybridParsedArticle> root, const TableCell* cell)
|
|
129
|
+
: HybridObject("TableCell"), HybridTableCellSpec(), m_root(root), m_cell(cell) {}
|
|
130
|
+
|
|
131
|
+
double getChildCount() override;
|
|
132
|
+
std::variant<std::shared_ptr<HybridInlineNodeSpec>, NullType> getChild(double index) override;
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// ── HybridTableRow ───────────────────────────────────────────────────────────
|
|
136
|
+
class HybridTableRow : public HybridTableRowSpec {
|
|
137
|
+
private:
|
|
138
|
+
std::shared_ptr<HybridParsedArticle> m_root;
|
|
139
|
+
const TableRow* m_row;
|
|
140
|
+
public:
|
|
141
|
+
HybridTableRow(std::shared_ptr<HybridParsedArticle> root, const TableRow* row)
|
|
142
|
+
: HybridObject("TableRow"), HybridTableRowSpec(), m_root(root), m_row(row) {}
|
|
143
|
+
|
|
144
|
+
double getCellCount() override;
|
|
145
|
+
std::variant<std::shared_ptr<HybridTableCellSpec>, NullType> getCell(double index) override;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
// ── HybridListItem ───────────────────────────────────────────────────────────
|
|
149
|
+
class HybridListItem : public HybridListItemSpec {
|
|
150
|
+
private:
|
|
151
|
+
std::shared_ptr<HybridParsedArticle> m_root;
|
|
152
|
+
const ListItem* m_item;
|
|
153
|
+
public:
|
|
154
|
+
HybridListItem(std::shared_ptr<HybridParsedArticle> root, const ListItem* item)
|
|
155
|
+
: HybridObject("ListItem"), HybridListItemSpec(), m_root(root), m_item(item) {}
|
|
156
|
+
|
|
157
|
+
double getChildCount() override;
|
|
158
|
+
std::variant<std::shared_ptr<HybridInlineNodeSpec>, NullType> getChild(double index) override;
|
|
159
|
+
double getNestedCount() override;
|
|
160
|
+
std::variant<std::shared_ptr<HybridContentBlockSpec>, NullType> getNested(double index) override;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
// ── HybridContentBlock ───────────────────────────────────────────────────────
|
|
164
|
+
class HybridContentBlock : public HybridContentBlockSpec {
|
|
165
|
+
private:
|
|
166
|
+
std::shared_ptr<HybridParsedArticle> m_root;
|
|
167
|
+
const ContentBlock* m_block;
|
|
168
|
+
std::string m_type;
|
|
169
|
+
public:
|
|
170
|
+
HybridContentBlock(std::shared_ptr<HybridParsedArticle> root, const ContentBlock* block, std::string type)
|
|
171
|
+
: HybridObject("ContentBlock"), HybridContentBlockSpec(), m_root(root), m_block(block), m_type(type) {}
|
|
172
|
+
|
|
173
|
+
std::string getType() override;
|
|
174
|
+
double getLevel() override;
|
|
175
|
+
std::string getUrl() override;
|
|
176
|
+
std::string getAlt() override;
|
|
177
|
+
std::string getCaption() override;
|
|
178
|
+
std::string getCode() override;
|
|
179
|
+
std::string getLanguage() override;
|
|
180
|
+
std::string getSrc() override;
|
|
181
|
+
std::string getPoster() override;
|
|
182
|
+
std::string getTitle() override;
|
|
183
|
+
|
|
184
|
+
double getChildCount() override;
|
|
185
|
+
std::variant<std::shared_ptr<HybridInlineNodeSpec>, NullType> getChild(double index) override;
|
|
186
|
+
std::variant<std::shared_ptr<HybridContentBlockSpec>, NullType> getQuoteChild(double index) override;
|
|
187
|
+
|
|
188
|
+
bool getOrdered() override;
|
|
189
|
+
double getItemCount() override;
|
|
190
|
+
std::variant<std::shared_ptr<HybridListItemSpec>, NullType> getItem(double index) override;
|
|
191
|
+
|
|
192
|
+
double getRowCount() override;
|
|
193
|
+
std::variant<std::shared_ptr<HybridTableRowSpec>, NullType> getRow(double index) override;
|
|
194
|
+
|
|
195
|
+
std::variant<std::shared_ptr<HybridDefinitionItemSpec>, NullType> getDefItem(double index) override;
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
// ── HybridParsedArticle ──────────────────────────────────────────────────────
|
|
199
|
+
// NOTE: do NOT add enable_shared_from_this here — HybridObject already inherits it.
|
|
200
|
+
class HybridParsedArticle : public HybridParsedArticleSpec {
|
|
201
|
+
private:
|
|
202
|
+
ParsedArticle* m_article;
|
|
203
|
+
public:
|
|
204
|
+
HybridParsedArticle(const char* html) : HybridObject("ParsedArticle"), HybridParsedArticleSpec() {
|
|
205
|
+
m_article = parse_html_ffi(html);
|
|
206
|
+
}
|
|
207
|
+
~HybridParsedArticle() {
|
|
208
|
+
if (m_article) free_article_ffi(m_article);
|
|
209
|
+
}
|
|
210
|
+
const ParsedArticle* getArticle() const { return m_article; }
|
|
211
|
+
|
|
212
|
+
double getLength() override;
|
|
213
|
+
std::variant<std::shared_ptr<HybridContentBlockSpec>, NullType> getBlock(double index) override;
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
// ── HybridFastHtmlParser ─────────────────────────────────────────────────────
|
|
217
|
+
class HybridFastHtmlParser : public HybridFastHtmlParserSpec {
|
|
218
|
+
public:
|
|
219
|
+
HybridFastHtmlParser() : HybridObject("FastHtmlParser"), HybridFastHtmlParserSpec() {}
|
|
220
|
+
|
|
221
|
+
std::variant<std::shared_ptr<HybridParsedArticleSpec>, NullType> parse(const std::string& html) override;
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
} // namespace margelo::nitro::fasthtmlparser
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>AvailableLibraries</key>
|
|
6
|
+
<array>
|
|
7
|
+
<dict>
|
|
8
|
+
<key>BinaryPath</key>
|
|
9
|
+
<string>libhtml_2_json.a</string>
|
|
10
|
+
<key>LibraryIdentifier</key>
|
|
11
|
+
<string>ios-arm64_x86_64-simulator</string>
|
|
12
|
+
<key>LibraryPath</key>
|
|
13
|
+
<string>libhtml_2_json.a</string>
|
|
14
|
+
<key>SupportedArchitectures</key>
|
|
15
|
+
<array>
|
|
16
|
+
<string>arm64</string>
|
|
17
|
+
<string>x86_64</string>
|
|
18
|
+
</array>
|
|
19
|
+
<key>SupportedPlatform</key>
|
|
20
|
+
<string>ios</string>
|
|
21
|
+
<key>SupportedPlatformVariant</key>
|
|
22
|
+
<string>simulator</string>
|
|
23
|
+
</dict>
|
|
24
|
+
<dict>
|
|
25
|
+
<key>BinaryPath</key>
|
|
26
|
+
<string>libhtml_2_json.a</string>
|
|
27
|
+
<key>LibraryIdentifier</key>
|
|
28
|
+
<string>ios-arm64</string>
|
|
29
|
+
<key>LibraryPath</key>
|
|
30
|
+
<string>libhtml_2_json.a</string>
|
|
31
|
+
<key>SupportedArchitectures</key>
|
|
32
|
+
<array>
|
|
33
|
+
<string>arm64</string>
|
|
34
|
+
</array>
|
|
35
|
+
<key>SupportedPlatform</key>
|
|
36
|
+
<string>ios</string>
|
|
37
|
+
</dict>
|
|
38
|
+
</array>
|
|
39
|
+
<key>CFBundlePackageType</key>
|
|
40
|
+
<string>XFWK</string>
|
|
41
|
+
<key>XCFrameworkFormatVersion</key>
|
|
42
|
+
<string>1.0</string>
|
|
43
|
+
</dict>
|
|
44
|
+
</plist>
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["FastHtmlParser.nitro.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["parseHTML"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["parseHTML","_html","Error"],"sourceRoot":"../../src","sources":["parser.tsx"],"mappings":";;AAEA,OAAO,SAASA,SAASA,CAACC,KAAa,EAAwB;EAC7D,MAAM,IAAIC,KAAK,CACb,wEACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { NitroModules } from 'react-native-nitro-modules';
|
|
4
|
+
const FastHtmlParserHybridObject = NitroModules.createHybridObject('FastHtmlParser');
|
|
5
|
+
export function parseHTML(html) {
|
|
6
|
+
return FastHtmlParserHybridObject.parse(html);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=parser.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NitroModules","FastHtmlParserHybridObject","createHybridObject","parseHTML","html","parse"],"sourceRoot":"../../src","sources":["parser.native.tsx"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AAGzD,MAAMC,0BAA0B,GAC9BD,YAAY,CAACE,kBAAkB,CAAiB,gBAAgB,CAAC;AAEnE,OAAO,SAASC,SAASA,CAACC,IAAY,EAAwB;EAC5D,OAAOH,0BAA0B,CAACI,KAAK,CAACD,IAAI,CAAC;AAC/C","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { HybridObject } from 'react-native-nitro-modules';
|
|
2
|
+
export interface InlineNode extends HybridObject<{
|
|
3
|
+
ios: 'c++';
|
|
4
|
+
android: 'c++';
|
|
5
|
+
}> {
|
|
6
|
+
readonly type: string;
|
|
7
|
+
readonly text: string;
|
|
8
|
+
readonly url: string;
|
|
9
|
+
readonly childCount: number;
|
|
10
|
+
getChild(index: number): InlineNode | null;
|
|
11
|
+
}
|
|
12
|
+
export interface ListItem extends HybridObject<{
|
|
13
|
+
ios: 'c++';
|
|
14
|
+
android: 'c++';
|
|
15
|
+
}> {
|
|
16
|
+
readonly childCount: number;
|
|
17
|
+
getChild(index: number): InlineNode | null;
|
|
18
|
+
readonly nestedCount: number;
|
|
19
|
+
getNested(index: number): ContentBlock | null;
|
|
20
|
+
}
|
|
21
|
+
export interface TableCell extends HybridObject<{
|
|
22
|
+
ios: 'c++';
|
|
23
|
+
android: 'c++';
|
|
24
|
+
}> {
|
|
25
|
+
readonly childCount: number;
|
|
26
|
+
getChild(index: number): InlineNode | null;
|
|
27
|
+
}
|
|
28
|
+
export interface TableRow extends HybridObject<{
|
|
29
|
+
ios: 'c++';
|
|
30
|
+
android: 'c++';
|
|
31
|
+
}> {
|
|
32
|
+
readonly cellCount: number;
|
|
33
|
+
getCell(index: number): TableCell | null;
|
|
34
|
+
}
|
|
35
|
+
export interface DefinitionItem extends HybridObject<{
|
|
36
|
+
ios: 'c++';
|
|
37
|
+
android: 'c++';
|
|
38
|
+
}> {
|
|
39
|
+
readonly termCount: number;
|
|
40
|
+
getTerm(index: number): InlineNode | null;
|
|
41
|
+
readonly defCount: number;
|
|
42
|
+
getDef(index: number): InlineNode | null;
|
|
43
|
+
}
|
|
44
|
+
export interface ContentBlock extends HybridObject<{
|
|
45
|
+
ios: 'c++';
|
|
46
|
+
android: 'c++';
|
|
47
|
+
}> {
|
|
48
|
+
readonly type: string;
|
|
49
|
+
readonly level: number;
|
|
50
|
+
readonly url: string;
|
|
51
|
+
readonly alt: string;
|
|
52
|
+
readonly caption: string;
|
|
53
|
+
readonly code: string;
|
|
54
|
+
readonly language: string;
|
|
55
|
+
readonly src: string;
|
|
56
|
+
readonly poster: string;
|
|
57
|
+
readonly title: string;
|
|
58
|
+
readonly childCount: number;
|
|
59
|
+
getChild(index: number): InlineNode | null;
|
|
60
|
+
getQuoteChild(index: number): ContentBlock | null;
|
|
61
|
+
readonly ordered: boolean;
|
|
62
|
+
readonly itemCount: number;
|
|
63
|
+
getItem(index: number): ListItem | null;
|
|
64
|
+
readonly rowCount: number;
|
|
65
|
+
getRow(index: number): TableRow | null;
|
|
66
|
+
getDefItem(index: number): DefinitionItem | null;
|
|
67
|
+
}
|
|
68
|
+
export interface ParsedArticle extends HybridObject<{
|
|
69
|
+
ios: 'c++';
|
|
70
|
+
android: 'c++';
|
|
71
|
+
}> {
|
|
72
|
+
readonly length: number;
|
|
73
|
+
getBlock(index: number): ContentBlock | null;
|
|
74
|
+
}
|
|
75
|
+
export interface FastHtmlParser extends HybridObject<{
|
|
76
|
+
ios: 'c++';
|
|
77
|
+
android: 'c++';
|
|
78
|
+
}> {
|
|
79
|
+
parse(html: string): ParsedArticle | null;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=FastHtmlParser.nitro.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FastHtmlParser.nitro.d.ts","sourceRoot":"","sources":["../../../src/FastHtmlParser.nitro.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,YAAY,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,2BAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/parser.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAAwB,CAAC;AAE5D,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAI7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.native.d.ts","sourceRoot":"","sources":["../../../src/parser.native.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,2BAAwB,CAAC;AAK5E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAE5D"}
|
package/nitro.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cxxNamespace": ["fasthtmlparser"],
|
|
3
|
+
"ios": {
|
|
4
|
+
"iosModuleName": "FastHtmlParser"
|
|
5
|
+
},
|
|
6
|
+
"android": {
|
|
7
|
+
"androidNamespace": ["fasthtmlparser"],
|
|
8
|
+
"androidCxxLibName": "fasthtmlparser"
|
|
9
|
+
},
|
|
10
|
+
"autolinking": {
|
|
11
|
+
"FastHtmlParser": {
|
|
12
|
+
"ios": {
|
|
13
|
+
"language": "c++",
|
|
14
|
+
"implementationClassName": "HybridFastHtmlParser"
|
|
15
|
+
},
|
|
16
|
+
"android": {
|
|
17
|
+
"language": "c++",
|
|
18
|
+
"implementationClassName": "HybridFastHtmlParser"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"ignorePaths": ["node_modules"]
|
|
23
|
+
}
|