Code Duplication    Length = 13-13 lines in 3 locations

src/ocrd_models/ocrd_page_generateds.py 3 locations

@@ 546-558 (lines=13) @@
543
    @classmethod
544
    def gds_parse_time(cls, input_data):
545
        tz = None
546
        if input_data[-1] == 'Z':
547
            tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
548
            input_data = input_data[:-1]
549
        else:
550
            results = GeneratedsSuper.tzoff_pattern.search(input_data)
551
            if results is not None:
552
                tzoff_parts = results.group(2).split(':')
553
                tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
554
                if results.group(1) == '-':
555
                    tzoff *= -1
556
                tz = GeneratedsSuper._FixedOffsetTZ(
557
                    tzoff, results.group(0))
558
                input_data = input_data[:-6]
559
        if len(input_data.split('.')) > 1:
560
            dt = datetime_.datetime.strptime(input_data, '%H:%M:%S.%f')
561
        else:
@@ 478-490 (lines=13) @@
475
    @classmethod
476
    def gds_parse_date(cls, input_data):
477
        tz = None
478
        if input_data[-1] == 'Z':
479
            tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
480
            input_data = input_data[:-1]
481
        else:
482
            results = GeneratedsSuper.tzoff_pattern.search(input_data)
483
            if results is not None:
484
                tzoff_parts = results.group(2).split(':')
485
                tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
486
                if results.group(1) == '-':
487
                    tzoff *= -1
488
                tz = GeneratedsSuper._FixedOffsetTZ(
489
                    tzoff, results.group(0))
490
                input_data = input_data[:-6]
491
        dt = datetime_.datetime.strptime(input_data, '%Y-%m-%d')
492
        dt = dt.replace(tzinfo=tz)
493
        return dt.date()
@@ 422-434 (lines=13) @@
419
    @classmethod
420
    def gds_parse_datetime(cls, input_data):
421
        tz = None
422
        if input_data[-1] == 'Z':
423
            tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
424
            input_data = input_data[:-1]
425
        else:
426
            results = GeneratedsSuper.tzoff_pattern.search(input_data)
427
            if results is not None:
428
                tzoff_parts = results.group(2).split(':')
429
                tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
430
                if results.group(1) == '-':
431
                    tzoff *= -1
432
                tz = GeneratedsSuper._FixedOffsetTZ(
433
                    tzoff, results.group(0))
434
                input_data = input_data[:-6]
435
        time_parts = input_data.split('.')
436
        if len(time_parts) > 1:
437
            micro_seconds = int(float('0.' + time_parts[1]) * 1000000)