|
|
@@ -350,11 +350,43 @@ function toListItem(str, i) {
|
|
|
|
|
|
//TODO: $minute
|
|
|
|
|
|
- //TODO: $mod
|
|
|
+ expressions.ModExpression.prototype.getMarkdown = function(level) {
|
|
|
+ var indent = getIndentStr(level),
|
|
|
+ str = indent + "get remainder of (modulo):\n";
|
|
|
+ var names = ["numerator", "denominator"];
|
|
|
+ names.forEach(function(name, i) {
|
|
|
+ str += indent + INDENT_STR + i + ". " + name;
|
|
|
+ var opDocStr = this.operands[i].getMarkdown(level + 2).trimRight();
|
|
|
+ if (opDocStr.indexOf("\n") === -1 && opDocStr.length < MAX_LINE_LEN) { // is one line
|
|
|
+ str += " is " + opDocStr.trimLeft() + "\n";
|
|
|
+ } else {
|
|
|
+ str += ":\n" + toListItem(opDocStr) + "\n";
|
|
|
+ }
|
|
|
+ }, this);
|
|
|
+ return str;
|
|
|
+ };
|
|
|
|
|
|
//TODO: $month
|
|
|
|
|
|
- //TODO: $multiply
|
|
|
+ expressions.MultiplyExpression.prototype.getMarkdown = function(level) {
|
|
|
+ var str = "",
|
|
|
+ indent = getIndentStr(level),
|
|
|
+ opStrs = this.operands.map(function(op) {
|
|
|
+ return op.getMarkdown(level + 1).trimRight();
|
|
|
+ }),
|
|
|
+ isOneLine = opStrs.length <= 2 && opStrs.every(function(opStr, i) {
|
|
|
+ return opStr.indexOf("\n") === -1;
|
|
|
+ });
|
|
|
+ if (isOneLine && indent.length + opStrs.join(" + ").length < MAX_LINE_LEN) {
|
|
|
+ str += indent + "( " + opStrs.map(Function.prototype.call.bind(String.prototype.trimLeft)).join(" + ") + " )\n";
|
|
|
+ } else {
|
|
|
+ str += indent + "multiply:\n";
|
|
|
+ for (var i = 0, l = this.operands.length; i < l; i++) {
|
|
|
+ str += toListItem(opStrs[i], i) + "\n";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return str;
|
|
|
+ };
|
|
|
|
|
|
expressions.NotExpression.prototype.getMarkdown = function(level) {
|
|
|
var indent = getIndentStr(level),
|