TextExpander 5.0 and TextExpander 3.5 add support for JavaScript snippets. JavaScript includes a very nice math library, so in addition to having snippets which run on both OS X and iOS, there are a number of snippets which are easier to write. Here are some examples of snippets you can make by setting the Content: menu of a new snippet to JavaScript, and pasting the following into the editor:
Calculate Body Mass Index (BMI)
// Body Mass Index (BMI) from height and weight var height = Number(%filltext:name=m:default=1.64:width=5%);// meters var weight = Number(%filltext:name=kg:default=57.5:width=5%);// kilograms "Body mass index for subject " + height.toFixed(2) + "m tall weighing " + weight.toFixed(2) + "kg is: " + Number(weight / (height * height)).toFixed(2);
Compute Hourly Rate Total
// Compute a charge by multiplying hours * hourly rate var hours = Number(%filltext:name=Hours:default=1.5:width=5%); var hourlyrate = Number(%filltext:name=Rate:default=30:width=5%); "Billing for " + hours + " hours at $" + hourlyrate + " for a total of $" + (hours * hourlyrate);
JavaScript snippets can include fill-ins. Here's a quick calculator which can evaluate any valid JavaScript expression:
Quick Calculator
// Quick Calculator -- enter a valid JavaScript expression %filltext:name=equation:default=2 + 3%;
Here is a more elaborate fill-in example used to tally a survey:
Assess Depression on PHQ-9 Depression Scale
// Depression scale
TextExpander.appendOutput("PHQ-9 Depression scale\n" +
"In last 2 weeks, how often have you experienced:\n\n" +
" (Score for each answer: 0-'not at all' 1-'several days' " +
" 2-'more than half the days' 3-'nearly every day')\n" +
"1- little interest or pleasure in activities? %fillpopup:name=1:default=0:1:2:3%\n" +
"2- feeling down, depressed, or hopeless? %fillpopup:name=2:default=0:1:2:3%\n" +
"3- trouble falling asleep, staying asleep, or sleeping too much? %fillpopup:name=3:default=0:1:2:3%\n" +
"4- feeling tired or having little energy? %fillpopup:name=4:default=0:1:2:3%\n" +
"5- poor appetite or overeating? %fillpopup:name=5:default=0:1:2:3%\n" +
"6- feeling bad about self, feeling failure, or let self or others down? %fillpopup:name=6:default=0:1:2:3%\n" +
"7- trouble concentrating, reading newspaper, or TV? %fillpopup:name=7:default=0:1:2:3%\n" +
"8- moving or speaking so slowly that other people could have noticed? Or the opposite, being so fidgety or restless that you have been moving around a lot more than usual? %fillpopup:name=8:default=0:1:2:3%\n" +
"9- thoughts that you would be better off dead or of hurting yourself in some way? %fillpopup:name=9:default=0:1:2:3%\n\n");
var count = 0;
var sum = 0;
for (count = 1; count <= 9; count++) {
var fieldVal = Number(TextExpander.filledValues["" + count]);
if (fieldVal != NaN) {
sum += fieldVal;
}
else break;
}
TextExpander.appendOutput("Total: " + sum + "\n" +
" Greater than 10 => major depression\n" +
" Greater than 20 => severe depression\n");
Have a favorite JavaScript? Send it in and include permission so we can share it.