def parse_rmd_options(line):
    """
    Given a R markdown option line, returns a list of pairs name,value
    :param line:
    :return:
    """
    parsing_context = ParsingContext(line)

    result = []
    prev_char = ''

    name = ''
    value = ''

    for char in ',' + line + ',':
        if parsing_context.in_global_expression():
            if char == ',':
                if name != '' or value != '':
                    if result and name == '':
                        raise RMarkdownOptionParsingError(
                            'Option line "{}" has no name for '
                            'option value {}'.format(line, value))
                    result.append((name.strip(), value.strip()))
                    name = ''
                    value = ''
            elif char == '=':
                if name == '':
                    name = value
                    value = ''
                else:
                    value += char
            else:
                parsing_context.count_special_chars(char, prev_char)
                value += char
        else:
            parsing_context.count_special_chars(char, prev_char)
            value += char
        prev_char = char

    if not parsing_context.in_global_expression():
        raise RMarkdownOptionParsingError(
            'Option line "{}" is not properly terminated'.format(line))

    return result
def parse_rmd_options ( line ) : parsing_context = ParsingContext ( line ) result = [ ] prev_char = '' name = '' value = '' for char in ',' + line + ',' : if parsing_context . in_global_expression ( ) : if char == ',' : if name != '' or value != '' : if result and name == '' : raise RMarkdownOptionParsingError ( 'Option line "{}" has no name for ' 'option value {}' . format ( line , value ) ) result . append ( ( name . strip ( ) , value . strip ( ) ) ) name = '' value = '' elif char == '=' : if name == '' : name = value value = '' else : value += char else : parsing_context . count_special_chars ( char , prev_char ) value += char else : parsing_context . count_special_chars ( char , prev_char ) value += char prev_char = char if not parsing_context . in_global_expression ( ) : raise RMarkdownOptionParsingError ( 'Option line "{}" is not properly terminated' . format ( line ) ) return result
Given a R markdown option line, returns a list of pairs name,value
    :param line:
    :return: