2009-09-18 5 views
1

У меня проблема решить в Jython. Функция у меня выглядит следующим образом:преобразование источника Jython/ast

ok = whatever1(x, ...) 
self.assertTrue("whatever1 failed: "+x...(), ok) 

ok = whatever2(x, ...) 
self.assertTrue("whatever2 failed: "+x...(), ok) 

[ many many lines ] ... 

Есть много тестов, которые выглядят так, что они содержат в основном нормально = ... тесты, но есть и другие вещи, сделанные тоже. Я знаю, какие функции проверяемы, потому что они исходят только из одного пространства имен (или я могу оставить часть «ok =»). Вопрос заключается в том, как автоматически преобразовать источник, так что я пишу только:

ok = whatever1(x, ...) # this is transformed 
ok = whatever2(x, ...) # this too 
something_else(...) # this one isn't 

а остальное генерируется автоматически?

Я знаю о незрелом и ast - есть ли лучший способ подойти к этой проблеме? (да, я знаю - может быть, как монада) Я тоже смотрю на библиотеку rope и не могу решить ... какой путь лучше выбрать здесь? Преобразование, которое я описал, является единственным, что мне нужно, и я не возражаю против создания временного файла, который будет включен в настоящий код.

ответ

2

Вы уверены, что вам нужен АСТ? Если единственными интересными являются те, которые начинаются с «ok =», то, возможно, достаточно простой работы с строками в исходных файлах?

+0

Правда - это хорошая идея ... хотя может возникнуть еще более интересный синтаксис, поэтому я буду ждать больше ответов. – viraptor