List of usage examples for com.google.common.css SourceCode getFileContents
public String getFileContents()
From source file:com.log4ic.compressor.utils.less.LessEngine.java
/** * less/*from w w w . jav a 2 s . c om*/ * * @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:io.bazel.rules.closure.webfiles.compiler.CssParser.java
/** Parses stylesheet. */ public CssTree parse(String path, String content) { SourceCode source = new SourceCode(path, content); StringCharStream stream = new StringCharStream(source.getFileContents()); CssBlockNode globalBlock = new CssBlockNode(false /* isEnclosedWithBraces */); CssTree tree = new CssTree(source, new CssRootNode(globalBlock)); GssParserCC parser = new GssParserCC(stream, globalBlock, source, false /* enableErrorRecovery */); int endOfLastError = 0; while (true) { try {/*from w w w .j a v a2 s .com*/ parser.parse(); break; } catch (GssParserException e) { // TODO(jart): Re-enable when csscomp supports --foo syntax. //errorReporter.report(CSS_SYNTAX_ERROR, e.getGssError().format()); // Generic strategy to retry parsing by getting back to top level // NOTE: +1 for end-index because a location is represented as a closed range int begin = globalBlock.isEmpty() ? endOfLastError : Math.max(endOfLastError, globalBlock.getLastChild().getSourceCodeLocation().getEndCharacterIndex() + 1); endOfLastError = skipCurrentStatement(parser, stream, begin); } } return tree; }
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);//from w ww . ja v a 2s . c om 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"); }//from ww w. j ava2s . 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
/** * ??//from w w w . j av a 2 s .com * * @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
/** * /*from w w w . j av a 2 s .c om*/ * * @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; }
From source file:com.log4ic.compressor.utils.Compressor.java
public static String importCode(String code, String fileUrl, FileType type, HttpServletRequest request, HttpServletResponse response)//from w w w . ja va 2 s. c o m 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(); }