
net.jangaroo.jooc.mvnplugin.util.ConversionUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jangaroo-maven-plugin Show documentation
Show all versions of jangaroo-maven-plugin Show documentation
This plugin compiles Jangaroo sources to JavaScript.
The newest version!
package net.jangaroo.jooc.mvnplugin.util;
import net.jangaroo.jooc.config.SearchAndReplace;
import net.jangaroo.jooc.mvnplugin.SearchAndReplaceConfiguration;
import net.jangaroo.jooc.mvnplugin.sencha.SenchaUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class ConversionUtils {
private static final String NPM_PACKAGE_NAME = "Joo-Npm-Package-Name";
private static final String NPM_PACKAGE_VERSION = "Joo-Npm-Package-Version";
private ConversionUtils() {
// hiding constructor
}
public static List getSearchAndReplace(List searchAndReplaceConfigurations) {
return searchAndReplaceConfigurations.stream()
.map(config -> new SearchAndReplace(Pattern.compile(config.getSearch()), config.getReplace()))
.collect(Collectors.toList());
}
public static String getNpmPackageName(String groupId, String artifactId, List npmPackageNameReplacers) {
String npmPackageName = SenchaUtils.getSenchaPackageName(groupId, artifactId);
for (SearchAndReplace searchAndReplace : npmPackageNameReplacers) {
Matcher matcher = searchAndReplace.search.matcher(npmPackageName);
if (matcher.matches()) {
return matcher.replaceAll(searchAndReplace.replace);
}
}
return npmPackageName;
}
public static String getNpmPackageVersion(String version, List npmPackageVersionReplacers) {
String npmPackageVersion = normalizeNpmPackageVersion(version);
for (SearchAndReplace searchAndReplace : npmPackageVersionReplacers) {
Matcher matcher = searchAndReplace.search.matcher(npmPackageVersion);
if (matcher.matches()) {
return matcher.replaceAll(normalizeNpmPackageVersion(searchAndReplace.replace));
}
}
return npmPackageVersion;
}
public static String normalizeNpmPackageVersion(String mavenVersion) {
String[] versionParts = mavenVersion.split("-", 2);
List majorMinorPatch = new ArrayList<>(Arrays.asList(versionParts[0].split("[.]")));
if (majorMinorPatch.size() > 3) {
majorMinorPatch = majorMinorPatch.subList(0, 2);
} else {
while (majorMinorPatch.size() < 3) {
majorMinorPatch.add("0");
}
}
versionParts[0] = StringUtils.join(majorMinorPatch.toArray(), ".");
return StringUtils.join(versionParts, "-");
}
public static Map getManifestEntries(String npmPackageName, String npmPackageVersion) {
Map manifestEntries = new LinkedHashMap<>();
manifestEntries.put(NPM_PACKAGE_NAME, npmPackageName);
manifestEntries.put(NPM_PACKAGE_VERSION, npmPackageVersion);
return manifestEntries;
}
public static NpmPackageMetadata getNpmPackageMetadataFromManifestEntries(Map manifestEntries) {
String packageName = manifestEntries.get(NPM_PACKAGE_NAME);
String packageVersion = manifestEntries.get(NPM_PACKAGE_VERSION);
return packageName != null && packageVersion != null ? new NpmPackageMetadata(packageName, packageVersion) : null;
}
public static class NpmPackageMetadata {
public final String name;
public final String version;
public NpmPackageMetadata(String name, String version) {
this.name = name;
this.version = version;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy