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.
Files changed (69) hide show
  1. package/FastHtmlParser.podspec +36 -0
  2. package/LICENSE +20 -0
  3. package/README.md +435 -0
  4. package/android/CMakeLists.txt +31 -0
  5. package/android/build.gradle +121 -0
  6. package/android/src/main/AndroidManifest.xml +2 -0
  7. package/android/src/main/cpp/cpp-adapter.cpp +11 -0
  8. package/android/src/main/java/com/margelo/nitro/fasthtmlparser/FastHtmlParserPackage.kt +22 -0
  9. package/android/src/main/jniLibs/arm64-v8a/libhtml_2_json.so +0 -0
  10. package/android/src/main/jniLibs/armeabi-v7a/libhtml_2_json.so +0 -0
  11. package/android/src/main/jniLibs/x86/libhtml_2_json.so +0 -0
  12. package/android/src/main/jniLibs/x86_64/libhtml_2_json.so +0 -0
  13. package/cpp/HybridFastHtmlParser.cpp +178 -0
  14. package/cpp/HybridFastHtmlParser.hpp +224 -0
  15. package/ios/libs/libhtml_2_json.xcframework/Info.plist +44 -0
  16. package/ios/libs/libhtml_2_json.xcframework/ios-arm64/libhtml_2_json.a +0 -0
  17. package/ios/libs/libhtml_2_json.xcframework/ios-arm64_x86_64-simulator/libhtml_2_json.a +0 -0
  18. package/lib/module/FastHtmlParser.nitro.js +4 -0
  19. package/lib/module/FastHtmlParser.nitro.js.map +1 -0
  20. package/lib/module/index.js +4 -0
  21. package/lib/module/index.js.map +1 -0
  22. package/lib/module/package.json +1 -0
  23. package/lib/module/parser.js +6 -0
  24. package/lib/module/parser.js.map +1 -0
  25. package/lib/module/parser.native.js +8 -0
  26. package/lib/module/parser.native.js.map +1 -0
  27. package/lib/typescript/package.json +1 -0
  28. package/lib/typescript/src/FastHtmlParser.nitro.d.ts +81 -0
  29. package/lib/typescript/src/FastHtmlParser.nitro.d.ts.map +1 -0
  30. package/lib/typescript/src/index.d.ts +3 -0
  31. package/lib/typescript/src/index.d.ts.map +1 -0
  32. package/lib/typescript/src/parser.d.ts +3 -0
  33. package/lib/typescript/src/parser.d.ts.map +1 -0
  34. package/lib/typescript/src/parser.native.d.ts +3 -0
  35. package/lib/typescript/src/parser.native.d.ts.map +1 -0
  36. package/nitro.json +23 -0
  37. package/nitrogen/generated/android/fasthtmlparser+autolinking.cmake +88 -0
  38. package/nitrogen/generated/android/fasthtmlparser+autolinking.gradle +27 -0
  39. package/nitrogen/generated/android/fasthtmlparserOnLoad.cpp +49 -0
  40. package/nitrogen/generated/android/fasthtmlparserOnLoad.hpp +34 -0
  41. package/nitrogen/generated/android/kotlin/com/margelo/nitro/fasthtmlparser/fasthtmlparserOnLoad.kt +35 -0
  42. package/nitrogen/generated/ios/FastHtmlParser+autolinking.rb +62 -0
  43. package/nitrogen/generated/ios/FastHtmlParser-Swift-Cxx-Bridge.cpp +17 -0
  44. package/nitrogen/generated/ios/FastHtmlParser-Swift-Cxx-Bridge.hpp +27 -0
  45. package/nitrogen/generated/ios/FastHtmlParser-Swift-Cxx-Umbrella.hpp +38 -0
  46. package/nitrogen/generated/ios/FastHtmlParserAutolinking.mm +35 -0
  47. package/nitrogen/generated/ios/FastHtmlParserAutolinking.swift +16 -0
  48. package/nitrogen/generated/shared/c++/HybridContentBlockSpec.cpp +39 -0
  49. package/nitrogen/generated/shared/c++/HybridContentBlockSpec.hpp +96 -0
  50. package/nitrogen/generated/shared/c++/HybridDefinitionItemSpec.cpp +24 -0
  51. package/nitrogen/generated/shared/c++/HybridDefinitionItemSpec.hpp +68 -0
  52. package/nitrogen/generated/shared/c++/HybridFastHtmlParserSpec.cpp +21 -0
  53. package/nitrogen/generated/shared/c++/HybridFastHtmlParserSpec.hpp +67 -0
  54. package/nitrogen/generated/shared/c++/HybridInlineNodeSpec.cpp +25 -0
  55. package/nitrogen/generated/shared/c++/HybridInlineNodeSpec.hpp +70 -0
  56. package/nitrogen/generated/shared/c++/HybridListItemSpec.cpp +24 -0
  57. package/nitrogen/generated/shared/c++/HybridListItemSpec.hpp +71 -0
  58. package/nitrogen/generated/shared/c++/HybridParsedArticleSpec.cpp +22 -0
  59. package/nitrogen/generated/shared/c++/HybridParsedArticleSpec.hpp +66 -0
  60. package/nitrogen/generated/shared/c++/HybridTableCellSpec.cpp +22 -0
  61. package/nitrogen/generated/shared/c++/HybridTableCellSpec.hpp +66 -0
  62. package/nitrogen/generated/shared/c++/HybridTableRowSpec.cpp +22 -0
  63. package/nitrogen/generated/shared/c++/HybridTableRowSpec.hpp +66 -0
  64. package/package.json +153 -0
  65. package/scripts/postinstall.js +234 -0
  66. package/src/FastHtmlParser.nitro.ts +86 -0
  67. package/src/index.tsx +12 -0
  68. package/src/parser.native.tsx +9 -0
  69. package/src/parser.tsx +7 -0
