module DrgDSL

Constants

VERSION

Public Class Methods

json(input) click to toggle source

@param input [String] @return [String] JSON representation of the AST

# File lib/drgdsl.rb, line 24
def self.json(input)
  Oj.dump parse(input).to_hash, mode: :compat
end
parse(input) click to toggle source

@param input [String] @return [Ast::Node]

# File lib/drgdsl.rb, line 18
def self.parse(input)
  Parser.parse(input)
end
pretty_print(input, **options) click to toggle source

@param input [String] @param remove_redundant_parens [Boolean] (false) @param multiline [Boolean] (true) pass false to print the expression

without any newlines.

@param output_format [Symbol] (:string) also supports :html and :bash.

@return [String] pretty printed DrgDSL expression

@example Pretty printing with various options

input = "(pdx in table (a  )) and (drg (f46) or (drg (g22) and los < 3))"
DrgDSL.pretty_print(input)
# =>
#     (
#       PDX IN TABLE (A)
#     )
#     AND (
#       DRG (F46)
#       OR (
#         DRG (G22)
#         AND LOS < 3
#       )
#     )

DrgDSL.pretty_print(input, remove_redundant_parens: true)
# =>
#     PDX IN TABLE (A)
#     AND (
#       DRG (F46)
#       OR DRG (G22)
#       AND LOS < 3
#     )

DrgDSL.pretty_print(input, remove_redundant_parens: true, multiline: false)
# => PDX IN TABLE (A) AND (DRG (F46) OR DRG (G22) AND LOS < 3)

DrgDSL.pretty_print(input, remove_redundant_parens: true, output_format: html)
# =>
#     <pre>
#     <span class="drgdsl-variable">PDX</span> <span class="drgdsl-keyword">IN TABLE</span> (<span class="drgdsl-table">A</span>)
#     <span class="drgdsl-keyword">AND</span> (
#       <span class="drgdsl-variable">DRG</span> (<span class="drgdsl-drg">F46</span>)
#       <span class="drgdsl-keyword">OR</span> <span class="drgdsl-variable">DRG</span> (<span class="drgdsl-drg">G22</span>)
#       <span class="drgdsl-keyword">AND</span> <span class="drgdsl-variable">LOS</span> <span class="drgdsl-op">&lt;</span> <span class="drgdsl-constant">3</span>
#     )
#     </pre>
# File lib/drgdsl.rb, line 74
def self.pretty_print(input, **options)
  PrettyPrinter.pretty_print(input, **options)
end