Get the source of a step function. Returned object has keys
    "filename", "lineno", "text" and "html". "text" is the raw
    text of the function, "html" has been marked up by Pygments.

def step_definition(step_name):
    """
    Get the source of a step function. Returned object has keys
    "filename", "lineno", "text" and "html". "text" is the raw
    text of the function, "html" has been marked up by Pygments.

    """
    if not orca.is_step(step_name):
        abort(404)

    filename, lineno, source = \
        orca.get_step(step_name).func_source_data()
    html = highlight(source, PythonLexer(), HtmlFormatter())
    return jsonify(filename=filename, lineno=lineno, text=source, html=html)