talk 2.0.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +4 -0
- data/.travis.yml +6 -0
- data/Gemfile +10 -0
- data/README.md +6 -0
- data/Rakefile +9 -0
- data/features/class-field.feature +226 -0
- data/features/class.feature +95 -0
- data/features/enumeration-constant.feature +76 -0
- data/features/enumeration.feature +35 -0
- data/features/glossary-term.feature +46 -0
- data/features/glossary.feature +35 -0
- data/features/step_definitions/class-field.rb +74 -0
- data/features/step_definitions/class.rb +50 -0
- data/features/step_definitions/enumeration-constant.rb +42 -0
- data/features/step_definitions/enumeration.rb +29 -0
- data/features/step_definitions/glossary-term.rb +31 -0
- data/features/step_definitions/glossary.rb +23 -0
- data/features/support/env.rb +261 -0
- data/lib/context.rb +282 -0
- data/lib/context_class.rb +224 -0
- data/lib/contexts/README.md +274 -0
- data/lib/contexts/base.rb +6 -0
- data/lib/contexts/boolean.rb +5 -0
- data/lib/contexts/class.rb +11 -0
- data/lib/contexts/constant.rb +5 -0
- data/lib/contexts/enumeration.rb +20 -0
- data/lib/contexts/field.rb +47 -0
- data/lib/contexts/glossary.rb +7 -0
- data/lib/contexts/inherits.rb +3 -0
- data/lib/contexts/map.rb +7 -0
- data/lib/contexts/meta.rb +2 -0
- data/lib/contexts/method.rb +15 -0
- data/lib/contexts/numeric.rb +5 -0
- data/lib/contexts/protocol.rb +8 -0
- data/lib/contexts/reference.rb +6 -0
- data/lib/contexts/string.rb +5 -0
- data/lib/contexts/target.rb +11 -0
- data/lib/contexts/term.rb +11 -0
- data/lib/languages/java/java.rb +145 -0
- data/lib/languages/java/templates/class.java.erb +22 -0
- data/lib/languages/java/templates/enumeration.java.erb +10 -0
- data/lib/languages/java/templates/glossary.java.erb +8 -0
- data/lib/languages/language.rb +172 -0
- data/lib/languages/objc/objc.rb +162 -0
- data/lib/languages/objc/templates/TalkClasses.h.erb +3 -0
- data/lib/languages/objc/templates/TalkClassesForward.h.erb +2 -0
- data/lib/languages/objc/templates/TalkConstants.h.erb +22 -0
- data/lib/languages/objc/templates/TalkObjectList.h.erb +4 -0
- data/lib/languages/objc/templates/class.h.erb +21 -0
- data/lib/languages/objc/templates/class.m.erb +43 -0
- data/lib/parse_error.rb +4 -0
- data/lib/parser.rb +119 -0
- data/lib/registry.rb +151 -0
- data/lib/talk.rb +5 -0
- data/talk.gemspec +18 -0
- metadata +71 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d526ec8ff5dcfbc0df84597b909908878533ff1c
|
4
|
+
data.tar.gz: 0e3149f3d0ec39651885ac9b8423b0f1d31b75fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85f753134c46ee61b44350daf3c81a5b080c2eea7612647cfb0cc6d6e7f7ec01d77408757bfa8fe687edd00c1d47fc05b4ef91e7cfdf0e627c86477ab0b0ab54
|
7
|
+
data.tar.gz: bfa8165d934932f43af1867bdcd99a0374a74beb77b86d644c27fbc69fe780da5bae33f833024fba385c9f984a61b4b82cd2dc97f3b0f7f363bf3fc5f5948350
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,226 @@
|
|
1
|
+
Feature: @class -> @field
|
2
|
+
Scenario Outline: Define a field
|
3
|
+
Given I have defined a valid class
|
4
|
+
And I give it a field named <name> of type <type> and description <description>
|
5
|
+
When I get the result hash
|
6
|
+
Then the field <name> should have type <type> and description <description>
|
7
|
+
|
8
|
+
Examples:
|
9
|
+
| name | type | description |
|
10
|
+
| foobar8 | int8 | I am an 8-bit integer |
|
11
|
+
| foobarU16 | uint16 | I am a 16-bit unsigned integer |
|
12
|
+
|
13
|
+
Scenario Outline: Define a field with implicit description
|
14
|
+
Given I have defined a valid class
|
15
|
+
And I give it a field named <name> of type <type> and implicit description <description>
|
16
|
+
When I get the result hash
|
17
|
+
Then the field <name> should have type <type> and description <description>
|
18
|
+
|
19
|
+
Examples:
|
20
|
+
| name | type | description |
|
21
|
+
| foobar8 | int8 | I am an 8-bit integer |
|
22
|
+
| foobarU16 | uint16 | I am a 16-bit unsigned integer |
|
23
|
+
|
24
|
+
Scenario Outline: Define a field with a valid primitive type
|
25
|
+
Given I have defined a valid class
|
26
|
+
And I give it a valid field named foobar of type <type>
|
27
|
+
When I get the result hash
|
28
|
+
Then the field foobar should have type <type>
|
29
|
+
|
30
|
+
Examples:
|
31
|
+
| type |
|
32
|
+
| uint8 |
|
33
|
+
| uint16 |
|
34
|
+
| uint32 |
|
35
|
+
| uint64 |
|
36
|
+
| int8 |
|
37
|
+
| int16 |
|
38
|
+
| int32 |
|
39
|
+
| int64 |
|
40
|
+
| string |
|
41
|
+
| object |
|
42
|
+
| talkobject |
|
43
|
+
| real |
|
44
|
+
| bool |
|
45
|
+
|
46
|
+
Scenario Outline: Define a field with an invalid type
|
47
|
+
Given I have defined a valid class
|
48
|
+
And I give it a valid field named foobar of type <type>
|
49
|
+
When I get the result hash
|
50
|
+
Then there should be a parse error
|
51
|
+
|
52
|
+
Examples:
|
53
|
+
| type |
|
54
|
+
| Lies |
|
55
|
+
| IAmTheDevil |
|
56
|
+
| LookMaNoParse |
|
57
|
+
|
58
|
+
Scenario Outline: Define a field with a sibling class
|
59
|
+
Given I have defined a valid class named <sibling>
|
60
|
+
And I have defined a valid class
|
61
|
+
And I give it a valid field named foobar of type <sibling>
|
62
|
+
When I get the result hash
|
63
|
+
Then the field foobar should have type <sibling>
|
64
|
+
|
65
|
+
Examples:
|
66
|
+
| sibling |
|
67
|
+
| Brother |
|
68
|
+
| Sister |
|
69
|
+
| GenderNeutralSibling |
|
70
|
+
|
71
|
+
Scenario Outline: Define a field with a sibling class referenced by abbreviation
|
72
|
+
Given I have defined a valid class named <sibling>
|
73
|
+
And I have defined a valid class
|
74
|
+
And I give it a valid field named foobar of type <abbrev>
|
75
|
+
When I get the result hash
|
76
|
+
Then the field foobar should have type <sibling>
|
77
|
+
|
78
|
+
Examples:
|
79
|
+
| sibling | abbrev |
|
80
|
+
| com.example.Sibling | Sibling |
|
81
|
+
| com.example.Sibling | example.Sibling |
|
82
|
+
| com.example.Sibling | com.example.Sibling |
|
83
|
+
|
84
|
+
Scenario: Define a field that refers to its container class
|
85
|
+
Given I have defined a valid class named Container
|
86
|
+
And I give it a valid field named foobar of type Container
|
87
|
+
When I get the result hash
|
88
|
+
Then the field foobar should have type Container
|
89
|
+
|
90
|
+
Scenario Outline: Define a field with an @see class
|
91
|
+
Given I have defined a valid class named <other>
|
92
|
+
And I have defined a valid class
|
93
|
+
And I give it a valid field named foobar
|
94
|
+
And I give foobar @see class <other>
|
95
|
+
When I get the result hash
|
96
|
+
Then the field foobar should have an @see class <other>
|
97
|
+
|
98
|
+
Examples:
|
99
|
+
| other |
|
100
|
+
| AClass |
|
101
|
+
| CoolClass |
|
102
|
+
| LameClass |
|
103
|
+
|
104
|
+
Scenario: Define a field with an @see class that doesn't exist
|
105
|
+
Given I have defined a valid class
|
106
|
+
And I give it a valid field named foobar
|
107
|
+
And I give foobar @see class DoesntExist
|
108
|
+
When I get the result hash
|
109
|
+
Then there should be a parse error
|
110
|
+
|
111
|
+
Scenario Outline: Define a field with an @see glossary
|
112
|
+
Given I have defined a valid glossary named <other>
|
113
|
+
And I have defined a valid class
|
114
|
+
And I give it a valid field named foobar
|
115
|
+
And I give foobar @see glossary <other>
|
116
|
+
When I get the result hash
|
117
|
+
Then the field foobar should have an @see glossary <other>
|
118
|
+
|
119
|
+
Examples:
|
120
|
+
| other |
|
121
|
+
| BestBabyNamesFor2014 |
|
122
|
+
| LexiconOfCthulhu |
|
123
|
+
| AdorableAnimals |
|
124
|
+
|
125
|
+
Scenario: Define a field with an @see glossary that doesn't exist
|
126
|
+
Given I have defined a valid class
|
127
|
+
And I give it a valid field named foobar
|
128
|
+
And I give foobar @see glossary DoesntExist
|
129
|
+
When I get the result hash
|
130
|
+
Then there should be a parse error
|
131
|
+
|
132
|
+
Scenario Outline: Define a field with an @see enumeration
|
133
|
+
Given I have defined a valid enumeration named <other>
|
134
|
+
And I have defined a valid class
|
135
|
+
And I give it a valid field named foobar
|
136
|
+
And I give foobar @see enumeration <other>
|
137
|
+
When I get the result hash
|
138
|
+
Then the field foobar should have an @see enumeration <other>
|
139
|
+
|
140
|
+
Examples:
|
141
|
+
| other |
|
142
|
+
| BestBabyNamesFor2014 |
|
143
|
+
| LexiconOfCthulhu |
|
144
|
+
| AdorableAnimals |
|
145
|
+
|
146
|
+
Scenario Outline: Define a field with an @see enum
|
147
|
+
Given I have defined a valid enumeration named <other>
|
148
|
+
And I have defined a valid class
|
149
|
+
And I give it a valid field named foobar
|
150
|
+
And I give foobar @see enum <other>
|
151
|
+
When I get the result hash
|
152
|
+
Then the field foobar should have an @see enumeration <other>
|
153
|
+
|
154
|
+
Examples:
|
155
|
+
| other |
|
156
|
+
| HowILoveThee |
|
157
|
+
| MarksEvilBitmasks |
|
158
|
+
| WaysToLeaveYourLover |
|
159
|
+
|
160
|
+
Scenario: Define a field with an @see enumeration that doesn't exist
|
161
|
+
Given I have defined a valid class
|
162
|
+
And I give it a valid field named foobar
|
163
|
+
And I give foobar @see enumeration DoesntExist
|
164
|
+
When I get the result hash
|
165
|
+
Then there should be a parse error
|
166
|
+
|
167
|
+
Scenario Outline: Define a field with @caveats
|
168
|
+
Given I have defined a valid class
|
169
|
+
And I give it a valid field named foobar
|
170
|
+
And I give foobar @caveat <message_1>
|
171
|
+
And I give foobar @caveat <message_2>
|
172
|
+
When I get the result hash
|
173
|
+
Then the field foobar should have a @caveat <message_1>
|
174
|
+
And the field foobar should have a @caveat <message_2>
|
175
|
+
|
176
|
+
Examples:
|
177
|
+
| message_1 | message_2 |
|
178
|
+
| This field is pure evil | May contain null, as well as fatal amounts of arsenic |
|
179
|
+
| Field might be garbage | Field might also have the information you need to survive |
|
180
|
+
|
181
|
+
Scenario Outline: Define a field as @deprecated
|
182
|
+
Given I have defined a valid class
|
183
|
+
And I give it a valid field named foobar
|
184
|
+
And I give foobar @deprecated <message>
|
185
|
+
When I get the result hash
|
186
|
+
Then the field foobar should have @deprecated <message>
|
187
|
+
|
188
|
+
Examples:
|
189
|
+
| message |
|
190
|
+
| It wasn't working out |
|
191
|
+
| It's not the field, it's us |
|
192
|
+
| We still want to be friends with this field and hope it moves on to other classes that will love it for who it is |
|
193
|
+
|
194
|
+
Scenario: Define a field as @deprecated twice
|
195
|
+
Given I have defined a valid class
|
196
|
+
And I give it a valid field named foobar
|
197
|
+
And I give foobar @deprecated once
|
198
|
+
And I give foobar @deprecated again
|
199
|
+
When I get the result hash
|
200
|
+
Then there should be a parse error
|
201
|
+
|
202
|
+
Scenario Outline: Define a field with an @version
|
203
|
+
Given I have defined a valid class
|
204
|
+
And I give it a valid field named foobar
|
205
|
+
And I give foobar @version <version>
|
206
|
+
When I get the result hash
|
207
|
+
Then the field foobar should have @version <version>
|
208
|
+
|
209
|
+
Examples:
|
210
|
+
| version |
|
211
|
+
| 1 |
|
212
|
+
| 3.0 |
|
213
|
+
| sheepishly stroked lion |
|
214
|
+
|
215
|
+
Scenario Outline: Define a field with two @version tags
|
216
|
+
Given I have defined a valid class
|
217
|
+
And I give it a valid field named foobar
|
218
|
+
And I give foobar @version <version_1>
|
219
|
+
And I give foobar @version <version_2>
|
220
|
+
When I get the result hash
|
221
|
+
Then there should be a parse error
|
222
|
+
|
223
|
+
Examples:
|
224
|
+
| version_1 | version_2 |
|
225
|
+
| 1.0 | 1.0 |
|
226
|
+
| 1.0 | 2.0 |
|
@@ -0,0 +1,95 @@
|
|
1
|
+
Feature: @class
|
2
|
+
Scenario Outline: Define a class with an explicit @description
|
3
|
+
Given I have defined a class named <name>
|
4
|
+
And I have given <description> as a @description
|
5
|
+
When I get the result hash
|
6
|
+
Then there should be a class named <name>
|
7
|
+
And it should have description <description>
|
8
|
+
|
9
|
+
Examples:
|
10
|
+
| name | description |
|
11
|
+
| Lumberjack | I am a lumberjack, and I am acceptable |
|
12
|
+
| com.example.JavaClass | I have a hierarchical name |
|
13
|
+
|
14
|
+
Scenario Outline: Define a class with an implicit @description
|
15
|
+
Given I have defined a class named <name>
|
16
|
+
And I have given <description> as an implied description
|
17
|
+
When I get the result hash
|
18
|
+
Then there should be a class named <name>
|
19
|
+
And it should have description <description>
|
20
|
+
|
21
|
+
Examples:
|
22
|
+
| name | description |
|
23
|
+
| Lumberjack | I am a lumberjack, and I am acceptable |
|
24
|
+
| com.example.JavaClass | I have a hierarchical name |
|
25
|
+
|
26
|
+
Scenario: Define a class without a description
|
27
|
+
Given I have defined a class named NoDescriptionClsas
|
28
|
+
But I don't give a description
|
29
|
+
When I get the result hash
|
30
|
+
Then there should be a parse error
|
31
|
+
|
32
|
+
Scenario: Define a class with a duplicate name
|
33
|
+
Given I have defined a class named DuplicateClass
|
34
|
+
And I have given it some random bullshit as a @description
|
35
|
+
And I define another class also named DuplicateClass
|
36
|
+
When I get the result hash
|
37
|
+
Then there should be a parse error
|
38
|
+
|
39
|
+
Scenario Outline: Define a class with @inherits
|
40
|
+
Given I have defined a valid class named <base>
|
41
|
+
And I have defined a valid class named ChildClass
|
42
|
+
And I give it @inherits <base>
|
43
|
+
When I get the result hash
|
44
|
+
Then the class ChildClass should have @inherits <base>
|
45
|
+
|
46
|
+
Examples:
|
47
|
+
| base |
|
48
|
+
| BaseClass |
|
49
|
+
| YourDaddy |
|
50
|
+
|
51
|
+
Scenario Outline: Define a class that @inherits from an undefined class
|
52
|
+
Given I have defined a valid class named ChildClass
|
53
|
+
And I give it @inherits <base>
|
54
|
+
When I get the result hash
|
55
|
+
Then there should be a parse error
|
56
|
+
|
57
|
+
Examples:
|
58
|
+
| base |
|
59
|
+
| DoesntExist |
|
60
|
+
| uint16 |
|
61
|
+
| string |
|
62
|
+
| talkobject |
|
63
|
+
|
64
|
+
Scenario Outline: Define a class that @inherits twice
|
65
|
+
Given I have defined a valid class named BaseClass1
|
66
|
+
And I have defined a valid class named BaseClass2
|
67
|
+
And I have defined a valid class named ChildClass
|
68
|
+
And I give it @inherits <base_1>
|
69
|
+
And I give it @inherits <base_2>
|
70
|
+
When I get the result hash
|
71
|
+
Then there should be a parse error
|
72
|
+
|
73
|
+
Examples:
|
74
|
+
| base_1 | base_2 |
|
75
|
+
| BaseClass1 | BaseClass1 |
|
76
|
+
| BaseClass1 | BaseClass2 |
|
77
|
+
|
78
|
+
Scenario Outline: Define a class that sets @implement
|
79
|
+
Given I have defined a valid class named NoImplementClass
|
80
|
+
And I give it @implement <implement>
|
81
|
+
When I get the result hash
|
82
|
+
Then the class NoImplementClass should have @implement <value>
|
83
|
+
|
84
|
+
Examples:
|
85
|
+
| implement | value |
|
86
|
+
| 0 | false |
|
87
|
+
| off | false |
|
88
|
+
| false | false |
|
89
|
+
| no | false |
|
90
|
+
| NO | false |
|
91
|
+
| False | false |
|
92
|
+
| 1 | true |
|
93
|
+
| on | true |
|
94
|
+
| true | true |
|
95
|
+
| yes | true |
|
@@ -0,0 +1,76 @@
|
|
1
|
+
Feature: @enumeration -> @constant
|
2
|
+
|
3
|
+
Scenario Outline: Define a constant
|
4
|
+
Given I have defined a valid enumeration named <enumeration>
|
5
|
+
And I define a constant named <constant> with value <value> and description <description>
|
6
|
+
When I get the result hash
|
7
|
+
Then the enumeration <enumeration> should contain a constant named <constant>
|
8
|
+
And the constant <constant> of enumeration <enumeration> should have value <value>
|
9
|
+
And the constant <constant> of enumeration <enumeration> should have description <description>
|
10
|
+
|
11
|
+
Examples:
|
12
|
+
| enumeration | constant | value | description |
|
13
|
+
| AnEnumeration | AConstant | 1 | A description |
|
14
|
+
| AnotherEnumeration | AnotherConstant | 4 | Another description |
|
15
|
+
|
16
|
+
Scenario Outline: Define multiple constants
|
17
|
+
Given I have defined a valid enumeration named <enumeration>
|
18
|
+
And I define a constant named <constant_1> with value <value_1> and description <description_1>
|
19
|
+
And I define a constant named <constant_2> with value <value_2> and description <description_2>
|
20
|
+
When I get the result hash
|
21
|
+
Then the enumeration <enumeration> should contain a constant named <constant_1>
|
22
|
+
And the constant <constant_1> of enumeration <enumeration> should have value <value_1>
|
23
|
+
And the constant <constant_1> of enumeration <enumeration> should have description <description_1>
|
24
|
+
And the enumeration <enumeration> should contain a constant named <constant_2>
|
25
|
+
And the constant <constant_2> of enumeration <enumeration> should have value <value_2>
|
26
|
+
And the constant <constant_2> of enumeration <enumeration> should have description <description_2>
|
27
|
+
|
28
|
+
Examples:
|
29
|
+
| enumeration | constant_1 | value_1 | description_1 | constant_2 | value_2 | description_2 |
|
30
|
+
| AnEnumeration | Constant1 | 1 | A Description | Constant2 | 2 | Another Description |
|
31
|
+
| AnotherEnumeration | ConstantA | 2 | A Description | ConstantB | 1 | Another Description |
|
32
|
+
| AThirdEnumeration | ConstantOne | 2 | Numeral two | ConstantTwo | 2 | Ordinal two |
|
33
|
+
|
34
|
+
Scenario: Define constants with implied values
|
35
|
+
Given I have defined a valid enumeration named AnEnumeration
|
36
|
+
And I define a valid constant named Constant0
|
37
|
+
And I define a valid constant named Constant1
|
38
|
+
And I define a valid constant named Constant2
|
39
|
+
When I get the result hash
|
40
|
+
Then the constant Constant0 of enumeration AnEnumeration should have value 0
|
41
|
+
Then the constant Constant1 of enumeration AnEnumeration should have value 1
|
42
|
+
Then the constant Constant2 of enumeration AnEnumeration should have value 2
|
43
|
+
|
44
|
+
|
45
|
+
Scenario Outline: Define constants with mixed explicit and implied values
|
46
|
+
Given I have defined a valid enumeration named AnEnumeration
|
47
|
+
And I define a valid constant named Constant1 with value <value1>
|
48
|
+
And I define a valid constant named Constant2
|
49
|
+
And I define a valid constant named Constant3
|
50
|
+
And I define a valid constant named Constant4 with value <value4>
|
51
|
+
And I define a valid constant named Constant5
|
52
|
+
When I get the result hash
|
53
|
+
Then the constant Constant1 of enumeration AnEnumeration should have value <value1>
|
54
|
+
And the constant Constant2 of enumeration AnEnumeration should have value <expected2>
|
55
|
+
And the constant Constant3 of enumeration AnEnumeration should have value <expected3>
|
56
|
+
And the constant Constant4 of enumeration AnEnumeration should have value <value4>
|
57
|
+
And the constant Constant5 of enumeration AnEnumeration should have value <expected5>
|
58
|
+
|
59
|
+
Examples:
|
60
|
+
| value1 | expected2 | expected3 | value4 | expected5 |
|
61
|
+
| 1 | 2 | 3 | 4 | 5 |
|
62
|
+
| 0 | 1 | 2 | 10 | 11 |
|
63
|
+
|
64
|
+
Scenario Outline: Define a constant with an interpreted expression
|
65
|
+
Given I have defined a valid enumeration named AnEnumeration
|
66
|
+
And I define a valid constant named Expressive with value <expression>
|
67
|
+
When I get the result hash
|
68
|
+
Then the constant Expressive should have value <output>
|
69
|
+
|
70
|
+
Examples:
|
71
|
+
| expression | output |
|
72
|
+
| 0 | 0 |
|
73
|
+
| Math.cos(0) | 1 |
|
74
|
+
| 0x10 | 16 |
|
75
|
+
| 1 << 8 | 256 |
|
76
|
+
|