176f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti/*
276f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti * Copyright (C) 2007-2010 Júlio Vilmar Gesser.
376f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti * Copyright (C) 2011, 2013-2016 The JavaParser Team.
476f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti *
576f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti * This file is part of JavaParser.
676f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti *
776f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti * JavaParser can be used either under the terms of
876f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti * a) the GNU Lesser General Public License as published by
976f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti *     the Free Software Foundation, either version 3 of the License, or
1076f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti *     (at your option) any later version.
1176f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti * b) the terms of the Apache License
1276f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti *
1376f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti * You should have received a copy of both licenses in LICENCE.LGPL and
1476f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti * LICENCE.APACHE. Please refer to those files for details.
1576f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti *
1676f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti * JavaParser is distributed in the hope that it will be useful,
1776f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti * but WITHOUT ANY WARRANTY; without even the implied warranty of
1876f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1976f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti * GNU Lesser General Public License for more details.
2076f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti */
2176f5dc9d043237e8ada0e6597d6c8d48b67f6d8fFederico Tomassetti
226c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggenpackage com.github.javaparser.printer;
236c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen
246c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggenimport com.github.javaparser.ast.Node;
256c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen
266c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen/**
276c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen * Pretty printer for AST nodes.
286c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen */
296c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggenpublic class PrettyPrinter {
306c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen    private final PrettyPrinterConfiguration configuration;
316c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen
32912c507882e0ccbc4e7eaabb1ecf6379bd7940c6Federico Tomassetti    public PrettyPrinter() {
33912c507882e0ccbc4e7eaabb1ecf6379bd7940c6Federico Tomassetti        this(new PrettyPrinterConfiguration());
34912c507882e0ccbc4e7eaabb1ecf6379bd7940c6Federico Tomassetti    }
35912c507882e0ccbc4e7eaabb1ecf6379bd7940c6Federico Tomassetti
366c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen    public PrettyPrinter(PrettyPrinterConfiguration configuration) {
376c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen        this.configuration = configuration;
386c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen    }
396c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen
406c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen    public String print(Node node) {
41aa67367007111bde95d710ce1d44d191eddd9c66Danny van Bruggen        final PrettyPrintVisitor visitor = configuration.getVisitorFactory().apply(configuration);
426c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen        node.accept(visitor, null);
436c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen        return visitor.getSource();
446c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen    }
456c7162f0429bf235fc157ca081ceb992409594e0Danny van Bruggen}
46