UNPKG

ember-material-icons

Version:

Google Material icons for your ember-cli app

264 lines (230 loc) 5.14 kB
// Statements function buildMustache(path, params?, hash?, raw?, loc?) { return { type: "MustacheStatement", path: buildPath(path), params: params || [], hash: hash || buildHash([]), escaped: !raw, loc: buildLoc(loc) }; } function buildBlock(path, params?, hash?, program?, inverse?, loc?) { return { type: "BlockStatement", path: buildPath(path), params: params ? params.map(buildPath) : [], hash: hash || buildHash([]), program: program || null, inverse: inverse || null, loc: buildLoc(loc) }; } function buildElementModifier(path, params?, hash?, loc?) { return { type: "ElementModifierStatement", path: buildPath(path), params: params || [], hash: hash || buildHash([]), loc: buildLoc(loc) }; } function buildPartial(name, params, hash, indent) { return { type: "PartialStatement", name: name, params: params || [], hash: hash || buildHash([]), indent: indent }; } function buildComment(value, loc?) { return { type: "CommentStatement", value: value, loc: buildLoc(loc) }; } function buildMustacheComment(value, loc?) { return { type: "MustacheCommentStatement", value: value, loc: buildLoc(loc) }; } function buildConcat(parts) { return { type: "ConcatStatement", parts: parts || [] }; } // Nodes function buildElement(tag, attributes?, modifiers?, children?, comments?, loc?) { // this is used for backwards compat prior to `comments` being added to the AST if (!Array.isArray(comments)) { loc = comments; comments = []; } return { type: "ElementNode", tag: tag || "", attributes: attributes || [], blockParams: [], modifiers: modifiers || [], comments: comments || [], children: children || [], loc: buildLoc(loc) }; } function buildAttr(name, value, loc?) { return { type: "AttrNode", name: name, value: value, loc: buildLoc(loc) }; } function buildText(chars?, loc?) { return { type: "TextNode", chars: chars || "", loc: buildLoc(loc) }; } // Expressions function buildSexpr(path, params?, hash?, loc?) { return { type: "SubExpression", path: buildPath(path), params: params || [], hash: hash || buildHash([]), loc: buildLoc(loc) }; } function buildPath(original, loc?) { if (typeof original !== 'string') return original; let parts = original.split('.'); if (parts[0] === 'this') { parts[0] = null; } return { type: "PathExpression", original, parts, data: false, loc: buildLoc(loc) }; } function buildString(value) { return { type: "StringLiteral", value: value, original: value }; } function buildBoolean(value) { return { type: "BooleanLiteral", value: value, original: value }; } function buildNumber(value) { return { type: "NumberLiteral", value: value, original: value }; } function buildNull() { return { type: "NullLiteral", value: null, original: null }; } function buildUndefined() { return { type: "UndefinedLiteral", value: undefined, original: undefined }; } // Miscellaneous function buildHash(pairs?) { return { type: "Hash", pairs: pairs || [] }; } function buildPair(key, value) { return { type: "HashPair", key: key, value: value }; } function buildProgram(body?, blockParams?, loc?) { return { type: "Program", body: body || [], blockParams: blockParams || [], loc: buildLoc(loc) }; } function buildSource(source?) { return source || null; } function buildPosition(line, column) { return { line: (typeof line === 'number') ? line : null, column: (typeof column === 'number') ? column : null }; } function buildLoc(loc: { source: any, start: any, end: any }): { source: any, start: any, end: any }; function buildLoc(startLine, startColumn, endLine?, endColumn?, source?): { source: any, start: any, end: any }; function buildLoc(...args) { if (args.length === 1) { let loc = args[0]; if (typeof loc === 'object') { return { source: buildSource(loc.source), start: buildPosition(loc.start.line, loc.start.column), end: buildPosition(loc.end.line, loc.end.column) }; } else { return null; } } else { let [ startLine, startColumn, endLine, endColumn, source ] = args; return { source: buildSource(source), start: buildPosition(startLine, startColumn), end: buildPosition(endLine, endColumn) }; } } export default { mustache: buildMustache, block: buildBlock, partial: buildPartial, comment: buildComment, mustacheComment: buildMustacheComment, element: buildElement, elementModifier: buildElementModifier, attr: buildAttr, text: buildText, sexpr: buildSexpr, path: buildPath, string: buildString, boolean: buildBoolean, number: buildNumber, undefined: buildUndefined, null: buildNull, concat: buildConcat, hash: buildHash, pair: buildPair, program: buildProgram, loc: buildLoc, pos: buildPosition };