Mercurial > js4py
changeset 154:ee0bf994ab95 core-javascript.closure-exercises
Add remove_answers.py script (and clean up closure-exercises.py).
| author | jf3243 |
|---|---|
| date | Wed, 02 Nov 2011 17:27:39 +0000 |
| parents | e8007df28827 |
| children | c14a95ed1f58 |
| files | core-javascript/core-javascript-work/closure-exercises.js core-javascript/py/remove_answers.py |
| diffstat | 2 files changed, 84 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/core-javascript/core-javascript-work/closure-exercises.js Wed Nov 02 14:04:18 2011 +0000 +++ b/core-javascript/core-javascript-work/closure-exercises.js Wed Nov 02 17:27:39 2011 +0000 @@ -4,12 +4,11 @@ { var answer; - // Hint: Uncomment the next line. - // answer = function(){ return 1; }; - + // start answer = function(){ return 1; }; + // stop assert( answer() === 1 ); }); @@ -21,10 +20,11 @@ var answer; - // Define answer here. + // start answer = function(){ return 1; }; + // stop return answer; }; @@ -42,10 +42,11 @@ var answer; - // Define answer here. + // start answer = function(){ return 1; }; + // stop return answer; }; @@ -60,10 +61,11 @@ var answer; - // Define answer here. + // start answer = function(){ return n; }; + // stop return answer; }; @@ -78,9 +80,11 @@ { var outer_function = function(n){ + // start return function(){ - return n; // ANSWER + return n; }; + // stop }; assert( outer_function(1)() === 1 ); @@ -143,12 +147,13 @@ var ddd = function(aaa, bbb){ return { + // start aaa: aaa, bbb: bbb + // stop }; }; - var obj = ddd(1, 2); assert( obj.aaa === 1 ); @@ -162,6 +167,7 @@ var get_set_factory = function(){ + // start var value; var get = function(){ @@ -171,6 +177,7 @@ var set = function(new_value){ value = new_value; }; + // stop return { get : get,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core-javascript/py/remove_answers.py Wed Nov 02 17:27:39 2011 +0000 @@ -0,0 +1,69 @@ +'''Remove answers from exercises file.''' + + + +import sys + + +NORMAL, SKIPPING, ERROR = range(3) +LINE, SOMETHING, START, STOP = range(4) + + + + +lookup = {} + +# All other states are an error. +lookup[NORMAL, LINE] = NORMAL +lookup[NORMAL, SOMETHING] = NORMAL +lookup[NORMAL, START] = SKIPPING +lookup[SKIPPING, LINE] = SKIPPING +# lookup[NORMAL, STOP] = ERROR +# lookup[SKIPPING, SOMETHING] = ERROR +lookup[SKIPPING, STOP] = NORMAL + + +filename = 'core-javascript-work/closure-exercises.js' + +write = sys.stdout.write +with open(filename) as lines: + + new_state = NORMAL + + for lineno, line in enumerate(lines): + + state = new_state + + + stripped_line = line.strip() + + if stripped_line.startswith('something'): + event = SOMETHING + + elif stripped_line == '// start': + event = START + + elif stripped_line == '// stop': + event = STOP + + else: + event = LINE + + new_state = lookup[state, event] + + if event == SOMETHING: + pass + + elif event == STOP: + pass + + elif event == START: + indent = len(line) - len(line.lstrip()) + spaces = line[0:indent] + write(spaces + '// Please write your answer here.\n') + + elif state == SKIPPING: + pass + + elif event == LINE: + write(line)