@@ -0,0 +1,21 @@
1
+ ///
2
+ /// HybridFastHtmlParserSpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridFastHtmlParserSpec.hpp"
9
+
10
+ namespace margelo::nitro::fasthtmlparser {
11
+
12
+ void HybridFastHtmlParserSpec::loadHybridMethods() {
13
+ // load base methods/properties
14
+ HybridObject::loadHybridMethods();
15
+ // load custom methods/properties
16
+ registerHybrids(this, [](Prototype& prototype) {
17
+ prototype.registerHybridMethod("parse", &HybridFastHtmlParserSpec::parse);
18
+ });
19
+ }
20
+
21
+ } // namespace margelo::nitro::fasthtmlparser
@@ -0,0 +1,67 @@
1
+ ///
2
+ /// HybridFastHtmlParserSpec.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/HybridObject.hpp>)
11
+ #include <NitroModules/HybridObject.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+
16
+ // Forward declaration of `HybridParsedArticleSpec` to properly resolve imports.
17
+ namespace margelo::nitro::fasthtmlparser { class HybridParsedArticleSpec; }
18
+
19
+ #include <memory>
20
+ #include "HybridParsedArticleSpec.hpp"
21
+ #include <NitroModules/Null.hpp>
22
+ #include <variant>
23
+ #include <string>
24
+
25
+ namespace margelo::nitro::fasthtmlparser {
26
+
27
+ using namespace margelo::nitro;
28
+
29
+ /**
30
+ * An abstract base class for `FastHtmlParser`
31
+ * Inherit this class to create instances of `HybridFastHtmlParserSpec` in C++.
32
+ * You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
33
+ * @example
34
+ * ```cpp
35
+ * class HybridFastHtmlParser: public HybridFastHtmlParserSpec {
36
+ * public:
37
+ * HybridFastHtmlParser(...): HybridObject(TAG) { ... }
38
+ * // ...
39
+ * };
40
+ * ```
41
+ */
42
+ class HybridFastHtmlParserSpec: public virtual HybridObject {
43
+ public:
44
+ // Constructor
45
+ explicit HybridFastHtmlParserSpec(): HybridObject(TAG) { }
46
+
47
+ // Destructor
48
+ ~HybridFastHtmlParserSpec() override = default;
49
+
50
+ public:
51
+ // Properties
52
+
53
+
54
+ public:
55
+ // Methods
56
+ virtual std::variant<std::shared_ptr<HybridParsedArticleSpec>, nitro::NullType> parse(const std::string& html) = 0;
57
+
58
+ protected:
59
+ // Hybrid Setup
60
+ void loadHybridMethods() override;
61
+
62
+ protected:
63
+ // Tag for logging
64
+ static constexpr auto TAG = "FastHtmlParser";
65
+ };
66
+
67
+ } // namespace margelo::nitro::fasthtmlparser
@@ -0,0 +1,25 @@
1
+ ///
2
+ /// HybridInlineNodeSpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridInlineNodeSpec.hpp"
9
+
10
+ namespace margelo::nitro::fasthtmlparser {
11
+
12
+ void HybridInlineNodeSpec::loadHybridMethods() {
13
+ // load base methods/properties
14
+ HybridObject::loadHybridMethods();
15
+ // load custom methods/properties
16
+ registerHybrids(this, [](Prototype& prototype) {
17
+ prototype.registerHybridGetter("type", &HybridInlineNodeSpec::getType);
18
+ prototype.registerHybridGetter("text", &HybridInlineNodeSpec::getText);
19
+ prototype.registerHybridGetter("url", &HybridInlineNodeSpec::getUrl);
20
+ prototype.registerHybridGetter("childCount", &HybridInlineNodeSpec::getChildCount);
21
+ prototype.registerHybridMethod("getChild", &HybridInlineNodeSpec::getChild);
22
+ });
23
+ }
24
+
25
+ } // namespace margelo::nitro::fasthtmlparser
@@ -0,0 +1,70 @@
1
+ ///
2
+ /// HybridInlineNodeSpec.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/HybridObject.hpp>)
11
+ #include <NitroModules/HybridObject.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+
16
+ // Forward declaration of `HybridInlineNodeSpec` to properly resolve imports.
17
+ namespace margelo::nitro::fasthtmlparser { class HybridInlineNodeSpec; }
18
+
19
+ #include <string>
20
+ #include <memory>
21
+ #include "HybridInlineNodeSpec.hpp"
22
+ #include <NitroModules/Null.hpp>
23
+ #include <variant>
24
+
25
+ namespace margelo::nitro::fasthtmlparser {
26
+
27
+ using namespace margelo::nitro;
28
+
29
+ /**
30
+ * An abstract base class for `InlineNode`
31
+ * Inherit this class to create instances of `HybridInlineNodeSpec` in C++.
32
+ * You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
33
+ * @example
34
+ * ```cpp
35
+ * class HybridInlineNode: public HybridInlineNodeSpec {
36
+ * public:
37
+ * HybridInlineNode(...): HybridObject(TAG) { ... }
38
+ * // ...
39
+ * };
40
+ * ```
41
+ */
42
+ class HybridInlineNodeSpec: public virtual HybridObject {
43
+ public:
44
+ // Constructor
45
+ explicit HybridInlineNodeSpec(): HybridObject(TAG) { }
46
+
47
+ // Destructor
48
+ ~HybridInlineNodeSpec() override = default;
49
+
50
+ public:
51
+ // Properties
52
+ virtual std::string getType() = 0;
53
+ virtual std::string getText() = 0;
54
+ virtual std::string getUrl() = 0;
55
+ virtual double getChildCount() = 0;
56
+
57
+ public:
58
+ // Methods
59
+ virtual std::variant<std::shared_ptr<HybridInlineNodeSpec>, nitro::NullType> getChild(double index) = 0;
60
+
61
+ protected:
62
+ // Hybrid Setup
63
+ void loadHybridMethods() override;
64
+
65
+ protected:
66
+ // Tag for logging
67
+ static constexpr auto TAG = "InlineNode";
68
+ };
69
+
70
+ } // namespace margelo::nitro::fasthtmlparser
@@ -0,0 +1,24 @@
1
+ ///
2
+ /// HybridListItemSpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridListItemSpec.hpp"
9
+
10
+ namespace margelo::nitro::fasthtmlparser {
11
+
12
+ void HybridListItemSpec::loadHybridMethods() {
13
+ // load base methods/properties
14
+ HybridObject::loadHybridMethods();
15
+ // load custom methods/properties
16
+ registerHybrids(this, [](Prototype& prototype) {
17
+ prototype.registerHybridGetter("childCount", &HybridListItemSpec::getChildCount);
18
+ prototype.registerHybridGetter("nestedCount", &HybridListItemSpec::getNestedCount);
19
+ prototype.registerHybridMethod("getChild", &HybridListItemSpec::getChild);
20
+ prototype.registerHybridMethod("getNested", &HybridListItemSpec::getNested);
21
+ });
22
+ }
23
+
24
+ } // namespace margelo::nitro::fasthtmlparser
@@ -0,0 +1,71 @@
1
+ ///
2
+ /// HybridListItemSpec.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/HybridObject.hpp>)
11
+ #include <NitroModules/HybridObject.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+
16
+ // Forward declaration of `HybridInlineNodeSpec` to properly resolve imports.
17
+ namespace margelo::nitro::fasthtmlparser { class HybridInlineNodeSpec; }
18
+ // Forward declaration of `HybridContentBlockSpec` to properly resolve imports.
19
+ namespace margelo::nitro::fasthtmlparser { class HybridContentBlockSpec; }
20
+
21
+ #include <memory>
22
+ #include "HybridInlineNodeSpec.hpp"
23
+ #include <NitroModules/Null.hpp>
24
+ #include <variant>
25
+ #include "HybridContentBlockSpec.hpp"
26
+
27
+ namespace margelo::nitro::fasthtmlparser {
28
+
29
+ using namespace margelo::nitro;
30
+
31
+ /**
32
+ * An abstract base class for `ListItem`
33
+ * Inherit this class to create instances of `HybridListItemSpec` in C++.
34
+ * You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
35
+ * @example
36
+ * ```cpp
37
+ * class HybridListItem: public HybridListItemSpec {
38
+ * public:
39
+ * HybridListItem(...): HybridObject(TAG) { ... }
40
+ * // ...
41
+ * };
42
+ * ```
43
+ */
44
+ class HybridListItemSpec: public virtual HybridObject {
45
+ public:
46
+ // Constructor
47
+ explicit HybridListItemSpec(): HybridObject(TAG) { }
48
+
49
+ // Destructor
50
+ ~HybridListItemSpec() override = default;
51
+
52
+ public:
53
+ // Properties
54
+ virtual double getChildCount() = 0;
55
+ virtual double getNestedCount() = 0;
56
+
57
+ public:
58
+ // Methods
59
+ virtual std::variant<std::shared_ptr<HybridInlineNodeSpec>, nitro::NullType> getChild(double index) = 0;
60
+ virtual std::variant<std::shared_ptr<HybridContentBlockSpec>, nitro::NullType> getNested(double index) = 0;
61
+
62
+ protected:
63
+ // Hybrid Setup
64
+ void loadHybridMethods() override;
65
+
66
+ protected:
67
+ // Tag for logging
68
+ static constexpr auto TAG = "ListItem";
69
+ };
70
+
71
+ } // namespace margelo::nitro::fasthtmlparser
@@ -0,0 +1,22 @@
1
+ ///
2
+ /// HybridParsedArticleSpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridParsedArticleSpec.hpp"
9
+
10
+ namespace margelo::nitro::fasthtmlparser {
11
+
12
+ void HybridParsedArticleSpec::loadHybridMethods() {
13
+ // load base methods/properties
14
+ HybridObject::loadHybridMethods();
15
+ // load custom methods/properties
16
+ registerHybrids(this, [](Prototype& prototype) {
17
+ prototype.registerHybridGetter("length", &HybridParsedArticleSpec::getLength);
18
+ prototype.registerHybridMethod("getBlock", &HybridParsedArticleSpec::getBlock);
19
+ });
20
+ }
21
+
22
+ } // namespace margelo::nitro::fasthtmlparser
@@ -0,0 +1,66 @@
1
+ ///
2
+ /// HybridParsedArticleSpec.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/HybridObject.hpp>)
11
+ #include <NitroModules/HybridObject.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+
16
+ // Forward declaration of `HybridContentBlockSpec` to properly resolve imports.
17
+ namespace margelo::nitro::fasthtmlparser { class HybridContentBlockSpec; }
18
+
19
+ #include <memory>
20
+ #include "HybridContentBlockSpec.hpp"
21
+ #include <NitroModules/Null.hpp>
22
+ #include <variant>
23
+
24
+ namespace margelo::nitro::fasthtmlparser {
25
+
26
+ using namespace margelo::nitro;
27
+
28
+ /**
29
+ * An abstract base class for `ParsedArticle`
30
+ * Inherit this class to create instances of `HybridParsedArticleSpec` in C++.
31
+ * You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
32
+ * @example
33
+ * ```cpp
34
+ * class HybridParsedArticle: public HybridParsedArticleSpec {
35
+ * public:
36
+ * HybridParsedArticle(...): HybridObject(TAG) { ... }
37
+ * // ...
38
+ * };
39
+ * ```
40
+ */
41
+ class HybridParsedArticleSpec: public virtual HybridObject {
42
+ public:
43
+ // Constructor
44
+ explicit HybridParsedArticleSpec(): HybridObject(TAG) { }
45
+
46
+ // Destructor
47
+ ~HybridParsedArticleSpec() override = default;
48
+
49
+ public:
50
+ // Properties
51
+ virtual double getLength() = 0;
52
+
53
+ public:
54
+ // Methods
55
+ virtual std::variant<std::shared_ptr<HybridContentBlockSpec>, nitro::NullType> getBlock(double index) = 0;
56
+
57
+ protected:
58
+ // Hybrid Setup
59
+ void loadHybridMethods() override;
60
+
61
+ protected:
62
+ // Tag for logging
63
+ static constexpr auto TAG = "ParsedArticle";
64
+ };
65
+
66
+ } // namespace margelo::nitro::fasthtmlparser
@@ -0,0 +1,22 @@
1
+ ///
2
+ /// HybridTableCellSpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridTableCellSpec.hpp"
9
+
10
+ namespace margelo::nitro::fasthtmlparser {
11
+
12
+ void HybridTableCellSpec::loadHybridMethods() {
13
+ // load base methods/properties
14
+ HybridObject::loadHybridMethods();
15
+ // load custom methods/properties
16
+ registerHybrids(this, [](Prototype& prototype) {
17
+ prototype.registerHybridGetter("childCount", &HybridTableCellSpec::getChildCount);
18
+ prototype.registerHybridMethod("getChild", &HybridTableCellSpec::getChild);
19
+ });
20
+ }
21
+
22
+ } // namespace margelo::nitro::fasthtmlparser
@@ -0,0 +1,66 @@
1
+ ///
2
+ /// HybridTableCellSpec.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/HybridObject.hpp>)
11
+ #include <NitroModules/HybridObject.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+
16
+ // Forward declaration of `HybridInlineNodeSpec` to properly resolve imports.
17
+ namespace margelo::nitro::fasthtmlparser { class HybridInlineNodeSpec; }
18
+
19
+ #include <memory>
20
+ #include "HybridInlineNodeSpec.hpp"
21
+ #include <NitroModules/Null.hpp>
22
+ #include <variant>
23
+
24
+ namespace margelo::nitro::fasthtmlparser {
25
+
26
+ using namespace margelo::nitro;
27
+
28
+ /**
29
+ * An abstract base class for `TableCell`
30
+ * Inherit this class to create instances of `HybridTableCellSpec` in C++.
31
+ * You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
32
+ * @example
33
+ * ```cpp
34
+ * class HybridTableCell: public HybridTableCellSpec {
35
+ * public:
36
+ * HybridTableCell(...): HybridObject(TAG) { ... }
37
+ * // ...
38
+ * };
39
+ * ```
40
+ */
41
+ class HybridTableCellSpec: public virtual HybridObject {
42
+ public:
43
+ // Constructor
44
+ explicit HybridTableCellSpec(): HybridObject(TAG) { }
45
+
46
+ // Destructor
47
+ ~HybridTableCellSpec() override = default;
48
+
49
+ public:
50
+ // Properties
51
+ virtual double getChildCount() = 0;
52
+
53
+ public:
54
+ // Methods
55
+ virtual std::variant<std::shared_ptr<HybridInlineNodeSpec>, nitro::NullType> getChild(double index) = 0;
56
+
57
+ protected:
58
+ // Hybrid Setup
59
+ void loadHybridMethods() override;
60
+
61
+ protected:
62
+ // Tag for logging
63
+ static constexpr auto TAG = "TableCell";
64
+ };
65
+
66
+ } // namespace margelo::nitro::fasthtmlparser
@@ -0,0 +1,22 @@
1
+ ///
2
+ /// HybridTableRowSpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridTableRowSpec.hpp"
9
+
10
+ namespace margelo::nitro::fasthtmlparser {
11
+
12
+ void HybridTableRowSpec::loadHybridMethods() {
13
+ // load base methods/properties
14
+ HybridObject::loadHybridMethods();
15
+ // load custom methods/properties
16
+ registerHybrids(this, [](Prototype& prototype) {
17
+ prototype.registerHybridGetter("cellCount", &HybridTableRowSpec::getCellCount);
18
+ prototype.registerHybridMethod("getCell", &HybridTableRowSpec::getCell);
19
+ });
20
+ }
21
+
22
+ } // namespace margelo::nitro::fasthtmlparser
@@ -0,0 +1,66 @@
1
+ ///
2
+ /// HybridTableRowSpec.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/HybridObject.hpp>)
11
+ #include <NitroModules/HybridObject.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+
16
+ // Forward declaration of `HybridTableCellSpec` to properly resolve imports.
17
+ namespace margelo::nitro::fasthtmlparser { class HybridTableCellSpec; }
18
+
19
+ #include <memory>
20
+ #include "HybridTableCellSpec.hpp"
21
+ #include <NitroModules/Null.hpp>
22
+ #include <variant>
23
+
24
+ namespace margelo::nitro::fasthtmlparser {
25
+
26
+ using namespace margelo::nitro;
27
+
28
+ /**
29
+ * An abstract base class for `TableRow`
30
+ * Inherit this class to create instances of `HybridTableRowSpec` in C++.
31
+ * You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
32
+ * @example
33
+ * ```cpp
34
+ * class HybridTableRow: public HybridTableRowSpec {
35
+ * public:
36
+ * HybridTableRow(...): HybridObject(TAG) { ... }
37
+ * // ...
38
+ * };
39
+ * ```
40
+ */
41
+ class HybridTableRowSpec: public virtual HybridObject {
42
+ public:
43
+ // Constructor
44
+ explicit HybridTableRowSpec(): HybridObject(TAG) { }
45
+
46
+ // Destructor
47
+ ~HybridTableRowSpec() override = default;
48
+
49
+ public:
50
+ // Properties
51
+ virtual double getCellCount() = 0;
52
+
53
+ public:
54
+ // Methods
55
+ virtual std::variant<std::shared_ptr<HybridTableCellSpec>, nitro::NullType> getCell(double index) = 0;
56
+
57
+ protected:
58
+ // Hybrid Setup
59
+ void loadHybridMethods() override;
60
+
61
+ protected:
62
+ // Tag for logging
63
+ static constexpr auto TAG = "TableRow";
64
+ };
65
+
66
+ } // namespace margelo::nitro::fasthtmlparser