@Override public String process(final String filename, final String source, final Config conf, final ClassLoader loader) throws Exception { String path = filename; try { LessCompiler compiler = new ThreadUnsafeLessCompiler(); LessSource src = new LessStrSource(source, path); CompilationResult result = compiler.compile(src, lessConf(conf)); result.getWarnings().forEach(warn -> { log.warn("{}:{}:{}:{}: {}", path, warn.getType(), warn.getLine(), warn.getCharacter(), warn.getMessage()); }); if (path.endsWith(".map")) { return result.getSourceMap(); } else { return result.getCss(); } } catch (Less4jException ex) { List<AssetProblem> problems = ex.getErrors().stream() .map(it -> new AssetProblem(path, it.getLine(), it.getCharacter(), it.getMessage(), null)) .collect(Collectors.toList()); throw new AssetException(name(), problems); } }
private static void customCssLocationExample2() throws Less4jException { File cssFile = new File("dist/sampleInput.css").getAbsoluteFile(); Configuration configuration = new Configuration(); configuration.setCssResultLocation(cssFile); URI uri = (new File("src/sampleInput.less")).toURI(); StringSource lessSource = new StringSource(".class { margin: 1 1 1 1; }", "sampleInput.less", uri); LessCompiler compiler = new DefaultLessCompiler(); CompilationResult compilationResult = compiler.compile(lessSource, configuration); System.out.println(compilationResult.getCss()); System.out.println(compilationResult.getSourceMap()); }
private static void guessedCssLocationExample2() throws Less4jException { URI uri = (new File("src/sampleInput.less")).toURI(); StringSource lessSource = new StringSource(".class { margin: 1 1 1 1; }", "sampleInput.less", uri); LessCompiler compiler = new DefaultLessCompiler(); CompilationResult compilationResult = compiler.compile(lessSource); System.out.println(compilationResult.getCss()); System.out.println(compilationResult.getSourceMap()); }
FileUtils.writeStringToFile(new File(mapFileName), compilationResult.getSourceMap());
@Override protected WebpipeOutput fetchOutput() throws Exception { synchronized (importedResources) { importedResources.clear(); Webpipe webpipe = getChildWebpipe(); String content = webpipe.getOutput().getContent(); StringSource lessSource; if (webpipe instanceof Resource) { lessSource = new RelativeAwareLessSource((Resource) webpipe, content); } else { lessSource = new StringSource(content, webpipe.getPath()); } CompilationResult result = compiler.compile(lessSource); logWarnings(result); return new WebpipeOutput(result.getCss(), WebpipeUtils.parseSourceMap(result.getSourceMap())); } }
@Override protected void send(final Request req, final Response rsp, final Asset asset) throws Exception { LessSource.URLSource src = new LessSource.URLSource(asset.resource(), req.charset().name()); CompilationResult result = compiler.compile(src); result.getWarnings().forEach(warning -> log.warn(warning.toString())); if (req.path().endsWith(".map")) { rsp.type(MediaType.json) .send(Results.ok(result.getSourceMap())); } else { rsp.type(MediaType.css) .send(Results.ok(result.getCss())); } } }
private static void guessedCssLocationExample1() throws Less4jException { File inputLessFile = createFile("src/sampleInput.less", ".class { margin: 1 1 1 1; }"); File lessFile = new File("src/sampleInput.less").getAbsoluteFile(); LessCompiler compiler = new DefaultLessCompiler(); CompilationResult compilationResult = compiler.compile(lessFile); System.out.println(compilationResult.getCss()); System.out.println(compilationResult.getSourceMap()); deleteFile(inputLessFile); }
public void printToFiles(CompilationResult content, String lessFileName, File rootLessFile, String cssFilename, String mapFilename) { if (content == null || content.getCss() == null) { reportCouldNotCompileTheFile(lessFileName); return; } outputFile(cssFilename, content.getCss()); if (mapFilename != null && content.getSourceMap() != null) outputFile(mapFilename, content.getSourceMap()); printWarnings(lessFileName, rootLessFile, content); }
private static void customCssLocationExample1() throws Less4jException { File inputLessFile = createFile("src/sampleInput.less", ".class { margin: 1 1 1 1; }"); File lessFile = new File("src/sampleInput.less").getAbsoluteFile(); File cssFile = new File("dist/sampleInput.css").getAbsoluteFile(); Configuration configuration = new Configuration(); configuration.setCssResultLocation(cssFile); LessCompiler compiler = new DefaultLessCompiler(); CompilationResult compilationResult = compiler.compile(lessFile, configuration); System.out.println(compilationResult.getCss()); System.out.println(compilationResult.getSourceMap()); deleteFile(inputLessFile); }