From 1995658668e7b3751a5cfb190d13650aaadef226 Mon Sep 17 00:00:00 2001 From: Tom Robinson <tlrobinson@gmail.com> Date: Fri, 23 Dec 2016 16:12:22 -0800 Subject: [PATCH] Lint fixes --- .../src/metabase/lib/expressions/parser.js | 2 +- .../components/AggregationPopover.jsx | 2 +- .../expressions/TokenizedExpression.jsx | 41 +++++++++---------- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/frontend/src/metabase/lib/expressions/parser.js b/frontend/src/metabase/lib/expressions/parser.js index 7a9b8ad8978..d0ef13d0259 100644 --- a/frontend/src/metabase/lib/expressions/parser.js +++ b/frontend/src/metabase/lib/expressions/parser.js @@ -2,7 +2,7 @@ import { Lexer, Parser, getImage } from "chevrotain"; import _ from "underscore"; -import { formatFieldName, formatMetricName, formatExpressionName, formatAggregationName } from "../expressions"; +import { formatFieldName, formatExpressionName, formatAggregationName } from "../expressions"; import { VALID_AGGREGATIONS, diff --git a/frontend/src/metabase/query_builder/components/AggregationPopover.jsx b/frontend/src/metabase/query_builder/components/AggregationPopover.jsx index 34fff01b20f..f6467d10641 100644 --- a/frontend/src/metabase/query_builder/components/AggregationPopover.jsx +++ b/frontend/src/metabase/query_builder/components/AggregationPopover.jsx @@ -114,7 +114,7 @@ export default class AggregationPopover extends Component { } render() { - const { availableAggregations, tableMetadata, isNew } = this.props; + const { availableAggregations, tableMetadata } = this.props; const { choosingField, editingAggregation } = this.state; const aggregation = NamedClause.getContent(this.state.aggregation); diff --git a/frontend/src/metabase/query_builder/components/expressions/TokenizedExpression.jsx b/frontend/src/metabase/query_builder/components/expressions/TokenizedExpression.jsx index 11a3d0755fd..66163c0abab 100644 --- a/frontend/src/metabase/query_builder/components/expressions/TokenizedExpression.jsx +++ b/frontend/src/metabase/query_builder/components/expressions/TokenizedExpression.jsx @@ -2,18 +2,34 @@ import React, { Component, PropTypes } from "react"; import "./TokenizedExpression.css"; -import { parse } from "metabase/lib/expressions/parser"; - import cx from "classnames"; +export default class TokenizedExpression extends React.Component { + render() { + // TODO: use the Chevrotain parser or tokenizer + // let parsed = parse(this.props.source, this.props.parserInfo); + const parsed = parse(this.props.source); + return renderSyntaxTree(parsed); + } +} + +const renderSyntaxTree = (node, index) => + <span key={index} className={cx("Expression-node", "Expression-" + node.type, { "Expression-tokenized": node.tokenized })}> + {node.text != null ? + node.text + : node.children ? + node.children.map(renderSyntaxTree) + : null } + </span> + + function nextNonWhitespace(tokens, index) { while (index < tokens.length && /^\s+$/.test(tokens[++index])) { } return tokens[index]; } -function parsePartial(expressionString) { - // TODO: use the Chevrotain parser or tokenizer +function parse(expressionString) { let tokens = (expressionString || " ").match(/[a-zA-Z]\w*|"(?:[^\\"]+|\\(?:[bfnrtv"\\/]|u[0-9a-fA-F]{4}))*"|\(|\)|\d+|\s+|[*/+-]|.+/g); let root = { type: "group", children: [] }; @@ -90,20 +106,3 @@ function parsePartial(expressionString) { } return root; } - -const renderSyntaxTree = (node, index) => - <span key={index} className={cx("Expression-node", "Expression-" + node.type, { "Expression-tokenized": node.tokenized })}> - {node.text != null ? - node.text - : node.children ? - node.children.map(renderSyntaxTree) - : null } - </span> - -export default class TokenizedExpression extends React.Component { - render() { - // let parsed = parse(this.props.source, this.props.parserInfo); - const parsed = parsePartial(this.props.source); - return renderSyntaxTree(parsed); - } -} -- GitLab