1 package com.atlassian.plugin.webresource;
2
3 import org.apache.commons.lang.StringUtils;
4 import org.apache.commons.lang.BooleanUtils;
5
6 import java.util.Map;
7 import java.util.List;
8 import java.util.Arrays;
9
10 class CssWebResourceFormatter extends AbstractWebResourceFormatter
11 {
12 private static final String CSS_EXTENSION = ".css";
13 private static final String MEDIA_PARAM = "media";
14 private static final String IEONLY_PARAM = "ieonly";
15
16 private static final List<String> HANDLED_PARAMETERS = Arrays.asList("title", MEDIA_PARAM, "charset");
17
18 public boolean matches(String name)
19 {
20 return name != null && name.endsWith(CSS_EXTENSION);
21 }
22
23 public String formatResource(String url, Map<String, String> params)
24 {
25 StringBuffer buffer = new StringBuffer();
26 buffer.append("<link type=\"text/css\" rel=\"stylesheet\" href=\"").append(url).append("\"");
27 List attributes = getParametersAsAttributes(params);
28 if (attributes != null && attributes.size() > 0)
29 {
30 buffer.append(" ").append(StringUtils.join(attributes.iterator(), " "));
31 }
32
33
34 if (!params.containsKey(MEDIA_PARAM))
35 {
36 buffer.append(" media=\"all\"");
37 }
38 buffer.append("/>\n");
39
40
41 if (BooleanUtils.toBoolean(params.get(IEONLY_PARAM)))
42 {
43 buffer.insert(0, "<!--[if IE]>\n");
44 buffer.append("<![endif]-->\n");
45 }
46
47 return buffer.toString();
48 }
49
50 protected List<String> getAttributeParameters()
51 {
52 return HANDLED_PARAMETERS;
53 }
54 }