def scan_purelang(content, filename): content = content.expandtabs(8) tokenizer = ruby_lexer.RubyLexer(content) parser = ruby_parser.Parser(tokenizer, "Ruby") parse_tree = parser.parse() tree = parser_cix.produce_elementTree_cix(parse_tree, filename, "Ruby", "Ruby") rails_migration_class_nodes = parser.rails_migration_class_tree() if rails_migration_class_nodes: blob_node = tree.getchildren()[0].getchildren()[0] for parse_tree_node in rails_migration_class_nodes: assert parse_tree_node.class_name == "Class" parser_cix.common_module_class_cix(parse_tree_node, blob_node, class_ref_fn=None, attributes="__fabricated__") # parser_cix.class_etree_cix(rails_migration_class_tree, blob_node) return tree
def scan_multilang(tokens, module_elem): """Build the Ruby module CIX element tree. "tokens" is a generator of UDL tokens for this UDL-based multi-lang document. "module_elem" is the <module> element of a CIX element tree on which the Ruby module should be built. This should return a tuple of: * the list of the CSL tokens in the token stream, * whether or not the document contains any Ruby tokens (style UDL_SSL...) """ tokenizer = ruby_lexer.RubyMultiLangLexer(tokens) parser = ruby_parser.Parser(tokenizer, "RHTML") parse_tree = parser.parse() parser_cix.produce_elementTree_contents_cix(parse_tree, module_elem) csl_tokens = tokenizer.get_csl_tokens() return csl_tokens, tokenizer.has_ruby_code()