Module: Spanner::Translator::CLI

Defined in:
lib/spanner/translator/cli.rb

Overview

CLI methods for calling the translator

Class Method Summary collapse

Class Method Details

.process_check_rule(rule_class, code) ⇒ Object



41
42
43
44
45
46
# File 'lib/spanner/translator/cli.rb', line 41

def process_check_rule(rule_class, code)
  source = RuboCop::AST::ProcessedSource.new(code, 2.7)
  rule = rule_class.new(nil)
  source.ast.each_node { |n| rule.process(n) }
  rule.assert!
end

.process_code(code, rule_classes: Rules::Translation::ORDERED_SCHEMA_RULES, options: {}) ⇒ Object

process code translation for only the schema related rules



23
24
25
26
27
28
29
30
# File 'lib/spanner/translator/cli.rb', line 23

def process_code(code, rule_classes: Rules::Translation::ORDERED_SCHEMA_RULES, options: {})
  rule_classes.each do |rule_class|
    code = process_rule(Spanner::Translator::Rules::Translation.const_get(rule_class), code, options:)
  end
  return code unless rule_classes == Rules::Translation::ORDERED_SCHEMA_RULES

  formatted_create_table(code)
end

.process_code!(code, check_classes: Rules::Check::ORDERED_CHECK_RULES, rule_classes: Rules::Translation::ORDERED_SCHEMA_RULES, options: {}) ⇒ Object

process code translation, raising errors if a CheckRule fails.



12
13
14
15
16
17
18
19
20
# File 'lib/spanner/translator/cli.rb', line 12

def process_code!(code,
                  check_classes: Rules::Check::ORDERED_CHECK_RULES,
                  rule_classes: Rules::Translation::ORDERED_SCHEMA_RULES, options: {})
  check_classes.each do |rule_class|
    process_check_rule(Spanner::Translator::Rules::Check.const_get(rule_class), code)
  end

  process_code(code, rule_classes:, options:)
end

.process_rule(rule_class, code, options: {}) ⇒ Object



32
33
34
35
36
37
38
39
# File 'lib/spanner/translator/cli.rb', line 32

def process_rule(rule_class, code, options: {})
  source = RuboCop::AST::ProcessedSource.new(code, 2.7)
  source_buffer = source.buffer
  rewriter = Parser::Source::TreeRewriter.new(source_buffer)
  rule = rule_class.new(rewriter, options:)
  source.ast.each_node { |n| rule.process(n) }
  rewriter.process
end