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 */
016package 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 */
023public 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}