78 self._attr = None |
78 self._attr = None |
79 self._rel = None |
79 self._rel = None |
80 self._restrictions = [] |
80 self._restrictions = [] |
81 |
81 |
82 def parse(self) : |
82 def parse(self) : |
83 self._entity = self._components.next() |
83 self._entity = next(self._components) |
84 try: |
84 try: |
85 self.process_entity() |
85 self.process_entity() |
86 except StopIteration : |
86 except StopIteration : |
87 pass |
87 pass |
88 |
88 |
89 def process_entity(self) : |
89 def process_entity(self) : |
90 _next = self._components.next() |
90 _next = next(self._components) |
91 if _next in self.schema.get_attrs(self._entity) : |
91 if _next in self.schema.get_attrs(self._entity) : |
92 self._attr = _next |
92 self._attr = _next |
93 _next = self._components.next() |
93 _next = next(self._components) |
94 self._restrictions.append( (self._entity, self._attr, _next) ) |
94 self._restrictions.append( (self._entity, self._attr, _next) ) |
95 self._attr = None |
95 self._attr = None |
96 self._rel = None |
96 self._rel = None |
97 self.process_entity() |
97 self.process_entity() |
98 |
98 |
134 self._restrictions = [] |
134 self._restrictions = [] |
135 self._alphabet = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ') |
135 self._alphabet = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ') |
136 |
136 |
137 def parse(self): |
137 def parse(self): |
138 self._var = self._alphabet.pop(0) |
138 self._var = self._alphabet.pop(0) |
139 self._e_type = self._components.next() |
139 self._e_type = next(self._components) |
140 e_type = self._e_type.capitalize() |
140 e_type = self._e_type.capitalize() |
141 self._restrictions.append('%s is %s' % (self._var, e_type)) |
141 self._restrictions.append('%s is %s' % (self._var, e_type)) |
142 try: |
142 try: |
143 self.process_entity() |
143 self.process_entity() |
144 except StopIteration : |
144 except StopIteration : |
145 pass |
145 pass |
146 return 'Any %s WHERE %s' % (self._var, ', '.join(self._restrictions)) |
146 return 'Any %s WHERE %s' % (self._var, ', '.join(self._restrictions)) |
147 |
147 |
148 def process_entity(self) : |
148 def process_entity(self) : |
149 _next = self._components.next() |
149 _next = next(self._components) |
150 if _next in self.schema.get_attrs(self._e_type) : |
150 if _next in self.schema.get_attrs(self._e_type) : |
151 attr = _next |
151 attr = _next |
152 try: |
152 try: |
153 _next = self._components.next() |
153 _next = next(self._components) |
154 self._restrictions.append('%s %s %s' % (self._var, attr, _next)) |
154 self._restrictions.append('%s %s %s' % (self._var, attr, _next)) |
155 except StopIteration: |
155 except StopIteration: |
156 a_var = self._alphabet.pop(0) |
156 a_var = self._alphabet.pop(0) |
157 self._restrictions.append('%s %s %s' % (self._var, attr, a_var) ) |
157 self._restrictions.append('%s %s %s' % (self._var, attr, a_var) ) |
158 self._var = a_var |
158 self._var = a_var |
161 rel = _next |
161 rel = _next |
162 r_var = self._alphabet.pop(0) |
162 r_var = self._alphabet.pop(0) |
163 self._restrictions.append('%s %s %s' % (self._var, rel, r_var)) |
163 self._restrictions.append('%s %s %s' % (self._var, rel, r_var)) |
164 self._var = r_var |
164 self._var = r_var |
165 try: |
165 try: |
166 _next = self._components.next() |
166 _next = next(self._components) |
167 self._restrictions.append('%s is %s' % (r_var, _next.capitalize())) |
167 self._restrictions.append('%s is %s' % (r_var, _next.capitalize())) |
168 except StopIteration: |
168 except StopIteration: |
169 raise |
169 raise |
170 self.process_entity() |
170 self.process_entity() |
171 |
171 |