diff options
Diffstat (limited to 'prolog/common.py')
-rw-r--r-- | prolog/common.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/prolog/common.py b/prolog/common.py new file mode 100644 index 0000000..afba98f --- /dev/null +++ b/prolog/common.py @@ -0,0 +1,21 @@ +# coding=utf-8 + +import operator +import prolog.engine +from server.hints import Hint, HintSequence + +hint_defs = { + 'no_hint': HintSequence('no_hint', 4), + 'test_results': Hint('test_results'), + 'syntax_error': Hint('syntax_error'), +} + +def hint(program): + # Check program for syntax errors. + engine_id, output = prolog.engine.create(code=program) + if engine_id is not None: + prolog.engine.destroy(engine_id) + if 'error' in map(operator.itemgetter(0), output): + errors_msg = '\n'.join(['{}: {}'.format(m_type, m_text) for m_type, m_text in output]) + return [{'id': 'syntax_error', 'args': {'messages': errors_msg}}] + return [] |