virtual_keywords 0.1.0 → 0.3.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. data/lib/parsetree/History.txt +477 -0
  2. data/lib/parsetree/Manifest.txt +19 -0
  3. data/lib/parsetree/README.txt +97 -0
  4. data/lib/parsetree/Rakefile +37 -0
  5. data/lib/parsetree/bin/parse_tree_abc +89 -0
  6. data/lib/parsetree/bin/parse_tree_audit +28 -0
  7. data/lib/parsetree/bin/parse_tree_deps +62 -0
  8. data/lib/parsetree/bin/parse_tree_show +63 -0
  9. data/lib/parsetree/demo/printer.rb +20 -0
  10. data/lib/parsetree/lib/gauntlet_parsetree.rb +121 -0
  11. data/lib/parsetree/lib/parse_tree.rb +1202 -0
  12. data/lib/parsetree/lib/parse_tree_extensions.rb +59 -0
  13. data/lib/parsetree/lib/unified_ruby.rb +421 -0
  14. data/lib/parsetree/test/something.rb +53 -0
  15. data/lib/parsetree/test/test_parse_tree.rb +2567 -0
  16. data/lib/parsetree/test/test_parse_tree_extensions.rb +107 -0
  17. data/lib/parsetree/test/test_unified_ruby.rb +57 -0
  18. data/lib/parsetree/validate.sh +31 -0
  19. data/lib/sexps/{count_to_ten_sexp.txt → count_to_ten_sexp.rb} +0 -0
  20. data/lib/sexps/{sexps_and.txt → sexps_and.rb} +0 -0
  21. data/lib/sexps/{sexps_case_when.txt → sexps_case_when.rb} +0 -0
  22. data/lib/sexps/{sexps_greet.txt → sexps_greet.rb} +0 -0
  23. data/lib/sexps/sexps_not.rb +24 -0
  24. data/lib/sexps/{sexps_rewritten_keywords.txt → sexps_rewritten_keywords.rb} +0 -0
  25. data/lib/sexps/{sexps_symbolic_and.txt → sexps_symbolic_and.rb} +0 -0
  26. data/lib/sexps/sexps_until.rb +60 -0
  27. data/lib/sexps/{sexps_while.txt → sexps_while.rb} +0 -0
  28. data/lib/spec/class_reflection_spec.rb +64 -0
  29. data/lib/spec/keyword_rewriter_spec.rb +7 -54
  30. data/lib/spec/not_rewriter_spec.rb +25 -0
  31. data/lib/spec/parser_strategy_spec.rb +23 -0
  32. data/lib/spec/sexp_stringifier_spec.rb +19 -0
  33. data/lib/spec/spec_helper.rb +61 -307
  34. data/lib/spec/until_rewriter_spec.rb +26 -0
  35. data/lib/spec/virtualizees/and_user.rb +17 -0
  36. data/lib/spec/virtualizees/case_when_user.rb +20 -0
  37. data/lib/spec/virtualizees/fizzbuzzer.rb +15 -0
  38. data/lib/spec/virtualizees/greeter.rb +127 -0
  39. data/lib/spec/virtualizees/not_user.rb +9 -0
  40. data/lib/spec/virtualizees/operator_user.rb +15 -0
  41. data/lib/spec/virtualizees/or_user.rb +17 -0
  42. data/lib/spec/virtualizees/parents.rb +8 -0
  43. data/lib/spec/virtualizees/until_user.rb +16 -0
  44. data/lib/spec/virtualizees/while_user.rb +16 -0
  45. data/lib/spec/virtualizer_spec.rb +46 -83
  46. data/lib/virtual_keywords/class_reflection.rb +88 -0
  47. data/lib/virtual_keywords/deep_copy_array.rb +12 -0
  48. data/lib/virtual_keywords/keyword_rewriter.rb +54 -0
  49. data/lib/virtual_keywords/parser_strategy.rb +40 -0
  50. data/lib/virtual_keywords/rewritten_keywords.rb +15 -0
  51. data/lib/virtual_keywords/sexp_stringifier.rb +1 -5
  52. data/lib/virtual_keywords/version.rb +1 -1
  53. data/lib/virtual_keywords/virtualizer.rb +30 -115
  54. data/lib/virtual_keywords.rb +31 -5
  55. metadata +117 -90
  56. data/lib/spec/class_mirrorer_spec.rb +0 -18
  57. data/lib/virtual_keywords/class_mirrorer.rb +0 -39
