@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); } }
/** * Invoked from {@link #transform(org.apache.tapestry5.ioc.Resource, org.apache.tapestry5.services.assets.ResourceDependencies)} * to perform the actual work of compiling a {@link org.apache.tapestry5.ioc.Resource} which has been wrapped as a * {@link com.github.sommeri.less4j.LessSource}. */ protected LessCompiler.CompilationResult compile(LessCompiler compiler, LessSource lessSource) throws Less4jException { return compiler.compile(lessSource); } }
/** * Invoked from {@link #transform(org.apache.tapestry5.ioc.Resource, org.apache.tapestry5.services.assets.ResourceDependencies)} * to perform the actual work of compiling a {@link org.apache.tapestry5.ioc.Resource} which has been wrapped as a * {@link com.github.sommeri.less4j.LessSource}. */ protected LessCompiler.CompilationResult compile(LessCompiler compiler, LessSource lessSource) throws Less4jException { return compiler.compile(lessSource); } }
@Override public CompilationResult compile(final LessSource source, final Configuration options) throws Less4jException { return compiler.compile(source, options); }
@Override public CompilationResult compile(final String lessContent, final Configuration options) throws Less4jException { return compiler.compile(lessContent, options); }
@Override public CompilationResult compile(final File lessFile, final Configuration options) throws Less4jException { return compiler.compile(lessFile, options); }
@Override public CompilationResult compile(final URL lessUrl, final Configuration options) throws Less4jException { return compiler.compile(lessUrl, options); } }
@Override public CompilationResult compile(final LessSource source) throws Less4jException { return compiler.compile(source, options); }
@Override public CompilationResult compile(final String lessContent) throws Less4jException { return compiler.compile(lessContent, options); }
@Override public CompilationResult compile(final URL lessURL) throws Less4jException { return compiler.compile(lessURL, options); }
@Override public CompilationResult compile(final File lessFile) throws Less4jException { return compiler.compile(lessFile, options); }
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()); }
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()); }
/** * Compile a less file. * @param source source to compile. * @return the compiled css result. * @throws CompileErrorException in case of compile error. */ @Override protected String compile(String source) throws CompileErrorException { try { return LessCompilerHelper.compiler.compile(source).getCss(); } catch (Less4jException lessException) { throw new CompileErrorException(lessException); } }
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); }
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); }
@Override public void process(final Resource resource, final Reader reader, final Writer writer) throws IOException { try { final LessSource lessSource = new RelativeAwareLessSource(resource, IOUtils.toString(reader), locatorFactory); final CompilationResult result = compiler.compile(lessSource); logWarnings(result); writer.write(result.getCss()); } catch (final Less4jException e) { LOG.error("Failed to compile less resource: {}.", resource); for (final Problem problem : e.getErrors()) { LOG.error(problemAsString(problem)); } throw WroRuntimeException.wrap(e); } }
private static void basicFileExample() throws Less4jException { File inputLessFile = createFile("sampleInput.less", "* { margin: 1 1 1 1; }"); LessCompiler compiler = new ThreadUnsafeLessCompiler(); CompilationResult compilationResult = compiler.compile(inputLessFile); System.out.println(compilationResult.getCss()); for (Problem warning : compilationResult.getWarnings()) { System.err.println(format(warning)); } deleteFile(inputLessFile); }
@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 customFunctionExample() throws Less4jException { File inputLessFile = createFile("sampleInput.less", "div {\n" + " property: constant();\n" + "}"); Configuration configuration = new Configuration(); configuration.addCustomFunction(new ConstantFunction()); LessCompiler compiler = new DefaultLessCompiler(); CompilationResult compilationResult = compiler.compile(inputLessFile, configuration); System.out.println(compilationResult.getCss()); deleteFile(inputLessFile); }