/**
 * Task worker modules
 * @namespace task.worker
 * @author Taka Okunishi
 *
 */

var prototype = require('./_prototype.js');
/**
 * Define an object property getter to access prototype property.
 * @private
 */
function getPrototypeProperty (key) {
    return {
        enumerable: true,
        get: function () {
            return prototype[key];
        }
    };
}

// Export prototype properties with lazy loading.
Object.defineProperties(exports, {
    _evaluateData: getPrototypeProperty('_evaluateData'),
    _loadLocalTmpl: getPrototypeProperty('_loadLocalTmpl'),
    _newRenderData: getPrototypeProperty('_newRenderData'),
    _runTest: getPrototypeProperty('_runTest'),
    changeMode: getPrototypeProperty('changeMode'),
    cleanDeadSymlinks: getPrototypeProperty('cleanDeadSymlinks'),
    cleanDirectory: getPrototypeProperty('cleanDirectory'),
    execCommand: getPrototypeProperty('execCommand'),
    generateApiguide: getPrototypeProperty('generateApiguide'),
    generateIndex: getPrototypeProperty('generateIndex'),
    generateIndexTest: getPrototypeProperty('generateIndexTest'),
    generateInstruments: getPrototypeProperty('generateInstruments'),
    generatePackageJson: getPrototypeProperty('generatePackageJson'),
    generateStructure: getPrototypeProperty('generateStructure'),
    generateTestFiles: getPrototypeProperty('generateTestFiles'),
    generateUnitTestFiles: getPrototypeProperty('generateUnitTestFiles'),
    installNodeModules: getPrototypeProperty('installNodeModules'),
    linkNpmPackage: getPrototypeProperty('linkNpmPackage'),
    packNpmPackage: getPrototypeProperty('packNpmPackage'),
    reportToCoveralls: getPrototypeProperty('reportToCoveralls'),
    runMocha: getPrototypeProperty('runMocha'),
    runNodeunit: getPrototypeProperty('runNodeunit'),
    generateApemanHelperData: getPrototypeProperty('generateApemanHelperData'),
    inheritTemplates: getPrototypeProperty('inheritTemplates')

});


/**
 * Define an object property getter with require function.
 * @private
 */
function getRequire (moduleName) {
    return {
        enumerable: true,
        get: function () {
            return require(moduleName);
        }
    };
}

// Export modules with lazy loading.
Object.defineProperties(exports, {
    _basenameWithoutExt: getRequire('./_basename_without_ext'),
    _beautifyJavascriptString: getRequire('./_beautify_javascript_string'),
    _colorCategories: getRequire('./_color_categories'),
    _colorThemesData: getRequire('./_color_themes_data'),
    _convertDirectory: getRequire('./_convert_directory'),
    _createAliases: getRequire('./_create_aliases'),
    _debug: getRequire('./_debug'),
    _ensureThemeDataGuideIndex: getRequire('./_ensure_theme_data_guide_index'),
    _expandGlobUnlessIgnored: getRequire('./_expand_glob_unless_ignored'),
    _flattenThemesData: getRequire('./_flatten_themes_data'),
    _generateStyleguideOverview: getRequire('./_generate_styleguide_overview'),
    _minifyFiles: getRequire('./_minify_files'),
    _randomColor: getRequire('./_random_color'),
    _randomFont: getRequire('./_random_font'),
    _schemeColors: getRequire('./_scheme_colors'),
    _themeNameForIndex: getRequire('./_theme_name_for_index'),
    _unlinkFiles: getRequire('./_unlink_files'),
    compileCoffeeDirectory: getRequire('./compile_coffee_directory'),
    compileJadeDirectory: getRequire('./compile_jade_directory'),
    compileLessDirectory: getRequire('./compile_less_directory'),
    concatAndCompileCoffeeScriptFiles: getRequire('./concat_and_compile_coffee_script_files'),
    concatFiles: getRequire('./concat_files'),
    executeTravisEncrypt: getRequire('./execute_travis_encrypt'),
    generateBasenameLink: getRequire('./generate_basename_link'),
    generateClientsideLocaleFiles: getRequire('./generate_clientside_locale_files'),
    generateColorLess: getRequire('./generate_color_less'),
    generateColorThemesLessFiles: getRequire('./generate_color_themes_less_files'),
    generateConstantsJson: getRequire('./generate_constants_json'),
    generateDataJson: getRequire('./generate_data_json'),
    generateFontLessFiles: getRequire('./generate_font_less_files'),
    generateHtmlFromMarkdown: getRequire('./generate_html_from_markdown'),
    generateIcoImage: getRequire('./generate_ico_image'),
    generateIndexLessFile: getRequire('./generate_index_less_file'),
    generateSizedImageFiles: getRequire('./generate_sized_image_files'),
    generateStyleguide: getRequire('./generate_styleguide'),
    generateStyleguideLess: getRequire('./generate_styleguide_less'),
    generateThemeFaviconFiles: getRequire('./generate_theme_favicon_files'),
    generateThemeLessFiles: getRequire('./generate_theme_less_files'),
    generateThemeStartupImageFiles: getRequire('./generate_theme_startup_image_files'),
    installBowerComponents: getRequire('./install_bower_components'),
    linkThemeFiles: getRequire('./link_theme_files'),
    minifyCssFiles: getRequire('./minify_css_files'),
    minifyJsFiles: getRequire('./minify_js_files'),
    precompileJadeDirectory: getRequire('./precompile_jade_directory'),
    publishHtmlFiles: getRequire('./publish_html_files'),
    publishStaticFiles: getRequire('./publish_static_files'),
    runKarmaTest: getRequire('./run_karma_test'),
    watchForTask: getRequire('./watch_for_task')

});
