/*______________
| ______ | U I Z E J A V A S C R I P T F R A M E W O R K
| / / | ---------------------------------------------------
| / O / | MODULE : UizeSite.Build.FileBuilders.ModuleReferencePages Package
| / / / |
| / / / /| | ONLINE : http://uize.com
| /____/ /__/_| | COPYRIGHT : (c)2012-2016 UIZE
| /___ | LICENSE : Available under MIT License or GNU General Public License
|_______________| http://uize.com/license.html
*/
/* Module Meta Data
type: Package
importance: 5
codeCompleteness: 100
docCompleteness: 100
*/
/*?
Introduction
The =UizeSite.Build.FileBuilders.ModuleReferencePages= module defines a file builder for the module reference pages of the UIZE Web site.
*DEVELOPERS:* `Chris van Rensburg`
Functions defined in the file builder are called as instance methods on an instance of a subclass of the =Uize.Services.FileBuilderAdapter= class, so the functions can access instance methods implemented in this class.
*/
Uize.module ({
name:'UizeSite.Build.FileBuilders.ModuleReferencePages',
required:[
'Uize.Url',
'Uize.Doc.Sucker',
'Uize.Build.Util',
'Uize.Util.ModuleNaming'
],
builder:function () {
'use strict';
var
_visualTestsModuleNameFromWidgetClass = Uize.Util.ModuleNaming.visualTestsModuleNameFromWidgetClass,
_jsModuleExtensions = Uize.Build.Util.jsModuleExtensions
;
function _hasDeepReference (object,_deepReference) {
try {
eval ('object.' + _deepReference);
return true;
} catch (_error) {
return false;
}
}
return Uize.package ({
description:'Module reference page',
urlMatcher:function (_urlParts) {
var m = this;
function _anyOfFilesExists (_files) {
for (var _fileNo = -1, _filesLength = _files.length; ++_fileNo < _filesLength;)
if (m.fileExists ({path:_files [_fileNo]})) return true
;
return false;
}
if (
_urlParts.fileType == 'html' &&
_urlParts.folderPath == m.builtUrl ('reference/')
) {
var _sourcePathSansExtension = m.sourceUrl (m.getModuleUrl (_urlParts.fileName,false));
return (
_anyOfFilesExists (
Uize.map (
_jsModuleExtensions,
function (_extension) {return _sourcePathSansExtension + _extension}
)
) ||
m.folderExists ({path:_sourcePathSansExtension})
);
} else {
return false;
}
},
builderInputs:function (_urlParts) {
var m = this;
return {
tempCode:m.tempUrl (m.getModuleUrl (_urlParts.fileName)),
simpleDocTemplate:m.memoryUrl ('reference/~SIMPLE-DOC-TEMPLATE.html.jst'),
modulesTree:m.memoryUrl ('modules-tree'),
urlDictionary:m.memoryUrl ('url-dictionary'),
examplesByKeyword:m.memoryUrl ('examples-by-keyword')
};
},
builder:function (_inputs) {
var
m = this,
_simpleDoc,
_tempCodePath = _inputs.tempCode,
_moduleName = m.moduleNameFromTempPath (_tempCodePath),
_modulesTree = m.readFile ({path:_inputs.modulesTree})
;
Uize.require (
_moduleName,
function (_module) {
var
_urlDictionary = m.readFile ({path:_inputs.urlDictionary}),
_moduleUrlFromDictionary = _urlDictionary [_moduleName]
;
_urlDictionary [_moduleName] = null;
_simpleDoc = Uize.Doc.Sucker.toDocument (
m.readFile ({path:_tempCodePath}),
{
urlDictionary:_urlDictionary,
pathToRoot:'../',
result:'full',
module:_module,
modulesTree:_modulesTree,
examples:m.readFile ({path:_inputs.examplesByKeyword}) [_moduleName]
}
);
_urlDictionary [_moduleName] = _moduleUrlFromDictionary;
}
);
return m.processSimpleDoc (
_moduleName,
_simpleDoc,
_inputs.simpleDocTemplate,
{
hasToDo:m.fileExists ({path:this.sourceUrl (this.getModuleUrl (_moduleName,false) + '.todo')}),
hasVisualTests:_hasDeepReference (_modulesTree,_visualTestsModuleNameFromWidgetClass (_moduleName))
}
);
}
});
}
});