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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/tree_haver/backend_context.rb +28 -0
  4. data/lib/tree_haver/backend_registry.rb +19 -432
  5. data/lib/tree_haver/contracts.rb +460 -0
  6. data/lib/tree_haver/kaitai_backend.rb +30 -0
  7. data/lib/tree_haver/language_pack.rb +190 -0
  8. data/lib/tree_haver/peg_backends.rb +76 -0
  9. data/lib/tree_haver/version.rb +1 -12
  10. data/lib/tree_haver.rb +7 -1316
  11. data.tar.gz.sig +0 -0
  12. metadata +34 -251
  13. metadata.gz.sig +0 -0
  14. data/CHANGELOG.md +0 -1393
  15. data/CITATION.cff +0 -20
  16. data/CODE_OF_CONDUCT.md +0 -134
  17. data/CONTRIBUTING.md +0 -359
  18. data/FUNDING.md +0 -74
  19. data/LICENSE.txt +0 -21
  20. data/README.md +0 -2320
  21. data/REEK +0 -0
  22. data/RUBOCOP.md +0 -71
  23. data/SECURITY.md +0 -21
  24. data/lib/tree_haver/backend_api.rb +0 -349
  25. data/lib/tree_haver/backends/citrus.rb +0 -487
  26. data/lib/tree_haver/backends/ffi.rb +0 -1009
  27. data/lib/tree_haver/backends/java.rb +0 -893
  28. data/lib/tree_haver/backends/mri.rb +0 -362
  29. data/lib/tree_haver/backends/parslet.rb +0 -560
  30. data/lib/tree_haver/backends/prism.rb +0 -471
  31. data/lib/tree_haver/backends/psych.rb +0 -375
  32. data/lib/tree_haver/backends/rust.rb +0 -239
  33. data/lib/tree_haver/base/language.rb +0 -98
  34. data/lib/tree_haver/base/node.rb +0 -322
  35. data/lib/tree_haver/base/parser.rb +0 -24
  36. data/lib/tree_haver/base/point.rb +0 -48
  37. data/lib/tree_haver/base/tree.rb +0 -128
  38. data/lib/tree_haver/base.rb +0 -12
  39. data/lib/tree_haver/citrus_grammar_finder.rb +0 -218
  40. data/lib/tree_haver/compat.rb +0 -43
  41. data/lib/tree_haver/grammar_finder.rb +0 -374
  42. data/lib/tree_haver/language.rb +0 -295
  43. data/lib/tree_haver/language_registry.rb +0 -190
  44. data/lib/tree_haver/library_path_utils.rb +0 -80
  45. data/lib/tree_haver/node.rb +0 -579
  46. data/lib/tree_haver/parser.rb +0 -438
  47. data/lib/tree_haver/parslet_grammar_finder.rb +0 -224
  48. data/lib/tree_haver/path_validator.rb +0 -353
  49. data/lib/tree_haver/point.rb +0 -27
  50. data/lib/tree_haver/rspec/dependency_tags.rb +0 -1392
  51. data/lib/tree_haver/rspec/testable_node.rb +0 -217
  52. data/lib/tree_haver/rspec.rb +0 -33
  53. data/lib/tree_haver/tree.rb +0 -258
  54. data/sig/tree_haver/backends.rbs +0 -352
  55. data/sig/tree_haver/grammar_finder.rbs +0 -29
  56. data/sig/tree_haver/path_validator.rbs +0 -32
  57. 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
@@ -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
- # Current version of the tree_haver gem
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