wood 0.1.1

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 (66) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +8 -0
  3. data/LICENSE +19 -0
  4. data/README.md +21 -0
  5. data/Rakefile +55 -0
  6. data/examples/binary_ops.rb +138 -0
  7. data/examples/node_finder.rb +96 -0
  8. data/examples/visitors.rb +105 -0
  9. data/lib/core_ext.rb +4 -0
  10. data/lib/core_ext/class.rb +13 -0
  11. data/lib/core_ext/enumerable.rb +47 -0
  12. data/lib/core_ext/kernel.rb +16 -0
  13. data/lib/core_ext/string.rb +32 -0
  14. data/lib/wood.rb +13 -0
  15. data/lib/wood/indented_printer.rb +48 -0
  16. data/lib/wood/node.rb +259 -0
  17. data/lib/wood/node_rewriter.rb +29 -0
  18. data/lib/wood/node_visitor.rb +60 -0
  19. data/lib/wood/nodes.rb +22 -0
  20. data/lib/wood/nodes/assignment.rb +34 -0
  21. data/lib/wood/nodes/break.rb +4 -0
  22. data/lib/wood/nodes/code_block.rb +44 -0
  23. data/lib/wood/nodes/continue.rb +4 -0
  24. data/lib/wood/nodes/for_loop.rb +11 -0
  25. data/lib/wood/nodes/function.rb +45 -0
  26. data/lib/wood/nodes/if_else.rb +6 -0
  27. data/lib/wood/nodes/literals.rb +68 -0
  28. data/lib/wood/nodes/nested_node.rb +5 -0
  29. data/lib/wood/nodes/no_op.rb +7 -0
  30. data/lib/wood/nodes/null.rb +4 -0
  31. data/lib/wood/nodes/operator.rb +28 -0
  32. data/lib/wood/nodes/return.rb +15 -0
  33. data/lib/wood/nodes/switch.rb +13 -0
  34. data/lib/wood/nodes/variable.rb +24 -0
  35. data/lib/wood/nodes/while_loop.rb +10 -0
  36. data/lib/wood/tree_pattern.rb +14 -0
  37. data/lib/wood/tree_pattern/any_matcher.rb +20 -0
  38. data/lib/wood/tree_pattern/matcher.rb +40 -0
  39. data/lib/wood/tree_pattern/node_finder.rb +164 -0
  40. data/lib/wood/tree_pattern/or_matcher.rb +33 -0
  41. data/lib/wood/tree_pattern/pattern_builder.rb +57 -0
  42. data/lib/wood/tree_pattern/pattern_callback.rb +5 -0
  43. data/lib/wood/tree_pattern/replacement_builder.rb +27 -0
  44. data/lib/wood/tree_pattern/type_matcher.rb +59 -0
  45. data/lib/wood/tree_pattern/variable_matcher.rb +31 -0
  46. data/lib/wood/tree_rewriter.rb +67 -0
  47. data/lib/wood/types.rb +318 -0
  48. data/lib/wood/version.rb +3 -0
  49. data/spec/core_ext/enumerable_spec.rb +34 -0
  50. data/spec/core_ext/string_spec.rb +25 -0
  51. data/spec/spec_cov.rb +2 -0
  52. data/spec/spec_helper.rb +3 -0
  53. data/spec/wood/indented_printer_spec.rb +61 -0
  54. data/spec/wood/node_spec.rb +258 -0
  55. data/spec/wood/node_visitor_spec.rb +43 -0
  56. data/spec/wood/nodes/code_block_spec.rb +32 -0
  57. data/spec/wood/nodes/no_op_spec.rb +5 -0
  58. data/spec/wood/nodes/operator_spec.rb +31 -0
  59. data/spec/wood/tree_pattern/any_matcher_spec.rb +32 -0
  60. data/spec/wood/tree_pattern/matcher_spec.rb +316 -0
  61. data/spec/wood/tree_pattern/node_finder_spec.rb +104 -0
  62. data/spec/wood/tree_pattern/or_matcher_spec.rb +43 -0
  63. data/spec/wood/tree_pattern/type_matcher_spec.rb +69 -0
  64. data/spec/wood/tree_pattern/variable_matcher_spec.rb +37 -0
  65. data/spec/wood/tree_rewriter_spec.rb +351 -0
  66. metadata +114 -0
