diff options
Diffstat (limited to 'lambda-calcul/javascript/src/client.js')
| -rw-r--r-- | lambda-calcul/javascript/src/client.js | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lambda-calcul/javascript/src/client.js b/lambda-calcul/javascript/src/client.js index d046187..88ea253 100644 --- a/lambda-calcul/javascript/src/client.js +++ b/lambda-calcul/javascript/src/client.js @@ -1,11 +1,27 @@ const axios = require('axios'); -const newClient = ({ playerName, challengerURL }) => { +const defaultInterpreter = require('./interpreter'); +const defaultParser = require('./parser'); +const defaultPrinter = require('./printer'); + +const newClient = ({ + challengerURL, + interpreter = defaultInterpreter, + parser = defaultParser, + playerName, + printer = defaultPrinter, +}) => { const nextChallenge = (token) => axios ({ url: `${challengerURL}/api/challenge?token=${token}`, }) .then(({ data: { expr } }) => expr); + const solve = (challenge) => { + const parsedExpression = parser.parse(challenge); + const evaluatedExpression = interpreter.evaluate(parsedExpression); + return printer.print(evaluatedExpression); + } + const start = () => axios({ method: 'POST', url: `${challengerURL}/api/register`, @@ -16,6 +32,7 @@ const newClient = ({ playerName, challengerURL }) => { return { nextChallenge, + solve, start, }; }; |
