001 /**
002 * Copyright 2005-2014 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.rice.krad.theme.util;
017
018 /**
019 * Contains constants used by the theme builder module
020 *
021 * @author Kuali Rice Team (rice.collab@kuali.org)
022 */
023 public class ThemeBuilderConstants {
024 public static final String DEFAULT_THEMES_DIRECTORY = "/themes";
025 public static final String DEFAULT_PLUGINS_DIRECTORY = "/plugins";
026 public static final String KRAD_SCRIPTS_DIRECTORY = "/krad/scripts";
027 public static final String THEME_PROPERTIES_FILE = "theme.properties";
028 public static final String THEME_DERIVED_PROPERTIES_FILE = "theme-derived.properties";
029
030 public static final String KRAD_SCRIPT_LOAD_PROPERTIES_FILE = "load.properties";
031 public static final String LOAD_ORDER_PROPERTY_KEY = "scriptLoadOrder";
032
033 public static final String MIN_FILE_SUFFIX = ".min";
034 public static final String KRAD_SCRIPT_PREFIX = "krad.";
035
036 /**
037 * Processed file extensions
038 */
039 public static class FileExtensions {
040 public static final String LESS = ".less";
041 public static final String CSS = ".css";
042 public static final String JS = ".js";
043 }
044
045 /**
046 * Directories that are expected to be present in the theme directory
047 */
048 public static class ThemeDirectories {
049 public static final String IMAGES = "images";
050 public static final String SCRIPTS = "scripts";
051 public static final String STYLESHEETS = "stylesheets";
052 public static final String INCLUDES = "includes";
053 }
054
055 /**
056 * Valid property keys in the theme properties file
057 */
058 public static class ThemeConfiguration {
059 public static final String CSS_EXCLUDES = "cssExcludes";
060 public static final String JS_EXCLUDES = "jsExcludes";
061 public static final String DEV_JS_INCLUDES = "devJsIncludes";
062 public static final String LESS_INCLUDES = "lessIncludes";
063 public static final String LESS_EXCLUDES = "lessExcludes";
064 public static final String PARENT = "parent";
065 public static final String PARENT_EXCLUDES = "parentExcludes";
066 public static final String PLUGIN_INCLUDES = "pluginIncludes";
067 public static final String PLUGIN_EXCLUDES = "pluginExcludes";
068 public static final String PLUGIN_FILE_EXCLUDES = "pluginFileExcludes";
069 public static final String ADDITIONAL_OVERLAYS = "additionalOverlays";
070 public static final String CSS_LOAD_FIRST = "cssLoadFirst";
071 public static final String CSS_LOAD_LAST = "cssLoadLast";
072 public static final String JS_LOAD_FIRST = "jsLoadFirst";
073 public static final String JS_LOAD_LAST = "jsLoadLast";
074 public static final String PLUGIN_JS_LOAD_ORDER = "pluginJsLoadOrder";
075 public static final String PLUGIN_CSS_LOAD_ORDER = "pluginCssLoadOrder";
076 public static final String THEME_JS_LOAD_ORDER = "themeJsLoadOrder";
077 public static final String THEME_CSS_LOAD_ORDER = "themeCssLoadOrder";
078 }
079
080 /**
081 * Derived property keys that are added to the theme properties
082 */
083 public static class DerivedConfiguration {
084 public static final String THEME_PLUGIN_NAMES = "themePluginNames";
085 public static final String THEME_LESS_FILES = "themeLessFiles";
086 public static final String THEME_CSS_FILES = "themeCssFiles";
087 public static final String THEME_JS_FILES = "themeJsFiles";
088 }
089
090 /**
091 * Patterns used to do string matching
092 */
093 public static class Patterns {
094 public static final String CSS_URL_PATTERN =
095 "(?is)src\\b\\s*=\\s*['\"](.*?)['\"]|url\\b\\s*\\(\\s*['\"]?(.*?)['\"]?\\s*\\)";
096 public static final String JS_SEMICOLON_PATTERN = "(?s).*;\\s*$";
097 public static final String ANT_MATCH_ALL = "**/*";
098 public static final String ANT_MATCH_DIR = "/*";
099 }
100 }