def insert_secnos_factory(f):
    """Returns insert_secnos(key, value, fmt, meta) action that inserts
    section numbers into the attributes of elements of type f.
    """

    # Get the name and standard length
    name = f.__closure__[0].cell_contents
    n = f.__closure__[1].cell_contents

    def insert_secnos(key, value, fmt, meta):  # pylint: disable=unused-argument
        """Inserts section numbers into elements attributes."""

        global sec  # pylint: disable=global-statement

        if 'xnos-number-sections' in meta and \
          check_bool(get_meta(meta, 'xnos-number-sections')) and \
              fmt in ['html', 'html5']:
            if key == 'Header':
                if 'unnumbered' in value[1][1]:
                    return
                level = value[0]
                m = level - len(sec)
                if m > 0:
                    sec.extend([0]*m)
                sec[level-1] += 1
                sec = sec[:MAXLEVEL]
            if key == name:

                # Only insert if attributes are attached.  Images always have
                # attributes.
                assert len(value) <= n+1
                if name == 'Image' or len(value) == n+1:

                    # Make sure value[0] represents attributes
                    assert len(value[0]) == 3
                    assert isinstance(value[0][0], STRTYPES)
                    assert isinstance(value[0][1], list)
                    assert isinstance(value[0][2], list)

                    # Insert the section number into the attributes
                    s = '.'.join([str(m) for m in sec])
                    value[0][2].insert(0, ['secno', s])

    return insert_secnos
def insert_secnos_factory ( f ) : name = f . __closure__ [ 0 ] . cell_contents n = f . __closure__ [ 1 ] . cell_contents def insert_secnos ( key , value , fmt , meta ) : global sec if 'xnos-number-sections' in meta and check_bool ( get_meta ( meta , 'xnos-number-sections' ) ) and fmt in [ 'html' , 'html5' ] : if key == 'Header' : if 'unnumbered' in value [ 1 ] [ 1 ] : return level = value [ 0 ] m = level - len ( sec ) if m > 0 : sec . extend ( [ 0 ] * m ) sec [ level - 1 ] += 1 sec = sec [ : MAXLEVEL ] if key == name : assert len ( value ) <= n + 1 if name == 'Image' or len ( value ) == n + 1 : assert len ( value [ 0 ] ) == 3 assert isinstance ( value [ 0 ] [ 0 ] , STRTYPES ) assert isinstance ( value [ 0 ] [ 1 ] , list ) assert isinstance ( value [ 0 ] [ 2 ] , list ) s = '.' . join ( [ str ( m ) for m in sec ] ) value [ 0 ] [ 2 ] . insert ( 0 , [ 'secno' , s ] ) return insert_secnos
Returns insert_secnos(key, value, fmt, meta) action that inserts
    section numbers into the attributes of elements of type f.