Sha256: 60ab66cd9ca6264e288655142f71c03e92a55db8bd76d1f034e644e03fdba179

Contents?: true

Size: 934 Bytes

Versions: 1

Compression:

Stored size: 934 Bytes

Contents

# frozen_string_literal: true

require "anbt-sql-formatter/formatter"

module Whoop
  module Formatters
    module SqlFormatter
      # Format the SQL query
      # @param [String] sql The SQL query
      # @param [Boolean] colorize - colorize the SQL query (default: false)
      # @param [Boolean] explain - also run `EXPLAIN` on the query (default: false)
      # @return [String] The formatted SQL query
      def self.format(sql, colorize: false, explain: false)
        pretty_sql = generate_pretty_sql(sql)
        return pretty_sql unless colorize

        formatter = Rouge::Formatters::TerminalTruecolor.new
        lexer = Rouge::Lexers::SQL.new
        formatter.format(lexer.lex(pretty_sql))
      end

      def self.generate_pretty_sql(sql)
        rule = AnbtSql::Rule.new
        rule.indent_string = "  "
        formatter = AnbtSql::Formatter.new(rule)
        formatter.format(sql.dup)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
whoop-1.0.0 lib/whoop/formatters/sql_formatter.rb