metadata CHANGED
@@ -1,143 +1,170 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: virtual_keywords
3
- version: !ruby/object:Gem::Version
4
- hash: 27
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Rahul Rajagopalan
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-04-21 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-04-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rspec
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &4909200 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :development
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: sexp_processor
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *4909200
25
+ - !ruby/object:Gem::Dependency
26
+ name: sexp_processor
27
+ requirement: &4908420 !ruby/object:Gem::Requirement
38
28
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
46
33
  type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: ParseTree
50
34
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *4908420
36
+ - !ruby/object:Gem::Dependency
37
+ name: ParseTree
38
+ requirement: &4907600 !ruby/object:Gem::Requirement
52
39
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
60
44
  type: :runtime
61
- version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
45
+ prerelease: false
46
+ version_requirements: *4907600
47
+ - !ruby/object:Gem::Dependency
63
48
  name: ruby2ruby
49
+ requirement: &4906840 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *4906840
58
+ - !ruby/object:Gem::Dependency
59
+ name: method_source
60
+ requirement: &4906180 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
64
67
  prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
68
+ version_requirements: *4906180
69
+ - !ruby/object:Gem::Dependency
70
+ name: ruby_parser
71
+ requirement: &5415440 !ruby/object:Gem::Requirement
66
72
  none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 0
73
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
74
77
  type: :runtime
75
- version_requirements: *id004
78
+ prerelease: false
79
+ version_requirements: *5415440
76
80
  description: Replace keyword implementations with your own functions, for DSLs
77
81
  email: rahulrajago@gmail.com
78
82
  executables: []
79
-
80
83
  extensions: []
81
-
82
84
  extra_rdoc_files: []
83
-
84
- files:
85
- - lib/virtual_keywords/class_mirrorer.rb
85
+ files:
86
+ - lib/virtual_keywords/class_reflection.rb
86
87
  - lib/virtual_keywords/sexp_stringifier.rb
87
88
  - lib/virtual_keywords/rewritten_keywords.rb
89
+ - lib/virtual_keywords/deep_copy_array.rb
88
90
  - lib/virtual_keywords/keyword_rewriter.rb
91
+ - lib/virtual_keywords/parser_strategy.rb
89
92
  - lib/virtual_keywords/version.rb
90
93
  - lib/virtual_keywords/virtualizer.rb
91
- - lib/sexps/sexps_while.txt
92
- - lib/sexps/count_to_ten_sexp.txt
93
- - lib/sexps/sexps_and.txt
94
- - lib/sexps/sexps_symbolic_and.txt
95
- - lib/sexps/sexps_case_when.txt
96
- - lib/sexps/sexps_rewritten_keywords.txt
97
- - lib/sexps/sexps_greet.txt
94
+ - lib/parsetree/Manifest.txt
95
+ - lib/parsetree/lib/parse_tree_extensions.rb
96
+ - lib/parsetree/lib/gauntlet_parsetree.rb
97
+ - lib/parsetree/lib/parse_tree.rb
98
+ - lib/parsetree/lib/unified_ruby.rb
99
+ - lib/parsetree/test/something.rb
100
+ - lib/parsetree/test/test_parse_tree.rb
101
+ - lib/parsetree/test/test_parse_tree_extensions.rb
102
+ - lib/parsetree/test/test_unified_ruby.rb
103
+ - lib/parsetree/demo/printer.rb
104
+ - lib/parsetree/History.txt
105
+ - lib/parsetree/README.txt
106
+ - lib/parsetree/bin/parse_tree_deps
107
+ - lib/parsetree/bin/parse_tree_show
108
+ - lib/parsetree/bin/parse_tree_audit
109
+ - lib/parsetree/bin/parse_tree_abc
110
+ - lib/parsetree/validate.sh
111
+ - lib/parsetree/Rakefile
112
+ - lib/sexps/sexps_greet.rb
113
+ - lib/sexps/sexps_symbolic_and.rb
114
+ - lib/sexps/sexps_and.rb
115
+ - lib/sexps/sexps_rewritten_keywords.rb
116
+ - lib/sexps/count_to_ten_sexp.rb
117
+ - lib/sexps/sexps_while.rb
118
+ - lib/sexps/sexps_case_when.rb
119
+ - lib/sexps/sexps_until.rb
120
+ - lib/sexps/sexps_not.rb
98
121
  - lib/virtual_keywords.rb
99
122
  - lib/spec/virtualizer_spec.rb
123
+ - lib/spec/parser_strategy_spec.rb
124
+ - lib/spec/until_rewriter_spec.rb
100
125
  - lib/spec/while_rewriter_spec.rb
