-
Notifications
You must be signed in to change notification settings - Fork 48
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
30 changed files
with
797 additions
and
459 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
node_modules/ | ||
.idea | ||
*.iml | ||
.vscode/** | ||
.vscode/** | ||
out |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
// is name correlate with code ? | ||
// if ( atelier ) { | ||
// testClass({ code: 'test.class.cls', file: 'class.cls' }) | ||
// } else { | ||
// testClass({ code: 'test.class.cls', file: 'test.class.cls' }) | ||
//} | ||
module.exports = ({ code, file, log = data => console.log(data) }) => { | ||
const arr = code.split(".").filter(s => !!s); // drop empty parts | ||
|
||
if (arr.length < 3) { | ||
// without package | ||
log( | ||
`Unable to detect class.name in ${file}. Is it a valid ObjectScript class?` | ||
); | ||
return false; | ||
} | ||
|
||
// NOTE: by default, we can use package 'User' | ||
// else if ( parts.length === 2 ){ | ||
// arr.unshift( 'User' ) //package by default | ||
// or parse 'import' directive ;) | ||
//} | ||
|
||
// is codename contain filename | ||
if (code.toLowerCase().includes(file.toLowerCase())) return true; | ||
// else | ||
log(`'${code}' defined in '${file}'. Rename the file or class`); | ||
return false; | ||
}; |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
// Caché class files can be placed hierarchically (e.g. /src/Package/Class.cls), | ||
// so we pick the class name from the class definition itself | ||
const pattern = /Class ([^\s]+)/i; //'Class test.class' | ||
|
||
module.exports = code => { | ||
const arr = code.match(pattern) || []; // ['Class test.class', 'test.class'] | ||
const name = arr[1] || "", | ||
ext = "cls"; | ||
return { name, ext }; // test.class.cls | ||
}; |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
/** | ||
* Import and compile current file. | ||
*/ | ||
const clsRegexName = require("./cls-regex-name"); | ||
const clsCheckNames = require("./cls-check-names"); | ||
const rtnRegexName = require("./rtn-regex-name"); | ||
const rtnCheckNames = require("./rtn-check-names"); | ||
|
||
// extract and verify name of active document | ||
// env - environment { window, languages, log } | ||
// return { name, content, error } | ||
const CurrentDoc = env => () => { | ||
/* | ||
env ={ | ||
window = {}, | ||
languages = [ 'cacheobjectscript', 'cacheobjectscriptinclude' ], | ||
log = data => console.log( 'cos.compile:', JSON.stringify( data ) ) | ||
} | ||
*/ | ||
const { window, languages, log } = env; | ||
const editor = window.activeTextEditor; | ||
if (!editor) | ||
return { | ||
error: "No active editor, open one at first" | ||
}; | ||
|
||
const doc = editor.document; | ||
if (!doc) | ||
return { | ||
error: "Open ObjectScript file first." | ||
}; | ||
|
||
const fullname = doc.fileName; | ||
if (!fullname) | ||
return { | ||
error: "You must save the document first" | ||
}; | ||
|
||
if (!languages.includes(doc.languageId)) | ||
return { | ||
error: `${fullname} has unsupported type ${doc.languageId}` | ||
}; | ||
|
||
let file = (fullname.match(/[^\\\/]+$/) || [])[0] || ""; //only filename without folders | ||
let code = doc.getText(); | ||
let ncode = code.replace(/\/\/[^\r\n]*\r?\n/g, ""); // normalize EOL? | ||
let name, ext, codename; //server side name | ||
|
||
const cdnm = ({ name, ext }) => [name, ext].join("."); | ||
|
||
if (/\.cls$/i.test(fullname)) { | ||
// is class? | ||
|
||
({ name, ext } = clsRegexName(ncode)); | ||
codename = cdnm({ name, ext }); | ||
if (!clsCheckNames({ code: codename, file, log })) | ||
return { | ||
error: "check names" | ||
}; | ||
} else { | ||
// routines | ||
|
||
({ name, ext } = rtnRegexName(ncode)); | ||
codename = cdnm({ name, ext }); | ||
if (!rtnCheckNames({ code: codename, file, log })) | ||
return { | ||
error: "check names" | ||
}; | ||
} | ||
|
||
return { | ||
name: codename, | ||
content: code.split(/\r?\n/g), // get code lines array | ||
error: "", | ||
fileName: fullname | ||
}; | ||
}; | ||
|
||
module.exports = { CurrentDoc }; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
import { sep } from "path"; | ||
//for example: 'mypkg.subpkg.myclass.cls' | ||
// return 'mypkg/subpkg/' | ||
module.exports = docname => { | ||
const parts = docname.split("."); // [ 'mypkg', 'subpkg', 'myclass', 'cls' ] | ||
const packagesEnd = parts.length - 2; // name and extension | ||
return [ | ||
parts.slice(0, packagesEnd).join(sep), // packages to subfolders | ||
parts.slice(packagesEnd).join(".") | ||
].join(sep); | ||
}; |
Oops, something went wrong.