2014-05-20 2 views
4

httpdomain Sphinx doc 확장을 위해 파서/렉서를 사용자 정의하려고합니다. 나는 주어진 dir에 설치하고 doc에 언급 된대로 sys.path에 dir을 추가했다.파이썬에서 내가 코드를 변경 한 이유는 무엇입니까?

그런 다음 Sphinx doc을 컴파일하면 http가 올바르게 강조 표시됩니다.

이제 확장 프로그램을 약간 변경해야합니다. 잘못된 구문에 대한 오류가 올바르게 발생하는 확장의 dir 내부에있는 httpdomain.py 파일을 임의로 변경했습니다.

다음으로 HTTP 토큰을 HTTTP (1 여분의 T)로 바꾸어 렉서를 변경했습니다. 내 생각은 HTTTP를 포함하는 문서의 항목이 HTTP 대신 강조 표시되는지 확인하는 것입니다.

문제는 내가 출력을 변경하는 것으로 보이지 않는다는 것입니다. HTTP는 계속 색이 지정되며 HTTTP는 무시됩니다. 여기

내 변화를 포함하는 렉서의 섹션 :

tokens = { 
    'root': [ 
     (r'(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS|TRACE)(+)([^ ]+)(+)' 
     r'(HTTTPS?)(/)(1\.[013])(\r?\n|$)', 
     bygroups(Name.Function, Text, Name.Namespace, Text, 
        Keyword.Reserved, Operator, Number, Text), 
     'headers'), 
     (r'(HTTTPS?)(/)(1\.[013])(+)(\d{3})(+)([^\r\n]+)(\r?\n|$)', 
     bygroups(Keyword.Reserved, Operator, Number, Text, Number, 
        Text, Name.Exception, Text), 
     'headers'), 

     (r'([^\s:]+)(*)(:)(*)([^\r\n]+)(\r?\n|$)', header_callback), 
     (r'([\t ]+)([^\r\n]+)(\r?\n|$)', continuous_header_callback), 
     (r'\r?\n', Text, 'content') 
    ], 
    'headers': [ 
     (r'([^\s:]+)(*)(:)(*)([^\r\n]+)(\r?\n|$)', header_callback), 
     (r'([\t ]+)([^\r\n]+)(\r?\n|$)', continuous_header_callback), 
     (r'\r?\n', Text, 'content') 
    ], 
    'content': [ 
     (r'.+', content_callback) 
    ] 
} 

참고 "HTTP는"을 "HTTTP"로 변경되는 것을을, 그래서 나는 지금 착색되는 문서가 포함 HTTTP의 항목을 기대할 수 , 그러나 아무것도 바뀌지 않았다.

문서 텍스트를 변경하여 페이지에서 업데이트 된 것을 보았으므로 캐시가 문제되지 않습니다.

나는 또한 __pycache__이라는 파이썬이 만든 폴더를 삭제했으며 결과는 변경되지 않았습니다. 나는 또한 렉서에있는 모든 토큰을 주석으로 처리하려고하고있다. 잘못된 구문을 삽입하면 실패합니다. 구문이 정확하다면 변경없이 원래 코드를 사용하는 것처럼 보입니다.

삭제해야하는 다른 캐시가 있습니까?

저는 파이썬에 완전히 익숙해서 여기 조금 잃어 버렸습니다.

추신 :이 HTTTP 것은 단지 시험입니다. 내가이 일을하면 진정한 변화를 만들거야.

답변

1

를 다시 시작하십시오. 그래서 나는 그것을 내 것으로 바 꾸었습니다 : app.add_lexer('http', HTTPLexer()) 그리고 생성 된 문서에 영향을주는 변경 사항을보기 시작했습니다.

-1

*이 된 .pyc 파일을 제거하고 그것은 코드 변경을 볼되고 있었다 밝혀하지만, Pygments는 HTML이라는 렉서를 등록하기 때문에 렉서를 사용하지 않았다 확장

+1

OP는 이미 그가 pycache를 삭제했다고 말했고, 나는 그가 python-3.x에있는 모든 * .pyc 파일을 포함하고있는'__pycache__'를 실제로 의미했다고 생각합니다. – Kritzefitz

+0

아, python-3.x 태그를 놓쳤습니다 ... –

+0

올바른,'__pycache__' 폴더를 삭제했습니다. 아직도 이것을 알아 내려고합니다 ... –

관련 문제