-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTemplatingAutoConfiguration.java
More file actions
69 lines (59 loc) · 2.48 KB
/
TemplatingAutoConfiguration.java
File metadata and controls
69 lines (59 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.blibli.oss.template.autoconfigurer;
import com.blibli.oss.template.Templating;
import com.blibli.oss.template.impl.TemplatingImpl;
import com.blibli.oss.template.properties.TemplateProperties;
import com.github.jknack.handlebars.Handlebars;
import com.github.jknack.handlebars.Options;
import com.github.jknack.handlebars.cache.ConcurrentMapTemplateCache;
import com.github.jknack.handlebars.cache.TemplateCache;
import com.github.jknack.handlebars.helper.StringHelpers;
import com.github.jknack.handlebars.io.ClassPathTemplateLoader;
import com.github.jknack.handlebars.io.TemplateLoader;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
/**
* @author Eko Kurniawan Khannedy
*/
@Configuration
@EnableConfigurationProperties({
TemplateProperties.class
})
@ConditionalOnClass({Handlebars.class})
public class TemplatingAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public TemplateCache templateCache() {
return new ConcurrentMapTemplateCache();
}
@Bean
@ConditionalOnMissingBean
public TemplateLoader templateLoader(TemplateProperties templateProperties) {
return new ClassPathTemplateLoader(templateProperties.getPrefix(), templateProperties.getSuffix());
}
@Bean
@ConditionalOnMissingBean
public Handlebars handlebars(TemplateLoader templateLoader, TemplateCache templateCache) {
Handlebars handlebars = new Handlebars()
.with(templateLoader)
.with(templateCache);
handlebars.registerHelper("customSeparator", (context, options) -> customSeparator((Double) context, options));
StringHelpers.register(handlebars);
return handlebars;
}
public String customSeparator(Double data, Options options) {
String separator = (String) options.hash.getOrDefault("separator", ".");
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setGroupingSeparator(separator.charAt(0));
DecimalFormat decimalFormat = new DecimalFormat("###,###", decimalFormatSymbols);
return decimalFormat.format(data);
}
@Bean
public Templating templating(Handlebars handlebars) {
return new TemplatingImpl(handlebars);
}
}