Skip to content
This repository has been archived by the owner on May 11, 2021. It is now read-only.

Commit

Permalink
Add more specific types to fix 2 exercises on mobile
Browse files Browse the repository at this point in the history
Summary:
Points, Lines and Planes & Caesar Cipher Decryption were both unanswerable on
mobile, because they both want something other than an equasion or a number.
With more specific grammars, (and in conjunction with a recent update to the
iOS app), they can now be answered!

These are the only two exercises that I found which were unanswerable for
grammar-related reasons, and I don't think there are any more, at least within
khan-exercises.

Test Plan:
Fire up khan-exercises locally (see readme), and try out both affected
exercises. Verify that they are still answerable on the web.

Reviewers: charlie, emily

Reviewed By: emily

Subscribers: andy, bryan, #ios

Differential Revision: https://phabricator.khanacademy.org/D22360
  • Loading branch information
jaredly committed Oct 13, 2015
1 parent 52402da commit 4e8bdb3
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 23 deletions.
2 changes: 1 addition & 1 deletion exercises/caesar_cipher_decryption.html
Expand Up @@ -82,7 +82,7 @@
<center><strong>Original Alphabet</strong></center>
</div>

<div class="solution" data-type="text">
<div class="solution" data-type="lowers">
<var>M</var>
</div>
</div>
Expand Down
38 changes: 19 additions & 19 deletions exercises/points_lines_and_planes.html
Expand Up @@ -91,27 +91,27 @@
</p>

<div class="solution" data-type="set">
<div class="set-sol" data-type="text"><var>A + B + E</var></div>
<div class="set-sol" data-type="text"><var>A + C + E</var></div>
<div class="set-sol" data-type="text"><var>A + E + B</var></div>
<div class="set-sol" data-type="text"><var>A + E + C</var></div>
<div class="set-sol" data-type="text"><var>B + A + E</var></div>
<div class="set-sol" data-type="text"><var>B + C + E</var></div>
<div class="set-sol" data-type="text"><var>B + E + A</var></div>
<div class="set-sol" data-type="text"><var>B + E + C</var></div>
<div class="set-sol" data-type="text"><var>C + A + E</var></div>
<div class="set-sol" data-type="text"><var>C + B + E</var></div>
<div class="set-sol" data-type="text"><var>C + E + A</var></div>
<div class="set-sol" data-type="text"><var>C + E + B</var></div>
<div class="set-sol" data-type="text"><var>E + A + B</var></div>
<div class="set-sol" data-type="text"><var>E + A + C</var></div>
<div class="set-sol" data-type="text"><var>E + B + A</var></div>
<div class="set-sol" data-type="text"><var>E + B + C</var></div>
<div class="set-sol" data-type="text"><var>E + C + A</var></div>
<div class="set-sol" data-type="text"><var>E + C + B</var></div>
<div class="set-sol" data-type="caps"><var>A + B + E</var></div>
<div class="set-sol" data-type="caps"><var>A + C + E</var></div>
<div class="set-sol" data-type="caps"><var>A + E + B</var></div>
<div class="set-sol" data-type="caps"><var>A + E + C</var></div>
<div class="set-sol" data-type="caps"><var>B + A + E</var></div>
<div class="set-sol" data-type="caps"><var>B + C + E</var></div>
<div class="set-sol" data-type="caps"><var>B + E + A</var></div>
<div class="set-sol" data-type="caps"><var>B + E + C</var></div>
<div class="set-sol" data-type="caps"><var>C + A + E</var></div>
<div class="set-sol" data-type="caps"><var>C + B + E</var></div>
<div class="set-sol" data-type="caps"><var>C + E + A</var></div>
<div class="set-sol" data-type="caps"><var>C + E + B</var></div>
<div class="set-sol" data-type="caps"><var>E + A + B</var></div>
<div class="set-sol" data-type="caps"><var>E + A + C</var></div>
<div class="set-sol" data-type="caps"><var>E + B + A</var></div>
<div class="set-sol" data-type="caps"><var>E + B + C</var></div>
<div class="set-sol" data-type="caps"><var>E + C + A</var></div>
<div class="set-sol" data-type="caps"><var>E + C + B</var></div>

<div class="input-format">
<p>Plane <span class="entry" data-type="text"></span></p>
<p>Plane <span class="entry" data-type="caps"></span></p>
</div>
</div>
<div class="hints">
Expand Down
49 changes: 46 additions & 3 deletions utils/answer-types.js
Expand Up @@ -125,21 +125,64 @@ function addExamplesToInput($input, examples) {
*/

Khan.answerTypes = $.extend(Khan.answerTypes, {
/*
* letters answer type. Inherits from `text` type, with a grammar hint of
* `letters`
*/
letters: {
setupFunctional: function(solutionarea, solutionText, solutionData) {
return Khan.answerTypes.text.setupFunctional(solutionarea, solutionText, solutionData, 'letters');
},
createValidatorFunctional: function(correct, options) {
return Khan.answerTypes.text.createValidatorFunctional(correct, options);
},
},

/*
* lowers answer type. Inherits from `text` type, with a grammar hint of
* `lowers`. Intended for lower-case answers.
*/
lowers: {
setupFunctional: function(solutionarea, solutionText, solutionData) {
return Khan.answerTypes.text.setupFunctional(solutionarea, solutionText, solutionData, 'lowers');
},
createValidatorFunctional: function(correct, options) {
return Khan.answerTypes.text.createValidatorFunctional(correct, options);
},
},

/*
* caps answer type. Inherits from `text` type, with a grammar hint of
* `caps`
*/
caps: {
setupFunctional: function(solutionarea, solutionText, solutionData) {
return Khan.answerTypes.text.setupFunctional(solutionarea, solutionText, solutionData, 'caps');
},
createValidatorFunctional: function(correct, options) {
return Khan.answerTypes.text.createValidatorFunctional(correct, options);
},
},

/*
* text answer type
*
* Displays a simple text box, and performs direct string matching on the
* value typed in an the answer provided
*
* solutionGrammar is a string used by the mobile app to determine what
* characters should be allowed.
*/
text: {
setupFunctional: function(solutionarea, solutionText, solutionData) {
setupFunctional: function(solutionarea, solutionText, solutionData, solutionGrammar) {
solutionGrammar = solutionGrammar || 'text';
// Add a text box
var input;
if (window.Modernizr && Modernizr.touchevents) {
// special flag for iOS devices
input = $('<input type="text" autocapitalize="off">');
input = $('<input data-solution-grammar="' + solutionGrammar + '" type="text" autocapitalize="off">');
} else {
input = $('<input type="text">');
input = $('<input data-solution-grammar="' + solutionGrammar + '" type="text">');
}
$(solutionarea).append(input);

Expand Down

0 comments on commit 4e8bdb3

Please sign in to comment.