List of usage examples for com.google.common.css SourceCode getFileName
public String getFileName()
From source file:com.log4ic.compressor.utils.less.LessEngine.java
/** * less/*from w w w . j av a2 s . com*/ * * @param codeList * @param conditions * @return * @throws GssParserException */ public static List<SourceCode> parseLess(List<SourceCode> codeList, List<String> conditions) throws LessException, CompressionException { final List<SourceCode> resultCodeList = new FastList<SourceCode>(); StringBuilder conditionsBuilder = new StringBuilder(); if (conditions != null) { for (String con : conditions) { conditionsBuilder.append("@").append(con).append(":true;"); } } for (final SourceCode sourceCode : codeList) { if (Compressor.getFileType(sourceCode.getFileName()) != Compressor.FileType.LESS) { resultCodeList.add(new SourceCode(sourceCode.getFileName(), sourceCode.getFileContents())); continue; } final Object[] functionArgs = new Object[] { conditionsBuilder.toString() + sourceCode.getFileContents() }; try { jsContextFactory.call(new ContextAction() { @Override public Object run(Context cx) { cx.setLanguageVersion(Context.VERSION_1_8); Object result = parseFn.call(cx, global, fnThisScopeObj, functionArgs); resultCodeList.add(new SourceCode(sourceCode.getFileName(), Context.toString(result))); return null; } }); } catch (Exception e) { parseLessException(e); } } return resultCodeList; }
From source file:com.log4ic.compressor.utils.Compressor.java
public static String parseGss(List<SourceCode> codeList, List<String> conditions) throws GssParserException, CompressionException { List<SourceCode> codes = Lists.newArrayList(); for (SourceCode s : codeList) { if (getFileType(s.getFileName()) == FileType.GSS) { codes.add(s);/* w ww. ja va 2 s.c om*/ } } JobDescriptionBuilder builder = buildJobDesBuilder(codes, null, conditions); builder.setProcessDependencies(false); builder.setSimplifyCss(false); builder.setEliminateDeadStyles(false); builder.setOptimizeStrategy(JobDescription.OptimizeStrategy.NONE); return parseGss(builder.getJobDescription()); }
From source file:com.log4ic.compressor.utils.Compressor.java
private static JobDescriptionBuilder buildJobDesBuilder(List<SourceCode> codeList, JobDescription.OutputFormat format, List<String> conditions, JobDescription.OptimizeStrategy level) { JobDescriptionBuilder builder = new JobDescriptionBuilder(); builder.setAllowWebkitKeyframes(true); builder.setAllowKeyframes(true);//w w w. ja v a 2 s . c o m builder.setAllowUnrecognizedFunctions(true); builder.setAllowUnrecognizedProperties(true); builder.setProcessDependencies(true); builder.setSimplifyCss(true); builder.setEliminateDeadStyles(true); builder.setOptimizeStrategy(level == null ? JobDescription.OptimizeStrategy.SAFE : level); for (SourceCode code : codeList) { builder.addInput(new SourceCode(code.getFileName(), fixIE9Hack(code.getFileContents()))); } if (format != null) { builder.setOutputFormat(format); } // //builder.setGssFunctionMapProvider(gssFunctionMapProvider); //? if (conditions != null && conditions.size() > 0) { for (String con : conditions) { builder.addTrueConditionName(con); } } return builder; }
From source file:com.log4ic.compressor.utils.Compressor.java
private static String mergeCode(List<SourceCode> codeList, HttpServletRequest request, FileType type) throws LessException, GssParserException, CompressionException, IOException { StringBuilder builder = new StringBuilder(); List<String> con = buildTrueConditions(request); if (type == FileType.LESS || type == FileType.MSS) { codeList = LessEngine.parseLess(codeList, con); for (SourceCode code : codeList) { if (getFileType(code.getFileName()) == FileType.LESS) { builder.append(code.getFileContents()).append("\n"); }// w w w. j a v a 2 s . com } } if (type == FileType.GSS || type == FileType.MSS) { builder.append(parseGss(codeList, con)); } if (type == FileType.JS || type == FileType.CSS) { for (SourceCode code : codeList) { if (FileType.TPL.contains(getFileTypeString(code.getFileName()))) { URI uri; // if (codeList.size() <= 1) { // uri = getTemplateUri(code.getFileName()); // } else { uri = URI.create(code.getFileName()); // } String tpl = JavascriptTemplateEngine.parse(uri, code.getFileContents()); builder.append(tpl).append("\n"); } else { if (type == FileType.JS && codeList.size() > 1) { builder.append( processAMDDefine(SourceFile.fromCode(code.getFileName(), code.getFileContents())) .getCode()); } else { builder.append(code.getFileContents()); } builder.append("\n"); } } } return builder.toString(); }
From source file:com.log4ic.compressor.utils.Compressor.java
public static String importCode(String code, String fileUrl, FileType type, HttpServletRequest request, HttpServletResponse response)/* ww w.j a v a2 s .com*/ throws CompressionException, LessException, GssParserException, IOException { StringBuilder codeBuilder = new StringBuilder(); switch (type) { case GSS: case CSS: case LESS: case MSS: Matcher matcher = importPattern.matcher(code); String[] codeFragments = importPattern.split(code); String filePath = fileUrl.substring(0, fileUrl.lastIndexOf("/") + 1); FileType fileType = getFileType(fileUrl); int i = 0; while (matcher.find()) { String cssPath; String cssFile = matcher.group(1); if (!HttpUtils.isHttpProtocol(cssFile) && !cssFile.startsWith("/")) { cssPath = filePath + cssFile; } else { cssPath = cssFile; } if (StringUtils.isNotBlank(codeFragments[i])) { if (codeFragments[i].lastIndexOf("/*") > codeFragments[i].lastIndexOf("*/") || codeFragments[i].lastIndexOf("//") > codeFragments[i].lastIndexOf("\n")) { if (codeFragments.length > i + 1) { codeFragments[i + 1] = codeFragments[i] + codeFragments[i + 1]; codeFragments[i] = null; i++; } continue; } else { codeBuilder.append(codeFragments[i]); } } if (request.getAttribute(cssPath) == null) { if (fileType == FileType.LESS) { try { if (!type.contains(getFileType(cssPath))) { cssPath += ".less"; } } catch (Exception e) { cssPath += ".less"; } } logger.debug("[{}]", cssPath); request.setAttribute(cssPath, true); List<SourceCode> sourceCodes = mergeCode(new String[] { cssPath }, request, response, type); for (SourceCode s : sourceCodes) { FileType t = getFileType(s.getFileName()); if (fileType.equals(t)) { codeBuilder.append(s.getFileContents()); } else { codeBuilder .append(fixIE9Hack(mergeCode(Lists.<SourceCode>newArrayList(s), request, t))); } } } i++; } if (i != 0) { if (codeFragments.length > i && StringUtils.isNotBlank(codeFragments[i])) { codeBuilder.append(codeFragments[i]); } break; } default: return code; } return codeBuilder.toString(); }
From source file:com.log4ic.compressor.utils.Compressor.java
/** * ??//from w w w.ja va2 s .c o m * * @param type * @param queryString * @param cacheManager * @param request * @param response * @param fileDomain * @return * @throws com.log4ic.compressor.exception.CompressionException * * @throws com.google.common.css.compiler.ast.GssParserException * */ private static String buildCode(final FileType type, final String queryString, final CacheManager cacheManager, HttpServletRequest request, HttpServletResponse response, String fileDomain) throws CompressionException, GssParserException, LessException { Cache cache = null; try { //??? if (cacheManager != null) { byte[] cacheLock; //?? synchronized (progressCacheLock) { cacheLock = progressCacheLock.get(queryString); } if (cacheLock != null) { //?? synchronized (cacheLock) { logger.debug("?"); cacheLock.wait(); } // cache = cacheManager.get(queryString); } else { //?queryString? cacheLock = new byte[0]; synchronized (progressCacheLock) { progressCacheLock.put(queryString, cacheLock); } } } String code; //??cache?? if (cache == null || cache.isExpired()) { //??? List<SourceCode> codeList = mergeCode(queryString.split("&"), request, response, type); List<SourceCode> sourceCodeList = Lists.newArrayList(); //css? for (SourceCode source : codeList) { SourceCode s = new SourceCode(source.getFileName(), fixUrlPath(request, source.getFileContents(), source.getFileName(), type, fileDomain)); sourceCodeList.add(s); } // code = HttpUtils.getBooleanParam(request, "nocompress") ? mergeCode(sourceCodeList, request, type) : compressCode(sourceCodeList, request, type); if (cacheManager != null) { final String finalCode = code; new Thread(new Runnable() { @Override public void run() { try { cacheManager.put(queryString, finalCode, type); } catch (Exception e) { logger.error("", e); } finally { byte[] cacheLock; synchronized (progressCacheLock) { cacheLock = progressCacheLock.remove(queryString); } synchronized (cacheLock) { cacheLock.notifyAll(); } } } }).start(); } return code; } else { return cache.getContent(); } } catch (Exception e) { if (cacheManager != null) { byte[] cacheLock; synchronized (progressCacheLock) { cacheLock = progressCacheLock.remove(queryString); } synchronized (cacheLock) { cacheLock.notifyAll(); } } throw new CompressionException(e); } }
From source file:com.log4ic.compressor.utils.Compressor.java
/** * //w w w. ja v a2s.c o m * * @param fileSourceList * @param request * @param type * @return * @throws com.google.common.css.compiler.ast.GssParserException * * @throws com.log4ic.compressor.exception.CompressionException * */ public static String compressCode(List<SourceCode> fileSourceList, HttpServletRequest request, FileType type) throws GssParserException, CompressionException, LessException, IOException { // boolean isDebug = HttpUtils.getBooleanParam(request, "debug"); String code = ""; if (fileSourceList.size() > 0) { String levelParam = request.getParameter("level"); switch (type) { case JS: CompilationLevel level = CompilationLevel.SIMPLE_OPTIMIZATIONS; if (StringUtils.isNotBlank(levelParam)) { try { level = CompilationLevel.values()[Integer.parseInt(levelParam)]; } catch (Exception e) { try { level = CompilationLevel.valueOf(levelParam); } catch (IllegalArgumentException ae) { // } } } List<SourceFile> sourceFiles = Lists.newArrayList(); for (SourceCode source : fileSourceList) { //?? SourceFile jsSource = SourceFile.fromCode(source.getFileName(), source.getFileContents()); if (FileType.TPL.contains(getFileTypeString(source.getFileName()))) { URI uri; // if (fileSourceList.size() <= 1) { // uri = getTemplateUri(source.getFileName()); // } else { uri = URI.create(source.getFileName()); // } String tpl = JavascriptTemplateEngine.compress(uri, source.getFileContents()); jsSource = SourceFile.fromCode(source.getFileName(), tpl); } else if (fileSourceList.size() > 1) { jsSource = processAMDDefine(jsSource); } sourceFiles.add(jsSource); } code = Compressor.compressJS(sourceFiles, level, isDebug); break; case CSS: code = Compressor.compressGss(fileSourceList, getGssFormat(isDebug, request), getCompressGssOptimizeStrategy(levelParam)); break; case GSS: code = Compressor.compressGss(fileSourceList, getGssFormat(isDebug, request), buildTrueConditions(request), getCompressGssOptimizeStrategy(levelParam)); break; case LESS: case MSS: //?? code = Compressor.compressLess(fileSourceList, getGssFormat(isDebug, request), buildTrueConditions(request), getCompressGssOptimizeStrategy(levelParam)); break; } } return code; }