tree_haver 5.0.5 → 7.0.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/tree_haver/backend_context.rb +28 -0
- data/lib/tree_haver/backend_registry.rb +19 -432
- data/lib/tree_haver/contracts.rb +460 -0
- data/lib/tree_haver/kaitai_backend.rb +30 -0
- data/lib/tree_haver/language_pack.rb +190 -0
- data/lib/tree_haver/peg_backends.rb +76 -0
- data/lib/tree_haver/version.rb +1 -12
- data/lib/tree_haver.rb +7 -1316
- data.tar.gz.sig +0 -0
- metadata +34 -251
- metadata.gz.sig +0 -0
- data/CHANGELOG.md +0 -1393
- data/CITATION.cff +0 -20
- data/CODE_OF_CONDUCT.md +0 -134
- data/CONTRIBUTING.md +0 -359
- data/FUNDING.md +0 -74
- data/LICENSE.txt +0 -21
- data/README.md +0 -2320
- data/REEK +0 -0
- data/RUBOCOP.md +0 -71
- data/SECURITY.md +0 -21
- data/lib/tree_haver/backend_api.rb +0 -349
- data/lib/tree_haver/backends/citrus.rb +0 -487
- data/lib/tree_haver/backends/ffi.rb +0 -1009
- data/lib/tree_haver/backends/java.rb +0 -893
- data/lib/tree_haver/backends/mri.rb +0 -362
- data/lib/tree_haver/backends/parslet.rb +0 -560
- data/lib/tree_haver/backends/prism.rb +0 -471
- data/lib/tree_haver/backends/psych.rb +0 -375
- data/lib/tree_haver/backends/rust.rb +0 -239
- data/lib/tree_haver/base/language.rb +0 -98
- data/lib/tree_haver/base/node.rb +0 -322
- data/lib/tree_haver/base/parser.rb +0 -24
- data/lib/tree_haver/base/point.rb +0 -48
- data/lib/tree_haver/base/tree.rb +0 -128
- data/lib/tree_haver/base.rb +0 -12
- data/lib/tree_haver/citrus_grammar_finder.rb +0 -218
- data/lib/tree_haver/compat.rb +0 -43
- data/lib/tree_haver/grammar_finder.rb +0 -374
- data/lib/tree_haver/language.rb +0 -295
- data/lib/tree_haver/language_registry.rb +0 -190
- data/lib/tree_haver/library_path_utils.rb +0 -80
- data/lib/tree_haver/node.rb +0 -579
- data/lib/tree_haver/parser.rb +0 -438
- data/lib/tree_haver/parslet_grammar_finder.rb +0 -224
- data/lib/tree_haver/path_validator.rb +0 -353
- data/lib/tree_haver/point.rb +0 -27
- data/lib/tree_haver/rspec/dependency_tags.rb +0 -1392
- data/lib/tree_haver/rspec/testable_node.rb +0 -217
- data/lib/tree_haver/rspec.rb +0 -33
- data/lib/tree_haver/tree.rb +0 -258
- data/sig/tree_haver/backends.rbs +0 -352
- data/sig/tree_haver/grammar_finder.rbs +0 -29
- data/sig/tree_haver/path_validator.rbs +0 -32
- data/sig/tree_haver.rbs +0 -234
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module TreeHaver
|
|
4
|
+
CITRUS_BACKEND = BackendReference.new(
|
|
5
|
+
id: "citrus",
|
|
6
|
+
family: "peg"
|
|
7
|
+
).freeze
|
|
8
|
+
|
|
9
|
+
PARSLET_BACKEND = BackendReference.new(
|
|
10
|
+
id: "parslet",
|
|
11
|
+
family: "peg"
|
|
12
|
+
).freeze
|
|
13
|
+
|
|
14
|
+
BackendRegistry.register(CITRUS_BACKEND)
|
|
15
|
+
BackendRegistry.register(PARSLET_BACKEND)
|
|
16
|
+
|
|
17
|
+
module_function
|
|
18
|
+
|
|
19
|
+
def peg_adapter_info(backend_ref)
|
|
20
|
+
AdapterInfo.new(
|
|
21
|
+
backend: backend_ref.id,
|
|
22
|
+
backend_ref: backend_ref,
|
|
23
|
+
supports_dialects: false,
|
|
24
|
+
supported_policies: []
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def peg_feature_profile(backend_ref)
|
|
29
|
+
FeatureProfile.new(
|
|
30
|
+
backend: backend_ref.id,
|
|
31
|
+
backend_ref: backend_ref,
|
|
32
|
+
supports_dialects: false,
|
|
33
|
+
supported_policies: []
|
|
34
|
+
)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def parse_with_citrus(source, grammar_module:)
|
|
38
|
+
raw = grammar_module.parse(source)
|
|
39
|
+
if raw&.respond_to?(:captures)
|
|
40
|
+
{
|
|
41
|
+
ok: true,
|
|
42
|
+
backend_ref: CITRUS_BACKEND,
|
|
43
|
+
raw: raw,
|
|
44
|
+
diagnostics: []
|
|
45
|
+
}
|
|
46
|
+
else
|
|
47
|
+
{
|
|
48
|
+
ok: false,
|
|
49
|
+
backend_ref: CITRUS_BACKEND,
|
|
50
|
+
diagnostics: [{ severity: "error", category: "parse_error", message: "Citrus parse failed." }]
|
|
51
|
+
}
|
|
52
|
+
end
|
|
53
|
+
rescue StandardError => e
|
|
54
|
+
{
|
|
55
|
+
ok: false,
|
|
56
|
+
backend_ref: CITRUS_BACKEND,
|
|
57
|
+
diagnostics: [{ severity: "error", category: "parse_error", message: e.message }]
|
|
58
|
+
}
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def parse_with_parslet(source, grammar_class:)
|
|
62
|
+
raw = grammar_class.new.parse(source)
|
|
63
|
+
{
|
|
64
|
+
ok: true,
|
|
65
|
+
backend_ref: PARSLET_BACKEND,
|
|
66
|
+
raw: raw,
|
|
67
|
+
diagnostics: []
|
|
68
|
+
}
|
|
69
|
+
rescue StandardError => e
|
|
70
|
+
{
|
|
71
|
+
ok: false,
|
|
72
|
+
backend_ref: PARSLET_BACKEND,
|
|
73
|
+
diagnostics: [{ severity: "error", category: "parse_error", message: e.message }]
|
|
74
|
+
}
|
|
75
|
+
end
|
|
76
|
+
end
|
data/lib/tree_haver/version.rb
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module TreeHaver
|
|
4
|
-
# Version information for TreeHaver
|
|
5
|
-
#
|
|
6
|
-
# This module contains version constants following Semantic Versioning 2.0.0.
|
|
7
|
-
#
|
|
8
|
-
# @see https://semver.org/ Semantic Versioning
|
|
9
4
|
module Version
|
|
10
|
-
|
|
11
|
-
#
|
|
12
|
-
# @return [String] the version string
|
|
13
|
-
VERSION = "5.0.5"
|
|
5
|
+
VERSION = "7.0.0"
|
|
14
6
|
end
|
|
15
7
|
|
|
16
|
-
# Traditional location for VERSION constant
|
|
17
|
-
#
|
|
18
|
-
# @return [String] the version string
|
|
19
8
|
VERSION = Version::VERSION
|
|
20
9
|
end
|