Code Duplication    Length = 39-39 lines in 2 locations

pythonx/mistune.py 1 location

@@ 282-320 (lines=39) @@
279
        self._process_list_item(cap, bull)
280
        self.tokens.append({'type': 'list_end'})
281
282
    def _process_list_item(self, cap, bull):
283
        cap = self.rules.list_item.findall(cap)
284
285
        _next = False
286
        length = len(cap)
287
288
        for i in range(length):
289
            item = cap[i][0]
290
291
            # remove the bullet
292
            space = len(item)
293
            item = self.rules.list_bullet.sub('', item)
294
295
            # outdent
296
            if '\n ' in item:
297
                space = space - len(item)
298
                pattern = re.compile(r'^ {1,%d}' % space, flags=re.M)
299
                item = pattern.sub('', item)
300
301
            # determine whether item is loose or not
302
            loose = _next
303
            if not loose and re.search(r'\n\n(?!\s*$)', item):
304
                loose = True
305
306
            rest = len(item)
307
            if i != length - 1 and rest:
308
                _next = item[rest-1] == '\n'
309
                if not loose:
310
                    loose = _next
311
312
            if loose:
313
                t = 'loose_item_start'
314
            else:
315
                t = 'list_item_start'
316
317
            self.tokens.append({'type': t})
318
            # recurse
319
            self.parse(item, self.list_rules)
320
            self.tokens.append({'type': 'list_item_end'})
321
322
    def parse_block_quote(self, m):
323
        self.tokens.append({'type': 'block_quote_start'})

pythonx/tests/markdown_parser.py 1 location

@@ 269-307 (lines=39) @@
266
        self._process_list_item(cap, bull)
267
        self.tokens.append({'type': 'list_end'})
268
269
    def _process_list_item(self, cap, bull):
270
        cap = self.rules.list_item.findall(cap)
271
272
        _next = False
273
        length = len(cap)
274
275
        for i in range(length):
276
            item = cap[i][0]
277
278
            # remove the bullet
279
            space = len(item)
280
            item = self.rules.list_bullet.sub('', item)
281
282
            # outdent
283
            if '\n ' in item:
284
                space = space - len(item)
285
                pattern = re.compile(r'^ {1,%d}' % space, flags=re.M)
286
                item = pattern.sub('', item)
287
288
            # determin whether item is loose or not
289
            loose = _next
290
            if not loose and re.search(r'\n\n(?!\s*$)', item):
291
                loose = True
292
293
            rest = len(item)
294
            if i != length - 1 and rest:
295
                _next = item[rest-1] == '\n'
296
                if not loose:
297
                    loose = _next
298
299
            if loose:
300
                t = 'loose_item_start'
301
            else:
302
                t = 'list_item_start'
303
304
            self.tokens.append({'type': t})
305
            # recurse
306
            self.parse(item, self.list_rules)
307
            self.tokens.append({'type': 'list_item_end'})
308
309
    def parse_block_quote(self, m):
310
        self.tokens.append({'type': 'block_quote_start'})