nextflow.util.Escape.groovy Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nxf-commons Show documentation
Show all versions of nxf-commons Show documentation
A DSL modelled around the UNIX pipe concept, that simplifies writing parallel and scalable pipelines in a portable manner
/*
* Copyright (c) 2013-2018, Centre for Genomic Regulation (CRG).
* Copyright (c) 2013-2018, Paolo Di Tommaso and the respective authors.
*
* This file is part of 'Nextflow'.
*
* Nextflow is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Nextflow is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Nextflow. If not, see .
*/
package nextflow.util
import java.nio.file.Path
import groovy.transform.CompileStatic
/**
* Escape helper class
*
* @author Paolo Di Tommaso
*/
@CompileStatic
class Escape {
private static List SPECIAL_CHARS = ["'", '"', ' ', '(', ')', '\\', '!', '&', '|', '<', '>', '`', ':']
private static List WILDCARDS = ["*", "?", "{", "}", "[", "]", "'", '"', ' ', '(', ')', '\\', '!', '&', '|', '<', '>', '`', ':']
private static String replace(List special, String str, boolean doNotEscapeComplement=false) {
def copy = new StringBuilder(str.size() +10)
for( int i=0; i0 && str[i-1]=='[' && (i==1 || str[i-2]!='\\') && str.substring(i).contains(']'))
if( !isComplement )
copy.append('\\')
}
copy.append(str[i])
}
return copy.toString()
}
static String wildcards(String str) {
replace(WILDCARDS, str)
}
static String path(String val) {
replace(SPECIAL_CHARS, val, true)
}
static String path(Path val) {
path(val.toString())
}
static String path(File val) {
path(val.toString())
}
static String path(GString val) {
path(val.toString())
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy