コード例 #1
0
    def test_load_transforms(self):
        ttc = TreeTransformController()
        ttc.ast_transformer_manager.get_ast_transformers(
            "ctree.transformations")

        assert_greater(ttc.ast_transformer_manager.count(), 1)
        assert_is_instance(ttc.ast_transformer_manager[0], AstTransformerItem)
コード例 #2
0
    def test_apply_transforms(self):
        ttc = TreeTransformController()
        ttc.ast_transformer_manager.get_ast_transformers(
            "ctree.transformations")
        ttc.ast_tree_manager.new_item_from_file("sample.py")

        new_ast_item = ttc.apply_transform(0, 0)

        assert_is_instance(new_ast_item, AstTreeItem)
        assert_equal(new_ast_item, ttc.ast_tree_manager[1])

        assert_is_instance(new_ast_item.parent_link, AstLink)
        assert_equal(new_ast_item.parent_link.parent_ast_tree,
                     ttc.ast_tree_manager[0])
コード例 #3
0
    def test_load_ast(self):
        ttc = TreeTransformController()
        ttc.ast_tree_manager.new_item_from_file("sample.py")

        assert_equal(ttc.ast_tree_manager.count(), 1)
        assert_is_instance(ttc.ast_tree_manager[0], AstTreeItem)
コード例 #4
0
    def test_create(self):
        ttc = TreeTransformController()

        assert_is_instance(ttc, TreeTransformController)
        assert_is_instance(ttc.ast_tree_manager, AstTreeManager)
        assert_is_instance(ttc.ast_transformer_manager, AstTransformerManager)
コード例 #5
0
ファイル: main.py プロジェクト: ucb-sejits/ast_tool_box
    def __init__(self, file_name=None, mode='exec', packages=None, width=None, height=None):
        """ Constructor
            
            AST browser windows that displays the Abstract Syntax Tree
            of source_text code.
            
            The source_text can be given as text in the source_text parameter, or
            can be read from a file. The file_name parameter overrides
            the source_text parameter.
            
            The mode argument specifies what kind of code must be compiled; 
            it can be 'exec' if source_text consists of a sequence of statements,
            'eval' if it consists of a single expression, or 'single' if it 
            consists of a single interactive statement (in the latter case, 
            expression statements that evaluate to something other than None 
            will be printed).
            (see http://docs.python.org/2/library/functions.html#compile)
        """
        super(AstToolBox, self).__init__()

        valid_modes = ['exec', 'eval', 'single']
        if mode not in valid_modes:
            raise ValueError("Mode must be one of: {}".format(valid_modes))
        self._mode = 'exec'

        self.auto_expand_ast = True

        self.start_packages = packages if packages else []
        self.start_packages += [
            'ctree.transformations',
            'ctree.c.codegen',
            'ctree.ocl.codegen',
            'ctree.omp.codegen',
        ]

        self.settings = None

        # Set up the UI
        self.tree_transform_controller = TreeTransformController()

        # there is a little trick here so both presenters know about their partner
        self.code_presenter = CodePresenter(
            tree_transform_controller=self.tree_transform_controller
        )
        self.transform_presenter = TransformPresenter(
            tree_transform_controller=self.tree_transform_controller,
            start_packages=self.start_packages,
        )
        self.code_presenter.set_transform_presenter(self.transform_presenter)
        self.transform_presenter.set_code_presenter(self.code_presenter)

        self.code_presenter.new_item_from_file(file_name)
        self.transform_presenter.load_files(self.start_packages)

        central_splitter = QtGui.QSplitter(self, orientation=QtCore.Qt.Horizontal)
        self.setCentralWidget(central_splitter)
        central_layout = QtGui.QHBoxLayout()
        central_splitter.setLayout(central_layout)

        # Create base tree widget
        central_layout.addWidget(self.code_presenter.code_pane)

        central_layout.addWidget(self.transform_presenter.transform_pane)

        # Splitter parameters
        central_splitter.setCollapsible(0, True)
        central_splitter.setCollapsible(1, True)
        central_splitter.setSizes([AstToolBox.default_left_frame_size, 250])
        central_splitter.setStretchFactor(0, 0.5)
        central_splitter.setStretchFactor(1, 0.5)

        self._setup_menu()
        self.setWindowTitle('{}'.format(PROGRAM_NAME))

        self.read_settings()
コード例 #6
0
ファイル: shell.py プロジェクト: ucb-sejits/ast_tool_box
 def __init__(self, file_name=None, verbose=False):
     self.verbose = verbose
     self.controller = TreeTransformController()
     self.controller.ast_tree_manager.new_item_from_file(file_name)
     self.controller.ast_transformer_manager.get_ast_transformers("ctree.transformations")