Script Reference
CodeGeneratorTools
Static class for converting XML templates to programming code.
//convert XML to code
var tmpGeneratedCodeFile = ...;
CodeGeneratorTools.ConvertXmlToPhpCode(generatedFileName,tmpGeneratedCodeFile,true);
| Method | Description |
|---|
CodeGeneratorTools | static object |
ConvertXmlToPhpCode(inputFile,outputFile, useFirstChild) | convert XML to PHP code |
CFileEnumerator
Class for file enumeration
var fe = new CFileEnumerator(feNotifier);
fe.AddDirMask(".svn", CFileEnumerator.MASK_WILDCARD, CFileEnumerator.FILE_EXCLUDE);
fe.Enumerate(directoryFileName);
//get found files
var fl = fe.GetFoundFiles();
| Method | Description |
|---|
CFileEnumerator() | construct file enumerator without binding to notifier object |
CFileEnumerator(notifier) | construct file enumerator with binding to notifier object |
AddFileMask(mask,maskType,includeExclude) | add file mask |
AddDirMask(mask,maskType,includeExclude) | add directory mask |
AddFullFilePathMask(mask,maskType,includeExclude) | add full path file mask |
AddFullDirPathMask(mask,maskType,includeExclude) | add full path directory mask |
AddFileSizeRule(fileSize,ruleSizeType) | add rule by file size |
Enumerate(path, clearPreviousResults) | enumerate files and directories based on rules |
ResetAllRules() | clear all rules |
GetFoundDirs(ordered = true) | return array of found directories |
GetFoundFiles(ordered = true) | return array of found files |
| Constant | Type | Description |
|---|
MASK_WILDCARD | maskType | search by wildcard |
MASK_REGEX | maskType | search by regex |
FILE_INCLUDE | includeExclude | include file if rule is true |
FILE_EXCLUDE | includeExclude | exclude file if rule is true |
FILESIZE_MINIMUM | ruleSizeType | passed value is minimum file size |
FILESIZE_MAXIMUM | ruleSizeType | passed value is maximum file size |
FILESIZE_EXACT | ruleSizeType | passed value have to be exact file size |
CFileEnumeratorNotifier
This class allows to pass notification callback to CFileEnumerator class.
var feNotifier = new CFileEnumeratorNotifier;
feNotifier.fceOnDirectory =
function(path){ MessageCenter.ProgressSetMessage("status", path); };
//scan for files by path and extension
var fe = new CFileEnumerator(feNotifier);
| Method | Description |
|---|
CFileEnumeratorNotifier() | construct file enumerator notifier |
| Property | Description |
|---|
fceOnDirectory | callback function onDirectory |
FileTools
Static class with file manipulation routines.
//convert XML to code
var fileName = ...;
FileTools.ExistsFile(fileName);
| Method | Description |
|---|
FileTools | static object |
CopyFile(inputFileName, outputFileName) | copy file |
DeleteFile(fileName) | delete file |
AppendFile(inputFileName, appendToFileName) | append file to another file |
AppendString(inputContent, appendToFileName) | append string to file |
ReplaceFileContent(inputFileName, destinationFileName) | replace content in destinationFileName by using content from inputFileName |
CreateFilePath(path,...) | create file path from multiple parts |
IsAbsolutePath(fileName) | test if path is absolute |
GetFileExtension(fileName) | get file extension |
GetPathFromFullFileName(fileName) | get path from full file name |
GetFileNameFromFullFileName(fileName,withExtension) | get filename from full file name |
GetRelativePathDirToFile(startDirectory,toFile) | get relative path - directory to file |
GetRelativePathDirToDir(startDirectory,toDirectory,returnDotInsteadEmpty) | get relative path - directory to directory |
ExtractZipFile(zipFile, extractDirectory) | extract zip files to directory (returns list of files) |
GetNormalizedPath(path) | normalize path |
ConvertPathToUniversalFormat(path) | convert path to universal format file path |
CompareFiles(file1, file2) | compare files (true/false) |
ExistsFile(file) | test if file exists (true/false) |
ExistsDirectory(file) | test if directory exists (true/false) |
MessageCenter
Helper class for displaying progress messages during script execution.
//status
MessageCenter.ProgressSetMessage("operation", "Exporting Doctrine files...");
MessageCenter.ProgressSetMessage("status", "Transforming project file");
| Method | Description |
|---|
ProgressSetMessage(channel,text) | send progress text to specified channel |
Message(messageText) | debug message |
Trace(traceText) | debug trace |
MLTools
Static class with markup langages (XML,YML,XSLT) routines.
//convert YML to XML
MLTools.ConvertYamlToXml(ymlFile, xmlFile);
//setup transform params
var xslParams = new Array();
xslParams["import-path"] = fileName;
xslParams["import-format"] = "DoctrineYml";
MLTools.XslTransformation(inputXml, inputXslt, outputFile, xslParams);
//split and merge files
var splitFiles = MLTools.XmlSplitFile(inputXmlFile);
MLTools.XmlMergeFiles(splitFiles, outputFile);
//read values from xml
var xmlQuery = {"destinationPath" : "/import-export-file/@import-path"};
MLTools.XmlReadValues(fileName, xmlQuery);
var result = xmlQuery["destinationPath"];
| Method | Description |
|---|
ConvertYamlToXml(inputFileName,outputFileName) | convert YML file to YML-in-XML file |
ConvertXmlToYaml(inputFileName,outputFileName) | convert YML-in-XML to YML file |
XslTransformation(inputFN,xsltFN,outputFN,mapParams) | execute XSL transformation |
XmlMergeFiles(lstInputXmlFiles,outputFile) | merge multiple XML files to one |
XmlSplitFile(inputFile) | split single file to multiple XML files (array of files) |
XmlReadValues(inputFileName,varParams) | read values by xpath from XML |
XmlReadValue(inputFileName,xpath) | read single value by xpath from XML |
YamlReadValues(inputFileName,varParams) | read values by xpath from YML |
MergeTagsInXml(inputFileName, XPathMergeElements, UuidAttribute='uuid', MoveEncapsulerElements=false) | merge passed elements with the rest of documents based on uuid attribute. use MoveEncapsulerElements to move also encapsuler element. |
RemoveSpecificElement(strInputFileName, strXpathToElementsToRemove)` | remove specific elements |
RemoveElementsAndMoveChildren(strInputFileName, strXpathToElementsToRemove) | remove specific element and move all his children to original element location |
OrmdProject
Class object representing current Skipper project. This clas is passed to all functions and it isn't possible to create new one.
function DoctrineImport(objProject, arrayInputFiles)
{
//type of objProject is OrmdProject
}
| Method | Description |
|---|
LoadProject(inputFileName, proceedUpdate=false) | load project file to object. if proceedUpdate is true, ORMD updates project to latest version |
SaveProjectToSpecificFile(outputFN,withExportTags,asSingleFile=true) | save project to specified file. |
GetProjectRootDirectory() | return project root directory |
LocateConfigurationFileName(fileName) | search for specified filename in configuration directories |
GetProjectSettingsValue(keyName) | get setting value from <skipper-configuration>/<specific-settings>/<setting> by name |
SkipperTools
Static class with Skipper tools. Currently empty.
//usage example
SkipperTools.Method(params);
| Method | Description |
|---|
Method | description |
StringTools
Static class for string manipulation.
| Method | Description |
|---|
RegExGet(inputString,regEx,position=0) | get substring based on regex |
RegExMatch(inputString,regEx) | test string based on regex |
Replace(text,from,to) | replace values in string |
ConvertToUnderLine(text) | convert string to underline |
SubstringBeforeLast(text,substr,caseSensitive=1,returnAllWhenNotFound=0) | get substring before last occurence |
CTemporaryFile
Class for creating temporary file path.
var tmpFileConvertToXml = new CTemporaryFile;
| Method | Description |
|---|
CTemporaryFile() | construct temporary file path |
CTemporaryFile(prefix) | construct temporary file path with specified prefix |
CTemporaryFile(prefix,extension) | construct temporary file path with specified prefix and extension |
GetFileName() | get file name |
toString() | convert to string |
CTemporaryDirectory
Class for creating temporary file directory.
var tmpDirectory = new CTemporaryDirectory;
| Method | Description |
|---|
CTemporaryDirectory() | construct temporary directory path |
CTemporaryDirectory(prefix) | construct temporary directory path with specified prefix |
GetDirectoryPath() | get directory path |
toString() | convert to string |
UnitTestTools
Static class for unit-testing purposes.
var tmpFileConvertToXml = new CTemporaryFile;
| Method | Description |
|---|
CopyFile(source,destination) | copy file from source to destination. Copies file only in UnitTest mode |
IsUnitTest() | test if application is in UnitTst mode |
TEST_CHECK(expression) | test expression and result pass to UnitTest framework |
TEST_CHECK_EQUAL(v1,v2) | compare v1 and v2 and result pass to UnitTest framework |
trace(text) | send trace to UnitTest framework |
CAbstractManipulator
Base class for manipulation with code files.
var mergeRules = new CAstMergeRules;
var phpResult = new CPhpManipulator;
phpResult.ParseSourceFile(fullDestinationPath);
phpResult.OptimizeAstTree();
phpResult.MergeWithAst(phpGenerated, mergeRules);
| Method | Description |
|---|
ParseSourceFile(filePath) | parse source file to inner AST tree |
SaveSourceFile(filePath) | save inner AST tree as source file |
LoadAstFile(filePath) | load AST XML tree |
SaveAstFile(filePath) | save AST XML tree |
InvalidateAllElements() | mark all AST elements as modified |
RemoveAllWhitespaces() | remove all whitespaces from AST tree |
RemoveAllGenerableContent() | remove all generable content from AST tree |
OptimizeAstTree() | optimize AST tree to proceed-able state |
UnoptimizeAstTree() | revert back optimized AST tree to original |
ReformatAst(modifyOnly,maxRowLength=80,newLine="\n",indent="_") | reformat AST tree (spacing, tabs, newlines) |
MergeWithAst(phpManipulatorSource,mergeRules) | merge two AST trees based on rules |
RegisterDefaultNamespaceForAnnotations(namespace, annotations) | register default namespaces for annotations |
UnitTestSaveAstFile(filePath,saveModifiedFlags=false) | save ast tree when running UnitTests |
UnitTestSaveSourceFile(filePath) | save source file when running UnitTests |
CPhpManipulator
Class for manipulation with PHP files. Derived from CAbstractManipulator.
CJavaManipulator
Class for manipulation with JAVA files. Derived from CAbstractManipulator
CProgramAnnotationsDetector
Class for searching files with specified annotations.
//setup PHP annotations scanner
var annotationsScanner = new CProgramAnnotationsDetector;
annotationsScanner.InsertSearchedAnnotations("Doctrine\\ORM\\Mapping\\Entity");
annotationsScanner.InsertStopMarks("class");
annotationsScanner.RegisterDefaultNamespaceForAnnotations("Doctrine\\ORM\\Mapping","Entity");
annotationsScanner.SetMaximumScanLength(4096);
var bIsFileWithEntity = annotationsScanner.ScanFile(file);
| Method | Description |
|---|
InsertSearchedAnnotations(searchedAnnotation) | setup annotation to find |
RegisterDefaultNamespaceForAnnotations(namespace, annotations) | register default namespaces for specified annotations |
ScanFile(filePath) | Scan passed file for specified annotation |
InsertStopMarks(stopMarks) | define string stop for scanned files |
SetMaximumScanLength(scanLength) | define maximum size of file to scan |
CAstMergeRules
Class for defining AST merge rules. Rules are evaluated from bottom to top. So the rule entered as latest has the highest priority during evaluation.
var mergeRules = new CAstMergeRules;
//default behavior is ADD anything new, DON'T DELETE or UPDATE anything.
//If elements are equal, KEEP them
mergeRules.SetDefaultRule(
CAstMergeRules.ACTION_MERGE, CAstMergeRules.RULE_KEEP,
CAstMergeRules.RULE_KEEP, CAstMergeRules.RULE_KEEP
);
//set special rule for functions. If function exists, DONT't test content(child)
mergeRules.AddRuleByType(true,"function",
CAstMergeRules.RULE_MERGE, CAstMergeRules.RULE_KEEP,
CAstMergeRules.RULE_KEEP,CAstMergeRules.RULE_SKIP
);
//set special rule for Doctrine2 annotations (and everything else in Doctrine NS).
//Insert missing, remove excess, update different, merge-the-same (if you want to keep
//unmodified values, set this value to RULE_KEEP)
mergeRules.AddRuleByTypeNameNamespace(true, "","", "Doctrine\\ORM\\Mapping",
CAstMergeRules.RULE_MERGE, CAstMergeRules.RULE_MERGE,
CAstMergeRules.RULE_MERGE, CAstMergeRules.RULE_MERGE
);
| Method | Description |
|---|
ruleWhenMissing, ruleWhenExcess, ruleWhenDifferent, ruleWhenEqual | rule params |
SetDefaultRule(*rules) | set default rule for all elements |
AddRuleByName(ifMatchResult, name, *rules) | set rule by element name |
AddRuleByType(ifMatchResult, type, *rules) | set rule by element type |
AddRuleByTypeName(ifMatchResult, type, name,*rules) | set rule by element name and type |
AddRuleByTypeNameNamespace(ifMatchResult, type, name, namespace, *rules) | set rule by name and namespace |
AddParentTypeRuleByType(ifMatchResult, parentType, type, *rules) | set rule by parent type and element type |
SetDeepHashForElement(fullElementName) | setup elements for deep hashing instead local hashing |
ClearRules() | clear all rules |
| Parameter | Description |
|---|
ruleWhenMissing | rule applied when annotation is missing in destination tree |
ruleWhenExcess | rule applied when annotation excess in destination tree |
ruleWhenDifferent | rule applied when source and destination annotation is different |
ruleWhenEqual | rule applied when source and desgination annotation is eual |
ifMatchResult | determines if we're looking for match or differ => ax_xor(ifMatchResult,expression) |
name | rule by annotation name |
type | rule by annotation type |
namespace | rule by annotation namespace |
| Constants | Description |
|---|
RULE_MERGE | merge found elements to one (child elements are copied) |
RULE_KEEP | keep found element |
RULE_SKIP | keep found element and don't proceed child |
RULE_UNDEFINED | proceed by default rules |
SystemTools
Static class with system routines.
//execute command
var command = ...;
SystemTools.ExecuteCommand(command);
| Method | Description |
|---|
SystemTools | static object |
ExecuteCommand(command, workingDir) | execute passed command in working dir (optional) |
CNamespaceAbsoluteCalculator
This class allows to calculate all missing namespaces in source XML. It's useful when importing schema files with relative namespaces inside to simplify following XSLT transfomations.
Note: Xpath evaluator has mapped "dns" namespace alias to document's default namespace.
var namespaceCalculator = new CNamespaceAbsoluteCalculator;
namespaceCalculator.DefineNamespace("http://inventic.eu", "inv");
namespaceCalculator.ConfigureObject("/inv:document/inv:entity","entity","name");
namespaceCalculator.ConfigureReference("//association","from");
namespaceCalculator.ConfigureReference("//one-to-many",Array("from","to"));
namespaceCalculator.CalculateNamespaces(filePath);
| Method | Description |
|---|
CNamespaceAbsoluteCalculator() | construct namespace calculator |
ConfigureObject(objectXpath,objectElement, nameAttribute) | configure object with namespaces, object element and attribute which holds object name |
ConfigureReference(objectXpath, setAttributes) | configure elements which references to objects and attributes which hold referenced names |
CalculateNamespaces(pathFile) | execute namespace calculation on selected file |
DefineNamespace(strNamespace, strPrefix) | Define new namespace for Xpath (for element localization) |