class RbsTsGenerator::TypeScriptVisitor

Constants

INSTANCE

Private Instance Methods

binary(node, seed) click to toggle source
# File lib/generators/rbs_ts/type_script_visitor.rb, line 5
def binary(node, seed)
  visit(node.right, visit(node.left, seed) + ' + ')
end
nary(node, seed) click to toggle source
# File lib/generators/rbs_ts/type_script_visitor.rb, line 9
def nary(node, seed)
  last_child = node.children.last
  node.children.inject(seed) { |s, c|
    string = visit(c, s)
    string << '|' unless last_child == c
    string
  }
end
terminal(node, seed) click to toggle source
# File lib/generators/rbs_ts/type_script_visitor.rb, line 18
def terminal(node, seed)
  seed + node.left.to_s.to_json
end
variable(node, seed) click to toggle source
# File lib/generators/rbs_ts/type_script_visitor.rb, line 29
def variable(node, seed)
  if node.left.to_s[0] == '*'
    seed + '(' + node.left.to_s[1..-1] + ' ?? "")'
  else
    v = node.left.to_s[1..-1]
    seed + "(() => { if (#{v}) return #{v}; throw #{v.to_json} })()"
  end
end
visit_GROUP(node, seed) click to toggle source
# File lib/generators/rbs_ts/type_script_visitor.rb, line 22
def visit_GROUP(node, seed)
  # TODO: support nested level 2
  visit(node.left, seed.dup << '(() => { try { return ') << ' } catch { return "" } })()'
end
visit_SYMBOL(n, seed) click to toggle source
# File lib/generators/rbs_ts/type_script_visitor.rb, line 27
def visit_SYMBOL(n, seed);  variable(n, seed); end