101
126
  - lib/spec/and_rewriter_spec.rb
102
127
  - lib/spec/if_rewriter_spec.rb
103
128
  - lib/spec/rewritten_keywords_spec.rb
129
+ - lib/spec/sexp_stringifier_spec.rb
130
+ - lib/spec/virtualizees/fizzbuzzer.rb
131
+ - lib/spec/virtualizees/operator_user.rb
132
+ - lib/spec/virtualizees/case_when_user.rb
133
+ - lib/spec/virtualizees/and_user.rb
134
+ - lib/spec/virtualizees/parents.rb
135
+ - lib/spec/virtualizees/or_user.rb
136
+ - lib/spec/virtualizees/while_user.rb
137
+ - lib/spec/virtualizees/until_user.rb
138
+ - lib/spec/virtualizees/not_user.rb
139
+ - lib/spec/virtualizees/greeter.rb
140
+ - lib/spec/not_rewriter_spec.rb
104
141
  - lib/spec/keyword_rewriter_spec.rb
105
- - lib/spec/class_mirrorer_spec.rb
106
142
  - lib/spec/spec_helper.rb
143
+ - lib/spec/class_reflection_spec.rb
107
144
  - lib/spec/or_rewriter_spec.rb
108
145
  - lib/Rakefile
109
146
  homepage: http://github.com/rahulraj/virtual_keywords
110
147
  licenses: []
111
-
112
148
  post_install_message:
113
149
  rdoc_options: []
114
-
115
- require_paths:
150
+ require_paths:
116
151
  - lib
117
- required_ruby_version: !ruby/object:Gem::Requirement
152
+ required_ruby_version: !ruby/object:Gem::Requirement
118
153
  none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- hash: 3
123
- segments:
124
- - 0
125
- version: "0"
126
- required_rubygems_version: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ required_rubygems_version: !ruby/object:Gem::Requirement
127
159
  none: false
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- hash: 3
132
- segments:
133
- - 0
134
- version: "0"
160
+ requirements:
161
+ - - ! '>='
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
135
164
  requirements: []
136
-
137
165
  rubyforge_project:
138
- rubygems_version: 1.8.23
166
+ rubygems_version: 1.8.17
139
167
  signing_key:
140
168
  specification_version: 3
141
169
  summary: Virtualize keywords, like "if", "and", and "or"
142
170
  test_files: []
143
-
@@ -1,18 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'ClassMirrorer' do
4
- before :each do
5
- @stub_parser = double('parser')
6
- end
7
-
8
- it 'mirrors given classes' do
9
- @stub_parser.stub(:translate).and_return('translated')
10
- mirrorer = VirtualKeywords::ClassMirrorer.new @stub_parser
11
- result = mirrorer.mirror [Fizzbuzzer]
12
-
13
- class_and_method = VirtualKeywords::ClassAndMethodName.new(
14
- Fizzbuzzer, 'fizzbuzz')
15
- result.keys.should include class_and_method
16
- result[class_and_method].should eql 'translated'
17
- end
18
- end
@@ -1,39 +0,0 @@
1
- module VirtualKeywords
2
- # Simple data object holding a Class and the name of one of its methods
3
- ClassAndMethodName = Struct.new(:klass, :method_name)
4
-
5
- # Class that takes classes and "mirrors" them, by parsing their methods
6
- # and storing the results.
7
- class ClassMirrorer
8
- # Initialize a ClassMirrorer
9
- #
10
- # Arguments:
11
- # parser: (Class) an object with a method translate, that takes a class
12
- # and method name, and returns a syntax tree that can be
13
- # sexpified (optional, uses ParseTree by default).
14
- def initialize(parser = ParseTree)
15
- @parser = parser
16
- end
17
-
18
- # Map ClassAndMethodNames to outputs of parser.translate
19
- #
20
- # Arguments:
21
- # klasses: (Array[Class]) the classes to mirror.
22
- #
23
- # Returns:
24
- # (Hash[ClassAndMethodName, Array]) a hash mapping every method of every
25
- # class to parsed output.
26
- def mirror(klasses)
27
- methods = {}
28
- klasses.each do |klass|
29
- klass.instance_methods.each do |method_name|
30
- key = ClassAndMethodName.new(klass, method_name)
31
- translated = @parser.translate(klass, method_name)
32
- methods[key] = translated
33
- end
34
- end
35
-
36
- methods
37
- end
38
- end
39
- end