metadata ADDED
@@ -0,0 +1,114 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wood
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Christopher Bertels
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-09-23 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |
14
+ Wood is a library for creating, manipulating and rewriting trees,
15
+ in particular Abstract Syntax Trees (ASTs).
16
+
17
+ It provides an easy to use DSL for searching and rewriting whole sub-trees
18
+ in place, which can be used for things like translating a parse tree into a
19
+ target language tree, doing type analysis, writing compiler optimization passes
20
+ and more.
21
+ email: chris@fancy-lang.org
22
+ executables: []
23
+ extensions: []
24
+ extra_rdoc_files: []
25
+ files:
26
+ - Gemfile
27
+ - LICENSE
28
+ - README.md
29
+ - Rakefile
30
+ - examples/binary_ops.rb
31
+ - examples/node_finder.rb
32
+ - examples/visitors.rb
33
+ - lib/core_ext.rb
34
+ - lib/core_ext/class.rb
35
+ - lib/core_ext/enumerable.rb
36
+ - lib/core_ext/kernel.rb
37
+ - lib/core_ext/string.rb
38
+ - lib/wood.rb
39
+ - lib/wood/indented_printer.rb
40
+ - lib/wood/node.rb
41
+ - lib/wood/node_rewriter.rb
42
+ - lib/wood/node_visitor.rb
43
+ - lib/wood/nodes.rb
44
+ - lib/wood/nodes/assignment.rb
45
+ - lib/wood/nodes/break.rb
46
+ - lib/wood/nodes/code_block.rb
47
+ - lib/wood/nodes/continue.rb
48
+ - lib/wood/nodes/for_loop.rb
49
+ - lib/wood/nodes/function.rb
50
+ - lib/wood/nodes/if_else.rb
51
+ - lib/wood/nodes/literals.rb
52
+ - lib/wood/nodes/nested_node.rb
53
+ - lib/wood/nodes/no_op.rb
54
+ - lib/wood/nodes/null.rb
55
+ - lib/wood/nodes/operator.rb
56
+ - lib/wood/nodes/return.rb
57
+ - lib/wood/nodes/switch.rb
58
+ - lib/wood/nodes/variable.rb
59
+ - lib/wood/nodes/while_loop.rb
60
+ - lib/wood/tree_pattern.rb
61
+ - lib/wood/tree_pattern/any_matcher.rb
62
+ - lib/wood/tree_pattern/matcher.rb
63
+ - lib/wood/tree_pattern/node_finder.rb
64
+ - lib/wood/tree_pattern/or_matcher.rb
65
+ - lib/wood/tree_pattern/pattern_builder.rb
66
+ - lib/wood/tree_pattern/pattern_callback.rb
67
+ - lib/wood/tree_pattern/replacement_builder.rb
68
+ - lib/wood/tree_pattern/type_matcher.rb
69
+ - lib/wood/tree_pattern/variable_matcher.rb
70
+ - lib/wood/tree_rewriter.rb
71
+ - lib/wood/types.rb
72
+ - lib/wood/version.rb
73
+ - spec/core_ext/enumerable_spec.rb
74
+ - spec/core_ext/string_spec.rb
75
+ - spec/spec_cov.rb
76
+ - spec/spec_helper.rb
77
+ - spec/wood/indented_printer_spec.rb
78
+ - spec/wood/node_spec.rb
79
+ - spec/wood/node_visitor_spec.rb
80
+ - spec/wood/nodes/code_block_spec.rb
81
+ - spec/wood/nodes/no_op_spec.rb
82
+ - spec/wood/nodes/operator_spec.rb
83
+ - spec/wood/tree_pattern/any_matcher_spec.rb
84
+ - spec/wood/tree_pattern/matcher_spec.rb
85
+ - spec/wood/tree_pattern/node_finder_spec.rb
86
+ - spec/wood/tree_pattern/or_matcher_spec.rb
87
+ - spec/wood/tree_pattern/type_matcher_spec.rb
88
+ - spec/wood/tree_pattern/variable_matcher_spec.rb
89
+ - spec/wood/tree_rewriter_spec.rb
90
+ homepage: https://github.com/bakkdoor/wood
91
+ licenses:
92
+ - BSD
93
+ metadata: {}
94
+ post_install_message:
95
+ rdoc_options: []
96
+ require_paths:
97
+ - lib
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 2.0.0
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ requirements: []
109
+ rubyforge_project:
110
+ rubygems_version: 2.2.2
111
+ signing_key:
112
+ specification_version: 4
113
+ summary: Wood - Tree manipulation library
114
+ test_files: []