{"schemaVersion":1,"contentVersion":"3.4.0","id":"foundation.9","languages":{"javascript":{"id":"foundation.9","title":"Find a character boundary","moduleName":"Search and apply","tips":"","concept":"<p class=\"lead\">Predict whether a character search lands on or next to its destination.</p><p><strong>Before this lesson:</strong> Compose an edit; word and quotation lessons.</p><p>f finds a character to the right on the current line; t stops just before it. F searches left; T stops just after the found character. ; repeats the original search and comma reverses its direction. They do not cross lines. A count chooses a later occurrence, such as 2f,.</p><div class=\"pkeys\"><kbd>f</kbd> <kbd>t</kbd> <kbd>F</kbd> <kbd>T</kbd> <kbd>;</kbd> <kbd>,</kbd></div><h3>Example</h3><p>On “red, blue, green”, f, from r lands on the first comma; t, lands on d. From g, F, lands on the comma before green; T, lands on the following space. The target character survives a dt edit.</p><h4>Worked text</h4><pre class=\"lesson-example\">const message = \"red, blue, green\";</pre><p>Use Reset to try again.</p>","teaches":["char-search"],"introduces":["f","t","F","T",";",","],"constraints":[],"drills":[{"task":"Find the first vertical bar on this line. Finish on line 1, column 24, without changing the text.","hint":"This is a movement task. Keep the text unchanged and check the requested cursor destination.","mode":"jsx","start":"const message = \"draft | review | publish\";","startCursor":{"line":0,"ch":17},"paths":[{"keys":["f","|"],"tier":"idiomatic","technique":"char-search","core":["char-search"],"note":"Find lands on the character; till leaves it outside the motion. Direction is part of the choice."}],"kind":"navigate","land":{"line":0,"ch":23},"language":"javascript","evidence":"guided","canonicalKey":"foundation.9#0","canonicalFingerprint":"nznmw0"},{"task":"Stop just before the first vertical bar. Finish on line 1, column 23, without changing the text.","hint":"This is a movement task. Keep the text unchanged and check the requested cursor destination.","mode":"jsx","start":"const message = \"draft | review | publish\";","startCursor":{"line":0,"ch":17},"paths":[{"keys":["t","|"],"tier":"idiomatic","technique":"char-search","core":["char-search"],"note":"Find lands on the character; till leaves it outside the motion. Direction is part of the choice."}],"kind":"navigate","land":{"line":0,"ch":22},"language":"javascript","evidence":"guided","canonicalKey":"foundation.9#1","canonicalFingerprint":"nznmw1"},{"task":"Find the previous vertical bar to the left. Finish on line 1, column 33, without changing the text.","hint":"This is a movement task. Keep the text unchanged and check the requested cursor destination.","mode":"jsx","start":"const message = \"draft | review | publish\";","startCursor":{"line":0,"ch":34},"paths":[{"keys":["F","|"],"tier":"idiomatic","technique":"char-search","core":["char-search"],"note":"Find lands on the character; till leaves it outside the motion. Direction is part of the choice."}],"kind":"navigate","land":{"line":0,"ch":32},"language":"javascript","evidence":"guided","canonicalKey":"foundation.9#2","canonicalFingerprint":"nznmtc"},{"task":"Stop just after the previous vertical bar to the left. Finish on line 1, column 34, without changing the text.","hint":"This is a movement task. Keep the text unchanged and check the requested cursor destination.","mode":"jsx","start":"const message = \"draft | review | publish\";","startCursor":{"line":0,"ch":34},"paths":[{"keys":["T","|"],"tier":"idiomatic","technique":"char-search","core":["char-search"],"note":"Find lands on the character; till leaves it outside the motion. Direction is part of the choice."}],"kind":"navigate","land":{"line":0,"ch":33},"language":"javascript","evidence":"guided","canonicalKey":"foundation.9#3","canonicalFingerprint":"nznmtd"}]},"python":{"id":"foundation.9","title":"Find a character boundary","moduleName":"Search and apply","tips":"","concept":"<p class=\"lead\">Predict whether a character search lands on or next to its destination.</p><p><strong>Before this lesson:</strong> Compose an edit; word and quotation lessons.</p><p>f finds a character to the right on the current line; t stops just before it. F searches left; T stops just after the found character. ; repeats the original search and comma reverses its direction. They do not cross lines. A count chooses a later occurrence, such as 2f,.</p><div class=\"pkeys\"><kbd>f</kbd> <kbd>t</kbd> <kbd>F</kbd> <kbd>T</kbd> <kbd>;</kbd> <kbd>,</kbd></div><h3>Example</h3><p>On “red, blue, green”, f, from r lands on the first comma; t, lands on d. From g, F, lands on the comma before green; T, lands on the following space. The target character survives a dt edit.</p><h4>Worked text</h4><pre class=\"lesson-example\">message = \"red, blue, green\"</pre><p>Use Reset to try again.</p>","teaches":["char-search"],"introduces":["f","t","F","T",";",","],"constraints":[],"drills":[{"task":"Find the first vertical bar on this line. Finish on line 1, column 18, without changing the text.","hint":"This is a movement task. Keep the text unchanged and check the requested cursor destination.","mode":"python","start":"message = \"draft | review | publish\"","startCursor":{"line":0,"ch":11},"paths":[{"keys":["f","|"],"tier":"idiomatic","technique":"char-search","core":["char-search"],"note":"Find lands on the character; till leaves it outside the motion. Direction is part of the choice."}],"kind":"navigate","land":{"line":0,"ch":17},"language":"python","evidence":"guided","canonicalKey":"foundation.9#0","canonicalFingerprint":"nznmw0"},{"task":"Stop just before the first vertical bar. Finish on line 1, column 17, without changing the text.","hint":"This is a movement task. Keep the text unchanged and check the requested cursor destination.","mode":"python","start":"message = \"draft | review | publish\"","startCursor":{"line":0,"ch":11},"paths":[{"keys":["t","|"],"tier":"idiomatic","technique":"char-search","core":["char-search"],"note":"Find lands on the character; till leaves it outside the motion. Direction is part of the choice."}],"kind":"navigate","land":{"line":0,"ch":16},"language":"python","evidence":"guided","canonicalKey":"foundation.9#1","canonicalFingerprint":"nznmw1"},{"task":"Find the previous vertical bar to the left. Finish on line 1, column 27, without changing the text.","hint":"This is a movement task. Keep the text unchanged and check the requested cursor destination.","mode":"python","start":"message = \"draft | review | publish\"","startCursor":{"line":0,"ch":28},"paths":[{"keys":["F","|"],"tier":"idiomatic","technique":"char-search","core":["char-search"],"note":"Find lands on the character; till leaves it outside the motion. Direction is part of the choice."}],"kind":"navigate","land":{"line":0,"ch":26},"language":"python","evidence":"guided","canonicalKey":"foundation.9#2","canonicalFingerprint":"nznmtc"},{"task":"Stop just after the previous vertical bar to the left. Finish on line 1, column 28, without changing the text.","hint":"This is a movement task. Keep the text unchanged and check the requested cursor destination.","mode":"python","start":"message = \"draft | review | publish\"","startCursor":{"line":0,"ch":28},"paths":[{"keys":["T","|"],"tier":"idiomatic","technique":"char-search","core":["char-search"],"note":"Find lands on the character; till leaves it outside the motion. Direction is part of the choice."}],"kind":"navigate","land":{"line":0,"ch":27},"language":"python","evidence":"guided","canonicalKey":"foundation.9#3","canonicalFingerprint":"nznmtd"}]},"text":{"id":"foundation.9","title":"Find a character boundary","moduleName":"Search and apply","tips":"","concept":"<p class=\"lead\">Predict whether a character search lands on or next to its destination.</p><p><strong>Before this lesson:</strong> Compose an edit; word and quotation lessons.</p><p>f finds a character to the right on the current line; t stops just before it. F searches left; T stops just after the found character. ; repeats the original search and comma reverses its direction. They do not cross lines. A count chooses a later occurrence, such as 2f,.</p><div class=\"pkeys\"><kbd>f</kbd> <kbd>t</kbd> <kbd>F</kbd> <kbd>T</kbd> <kbd>;</kbd> <kbd>,</kbd></div><h3>Example</h3><p>On “red, blue, green”, f, from r lands on the first comma; t, lands on d. From g, F, lands on the comma before green; T, lands on the following space. The target character survives a dt edit.</p><h4>Worked text</h4><pre class=\"lesson-example\">Message: red, blue, green</pre><p>Use Reset to try again.</p>","teaches":["char-search"],"introduces":["f","t","F","T",";",","],"constraints":[],"drills":[{"task":"Find the first vertical bar on this line. Finish on line 1, column 16, without changing the text.","hint":"This is a movement task. Keep the text unchanged and check the requested cursor destination.","mode":"text/plain","start":"Message: draft | review | publish","startCursor":{"line":0,"ch":9},"paths":[{"keys":["f","|"],"tier":"idiomatic","technique":"char-search","core":["char-search"],"note":"Find lands on the character; till leaves it outside the motion. Direction is part of the choice."}],"kind":"navigate","land":{"line":0,"ch":15},"language":"text","evidence":"guided","canonicalKey":"foundation.9#0","canonicalFingerprint":"nznmw0"},{"task":"Stop just before the first vertical bar. Finish on line 1, column 15, without changing the text.","hint":"This is a movement task. Keep the text unchanged and check the requested cursor destination.","mode":"text/plain","start":"Message: draft | review | publish","startCursor":{"line":0,"ch":9},"paths":[{"keys":["t","|"],"tier":"idiomatic","technique":"char-search","core":["char-search"],"note":"Find lands on the character; till leaves it outside the motion. Direction is part of the choice."}],"kind":"navigate","land":{"line":0,"ch":14},"language":"text","evidence":"guided","canonicalKey":"foundation.9#1","canonicalFingerprint":"nznmw1"},{"task":"Find the previous vertical bar to the left. Finish on line 1, column 25, without changing the text.","hint":"This is a movement task. Keep the text unchanged and check the requested cursor destination.","mode":"text/plain","start":"Message: draft | review | publish","startCursor":{"line":0,"ch":26},"paths":[{"keys":["F","|"],"tier":"idiomatic","technique":"char-search","core":["char-search"],"note":"Find lands on the character; till leaves it outside the motion. Direction is part of the choice."}],"kind":"navigate","land":{"line":0,"ch":24},"language":"text","evidence":"guided","canonicalKey":"foundation.9#2","canonicalFingerprint":"nznmtc"},{"task":"Stop just after the previous vertical bar to the left. Finish on line 1, column 26, without changing the text.","hint":"This is a movement task. Keep the text unchanged and check the requested cursor destination.","mode":"text/plain","start":"Message: draft | review | publish","startCursor":{"line":0,"ch":26},"paths":[{"keys":["T","|"],"tier":"idiomatic","technique":"char-search","core":["char-search"],"note":"Find lands on the character; till leaves it outside the motion. Direction is part of the choice."}],"kind":"navigate","land":{"line":0,"ch":25},"language":"text","evidence":"guided","canonicalKey":"foundation.9#3","canonicalFingerprint":"nznmtd"}]}}}