Add expression mode for Haskell and JS
This commit is contained in:
parent
4b73ece01c
commit
d16942c0a7
5 changed files with 38 additions and 10 deletions
|
@ -71,12 +71,13 @@ Options are optionally set in `options`, which is a semicolon-delimited list of
|
|||
|
||||
For JavaScript:
|
||||
- `harmony` enables harmony features (`--harmony` on node)
|
||||
- `e` prints the result of evaluating the code
|
||||
|
||||
For Python:
|
||||
- `2` runs Python 2 instead of Python 3
|
||||
|
||||
For Haskell:
|
||||
- None
|
||||
- `e` evaluates a single expression instead of a module
|
||||
|
||||
For Pascal:
|
||||
- None
|
||||
|
|
|
@ -1,2 +1,6 @@
|
|||
if [ "$EVAL_EXPR" = "true" ]; then
|
||||
ghc -e "$1"
|
||||
else
|
||||
echo "$1" > program.hs
|
||||
ghc -O0 -j +RTS -A128m -n2m -RTS program.hs >/dev/null && ./program
|
||||
fi
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
if [ "$EVAL_HARMONY" = "true" ]; then
|
||||
node --harmony -e "$1"
|
||||
if [ "$EVAL_EXPR" = "true" ]; then
|
||||
flag="-p"
|
||||
else
|
||||
node -e "$1"
|
||||
flag="-e"
|
||||
fi
|
||||
|
||||
if [ "$EVAL_HARMONY" = "true" ]; then
|
||||
node --harmony "$flag" "$1"
|
||||
else
|
||||
node "$flag" "$1"
|
||||
fi
|
||||
|
|
|
@ -4,9 +4,20 @@ class Haskell extends Language {
|
|||
constructor() {
|
||||
super('haskell', {
|
||||
highlight: 'hs',
|
||||
aliases: ['haskell', 'hs']
|
||||
aliases: ['haskell', 'hs'],
|
||||
options: {
|
||||
e: () => ''
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
runWith(options) {
|
||||
if (options.has('e')) {
|
||||
return { id: this.id, env: { EVAL_EXPR: 'true' } };
|
||||
}
|
||||
|
||||
return super.runWith(options);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Haskell;
|
||||
|
|
|
@ -6,17 +6,23 @@ class JavaScript extends Language {
|
|||
highlight: 'js',
|
||||
aliases: ['javascript', 'js'],
|
||||
options: {
|
||||
harmony: () => ''
|
||||
harmony: () => '',
|
||||
e: () => ''
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
runWith(options) {
|
||||
const ret = { id: this.id, env: {} };
|
||||
if (options.has('harmony')) {
|
||||
return { id: this.id, env: { EVAL_HARMONY: 'true' } };
|
||||
ret.env.EVAL_HARMONY = 'true';
|
||||
}
|
||||
|
||||
return { id: this.id, env: {} };
|
||||
if (options.has('e')) {
|
||||
ret.env.EVAL_EXPR = 'true';
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue