Class: JsxRosetta::Routes::Lowering

Inherits:
Object
  • Object
show all
Defined in:
lib/jsx_rosetta/routes.rb

Instance Method Summary collapse

Instance Method Details

#lower(ast_file) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/jsx_rosetta/routes.rb', line 17

def lower(ast_file)
  routes = []
  ast_file.walk do |node|
    next unless node.is_a?(AST::JSXElement)
    next unless node.tag_name == "Route"

    path = extract_path(node)
    element_name = extract_element_name(node)
    next if path.nil? || element_name.nil?

    routes << IR::RouteEntry.new(path: path, element_name: element_name)
  end
  IR::RouteTree.new(routes: routes)
end