/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.sparql.sse.writers; import org.apache.jena.atlas.io.IndentedWriter ; import org.apache.jena.sparql.ARQInternalErrorException ; import org.apache.jena.sparql.sse.Tags ; public class WriterLib { static final int UNDEF = 0 ; public static final int NL = 1 ; public static final int NoNL = -1 ; public static final int NoSP = -2 ; // ---- Support // -- Normal markers /** Start a tagged item - all one line - usual bracketting */ public static void startOneLine(IndentedWriter out, String tag) { _start(out, Tags.LPAREN) ; out.print(tag) ; out.print(" ") ; } /** Finish a tagged item - all one line - usual bracketting */ public static void finishOneLine(IndentedWriter out, String tag) { _finish(out, Tags.RPAREN) ; } /** Start a tagged item - usual bracketting */ public static void start(IndentedWriter out, String tag, int linePolicy) { _start(out, tag, linePolicy, Tags.LPAREN) ; } /** Finish a tagged item - usual bracketting */ public static void finish(IndentedWriter out, String tag) { _finish(out, tag, Tags.RPAREN) ; } /** Start an item - no tag - usual bracketting */ public static void start(IndentedWriter out) { _start(out, Tags.LPAREN) ; } /** Finish an item - no tag - usual bracketting */ public static void finish(IndentedWriter out) { _finish(out, Tags.RPAREN) ; } // -- With the other markers (conventionally, short things) /** Start an item - alternative bracketting */ public static void start2(IndentedWriter out, String tag, int linePolicy) { _start(out, tag, linePolicy, Tags.LBRACKET) ; } /** Finish an item - alternative bracketting */ public static void finish2(IndentedWriter out, String tag) { _finish(out, tag, Tags.RBRACKET) ; } /** Start an item - no tag - alternative bracketting */ public static void start2(IndentedWriter out) { _start(out, Tags.LBRACKET) ; } /** Finish an item - no tag - alternative bracketting */ public static void finish2(IndentedWriter out) { _finish(out, Tags.RBRACKET) ; } // ---- Workers private static void _start(IndentedWriter out, String tag, int linePolicy, String startMarker) { _start(out, startMarker) ; out.print(tag) ; switch (linePolicy) { case NL: out.println(); break ; case NoNL: out.print(" ") ; break ; case NoSP: break ; case UNDEF: throw new ARQInternalErrorException("Explicit tag not no line policy") ; } out.incIndent() ; } private static void _finish(IndentedWriter out, String tag, String finishMarker) { out.decIndent() ; _finish(out, finishMarker) ; } private static void _start(IndentedWriter out, String startMarker) { out.print(startMarker) ; } private static void _finish(IndentedWriter out, String finishMarker) { out.print(finishMarker) ; } }