talk 2.0.1 → 2.0.2
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
- 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
|
+
|