occam-verify-cli 0.0.1006 → 0.0.1007

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/log.js CHANGED
@@ -25,37 +25,37 @@ export default class Log {
25
25
  return this.follow;
26
26
  }
27
27
 
28
- trace(message, node, tokens, filePath) {
28
+ trace(message, filePath) {
29
29
  const level = TRACE_LEVEL;
30
30
 
31
- this.write(level, message, node, tokens, filePath);
31
+ this.write(level, message, filePath);
32
32
  }
33
33
 
34
- debug(message, node, tokens, filePath) {
34
+ debug(message, filePath) {
35
35
  const level = DEBUG_LEVEL;
36
36
 
37
- this.write(level, message, node, tokens, filePath);
37
+ this.write(level, message, filePath);
38
38
  }
39
39
 
40
- info(message, node, tokens, filePath) {
40
+ info(message, filePath) {
41
41
  const level = INFO_LEVEL;
42
42
 
43
- this.write(level, message, node, tokens, filePath);
43
+ this.write(level, message, filePath);
44
44
  }
45
45
 
46
- warning(message, node, tokens, filePath) {
46
+ warning(message, filePath) {
47
47
  const level = WARNING_LEVEL;
48
48
 
49
- this.write(level, message, node, tokens, filePath);
49
+ this.write(level, message, filePath);
50
50
  }
51
51
 
52
- error(message, node, tokens, filePath) {
52
+ error(message, filePath) {
53
53
  const level = ERROR_LEVEL;
54
54
 
55
- this.write(level, message, node, tokens, filePath);
55
+ this.write(level, message, filePath);
56
56
  }
57
57
 
58
- write(level, message, node, tokens, filePath) {
58
+ write(level, message, filePath) {
59
59
  const levels = [
60
60
  TRACE_LEVEL,
61
61
  DEBUG_LEVEL,
@@ -70,7 +70,7 @@ export default class Log {
70
70
  return;
71
71
  }
72
72
 
73
- message = formatMessage(level, message, node, tokens, filePath); ///
73
+ message = formatMessage(level, message, filePath); ///
74
74
 
75
75
  this.follow ?
76
76
  console.log(message) :
@@ -96,27 +96,12 @@ export default class Log {
96
96
  }
97
97
  }
98
98
 
99
- function formatMessage(level, message, node = null, tokens = null, filePath = null) {
99
+ function formatMessage(level, message, filePath = null) {
100
100
  const upperCaseLevel = level.toUpperCase();
101
101
 
102
- if ((node === null) || (tokens === null)) {
103
- message = (filePath !== null) ?
104
- `${upperCaseLevel}: ${filePath} - ${message}`:
105
- `${upperCaseLevel}: ${message}`;
106
- } else {
107
- const leastLineIndex = leastLineIndexFromNodeAndTokens(node, tokens),
108
- leastLineNumber = leastLineIndex, ///
109
- greatestLineIndex = greatestLineIndexFromNodeAndTokens(node, tokens),
110
- greatestLineNumber = greatestLineIndex; ///
111
-
112
- if (leastLineNumber === greatestLineNumber) {
113
- const lineNumber = leastLineNumber; ///
114
-
115
- message = `${upperCaseLevel}: ${filePath} (${lineNumber}) - ${message}`;
116
- } else {
117
- message = `${upperCaseLevel}: ${filePath} (${leastLineNumber}-${greatestLineNumber}) - ${message}`;
118
- }
119
- }
102
+ message = (filePath !== null) ?
103
+ `${upperCaseLevel}: ${filePath} - ${message}`:
104
+ `${upperCaseLevel}: ${message}`;
120
105
 
121
106
  return message;
122
107
  }
package/src/metaType.js CHANGED
@@ -71,11 +71,13 @@ Object.assign(shim, {
71
71
  export default MetaType;
72
72
 
73
73
  export function metaTypeFromJSON(json, fileContext) {
74
- let metaType;
74
+ let metaType = null;
75
75
 
76
- const { name } = json;
76
+ if (json !== null) {
77
+ const { name } = json;
77
78
 
78
- metaType = new MetaType(name);
79
+ metaType = new MetaType(name);
80
+ }
79
81
 
80
82
  return metaType;
81
83
  }
@@ -2,13 +2,13 @@
2
2
 
3
3
  import { metaTypeFromJSON } from "./metaType";
4
4
  import { metavariableNameFromMetavariableNode } from "./utilities/name";
5
+ import { metavariableNodeFromMetavariableString } from "./utilities/node";
5
6
 
6
7
  export default class Metavariable {
7
- constructor(string, node, name, termType, metaType) {
8
+ constructor(string, node, name, metaType) {
8
9
  this.string = string;
9
10
  this.node = node;
10
11
  this.name = name;
11
- this.termType = termType;
12
12
  this.metaType = metaType;
13
13
  }
14
14
 
@@ -24,10 +24,6 @@ export default class Metavariable {
24
24
  return this.name;
25
25
  }
26
26
 
27
- getTermType() {
28
- return this.termType;
29
- }
30
-
31
27
  getMetaType() {
32
28
  return this.metaType;
33
29
  }
@@ -80,8 +76,7 @@ export default class Metavariable {
80
76
 
81
77
  const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
82
78
  name = metavariableName, ///
83
- termType = termTypeFromMetavariableNode(metavariableNode, fileContext),
84
- metavariable = new Metavariable(string, node, name, termType, metaType);
79
+ metavariable = new Metavariable(string, node, name, metaType);
85
80
 
86
81
  return metavariable;
87
82
  }
@@ -91,19 +86,18 @@ export default class Metavariable {
91
86
  name = metavariableName, ///
92
87
  node = metavariableNode, ///
93
88
  string = fileContext.nodeAsString(node),
94
- termType = null,
95
89
  metaType = null,
96
- metavariable = new Metavariable(string, node, name, termType, metaType);
90
+ metavariable = new Metavariable(string, node, name, metaType);
97
91
 
98
92
  return metavariable;
99
93
  }
100
94
 
101
- static fromMetavariableNodeNameTermTypeAndMetaType(metavariableNode, termType, metaType, fileContext) {
95
+ static fromMetavariableNodeAndMetaType(metavariableNode, metaType, fileContext) {
102
96
  const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
103
97
  name = metavariableName, ///
104
98
  node = metavariableNode, ///
105
99
  string = fileContext.nodeAsString(node),
106
- metavariable = new Metavariable(string, node, name, termType, metaType);
100
+ metavariable = new Metavariable(string, node, name, metaType);
107
101
 
108
102
  return metavariable;
109
103
  }
package/src/premise.js CHANGED
@@ -9,6 +9,7 @@ import UnqualifiedStatement from "./statement/unqualified";
9
9
  import { trim } from "./utilities/string";
10
10
  import { nodeQuery } from "./utilities/query";
11
11
  import { assignAssignments } from "./utilities/assignments";
12
+ import { unqualifiedStatementNodeFromUnqualifiedStatementString } from "./utilities/node";
12
13
 
13
14
  const unqualifiedStatementNodeQuery = nodeQuery("/premise/unqualifiedStatement");
14
15
 
@@ -152,7 +153,16 @@ export default class Premise {
152
153
  }
153
154
 
154
155
  static fromJSON(json, fileContext) {
155
- let premise = null;
156
+ let { unqualifiedStatement } = json;
157
+
158
+ const lexer = fileContext.getLexer(),
159
+ parser = fileContext.getParser(),
160
+ unqualifiedStatementString = unqualifiedStatement, ///
161
+ unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementString(unqualifiedStatementString, lexer, parser);
162
+
163
+ unqualifiedStatement = UnqualifiedStatement.fromUnqualifiedStatementNode(unqualifiedStatementNode, fileContext);
164
+
165
+ const premise = new Premise(fileContext, unqualifiedStatement);
156
166
 
157
167
  return premise;
158
168
  }
package/src/ruleNames.js CHANGED
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
2
 
3
3
  export const TERM_RULE_NAME = "term";
4
+ export const METAVARIABLE_RULE_NAME = "metavariable";
4
5
  export const UNQUALIFIED_STATEMENT_RULE_NAME = "unqualifiedStatement";
@@ -4,8 +4,12 @@ import { parsersUtilities } from "occam-custom-grammars";
4
4
 
5
5
  import { nodeQuery } from "../utilities/query";
6
6
  import { combinedCustomGrammarFromNothing } from "./customGrammar";
7
- import { TERM_RULE_NAME, UNQUALIFIED_STATEMENT_RULE_NAME } from "../ruleNames";
8
- import { termTokensFromTermString, unqualifiedStatementTokensFromUnqualifiedStatementString } from "../utilities/tokens";
7
+ import { TERM_RULE_NAME,
8
+ METAVARIABLE_RULE_NAME,
9
+ UNQUALIFIED_STATEMENT_RULE_NAME } from "../ruleNames";
10
+ import { termTokensFromTermString,
11
+ metavariableTokensFromMetavariableString,
12
+ unqualifiedStatementTokensFromUnqualifiedStatementString } from "../utilities/tokens";
9
13
 
10
14
  const { nominalParserFromCombinedCustomGrammar } = parsersUtilities;
11
15
 
@@ -31,6 +35,20 @@ export function statementNodeFromStatementString(statementString, lexer, parser)
31
35
  return statementNode;
32
36
  }
33
37
 
38
+ export function metavariableNodeFromMetavariableString(metavariableString, lexer, parser) {
39
+ const metavariableTokens = metavariableTokensFromMetavariableString(metavariableString, lexer),
40
+ metavariableNode = metavariableNodeFromMetavariableTokens(metavariableTokens, parser);
41
+
42
+ return metavariableNode;
43
+ }
44
+
45
+ export function unqualifiedStatementNodeFromUnqualifiedStatementString(unqualifiedStatementString, lexer, parser) {
46
+ const unqualifiedStatementTokens = unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer),
47
+ unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser);
48
+
49
+ return unqualifiedStatementNode;
50
+ }
51
+
34
52
  export function termNodeFromTermTokens(termTokens, parser) {
35
53
  const tokens = termTokens, ///
36
54
  ruleName = TERM_RULE_NAME,
@@ -39,6 +57,13 @@ export function termNodeFromTermTokens(termTokens, parser) {
39
57
  return termNode;
40
58
  }
41
59
 
60
+ export function metavariableNodeFromMetavariableTokens(metavariableTokens, parser) {
61
+ const ruleName = METAVARIABLE_RULE_NAME,
62
+ metavariableNode = nodeFromTokensRuleNameAndParser(metavariableTokens, ruleName, parser);
63
+
64
+ return metavariableNode;
65
+ }
66
+
42
67
  export function unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser) {
43
68
  const tokens = unqualifiedStatementTokens, ///
44
69
  ruleName = UNQUALIFIED_STATEMENT_RULE_NAME,
@@ -101,18 +101,16 @@ export function initialiseReleaseContext(dependency, context) {
101
101
  releaseContextInitialised = releaseContext.isInitialised();
102
102
 
103
103
  if (!releaseContextInitialised) {
104
- const dependencyReleaseContextsInitialised = initialiseDependencyReleaseContexts(dependency, releaseContext, context);
104
+ initialiseDependencyReleaseContexts(dependency, releaseContext, context);
105
105
 
106
- if (dependencyReleaseContextsInitialised) {
107
- const { log } = context,
108
- releaseContexts = retrieveReleaseContexts(releaseContext, releaseContextMap);
106
+ const { log } = context,
107
+ releaseContexts = retrieveReleaseContexts(releaseContext, releaseContextMap);
109
108
 
110
- log.debug(`Initialising the '${dependencyName}' context...`);
109
+ log.debug(`Initialising the '${dependencyName}' context...`);
111
110
 
112
- releaseContext.initialise(releaseContexts);
111
+ releaseContext.initialise(releaseContexts);
113
112
 
114
- log.info(`...initialised the '${dependencyName}' context.`);
115
- }
113
+ log.info(`...initialised the '${dependencyName}' context.`);
116
114
  }
117
115
  }
118
116
 
@@ -16,6 +16,13 @@ export function termTokensFromTermString(termString, lexer) {
16
16
  return termTokens;
17
17
  }
18
18
 
19
+ export function metavariableTokensFromMetavariableString(metavariableString, lexer) {
20
+ const metavariableContent = `${metavariableString}`,
21
+ metavariableTokens = tokensFromContentAndLexer(metavariableContent, lexer);
22
+
23
+ return metavariableTokens;
24
+ }
25
+
19
26
  export function unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer) {
20
27
  const content = unqualifiedStatementString, ///
21
28
  unqualifiedStatementTokens = tokensFromContentAndLexer(content, lexer);
@@ -52,24 +52,13 @@ function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
52
52
  metaTypeVerified = verifyMetaType(metaTypeNode, metaTypes, fileContext);
53
53
 
54
54
  if (argumentVerified && metaTypeVerified) {
55
- let termType,
56
- metaType;
55
+ let metaType;
57
56
 
58
57
  const firstMetaType = first(metaTypes);
59
58
 
60
59
  metaType = firstMetaType; ///
61
60
 
62
- const termTypesLength = termTypes.length;
63
-
64
- if (termTypesLength === 0) {
65
- termType = null;
66
- } else {
67
- const firstTermType = first(termTypes);
68
-
69
- termType = firstTermType; ///
70
- }
71
-
72
- const metavariable = Metavariable.fromMetavariableNodeNameTermTypeAndMetaType(metavariableNode, termType, metaType, fileContext),
61
+ const metavariable = Metavariable.fromMetavariableNodeAndMetaType(metavariableNode, metaType, fileContext),
73
62
  metavariableAssignment = MetavariableAssignment.fromMetavariable(metavariable),
74
63
  metavariableAssigned = metavariableAssignment.assign(fileContext);
75
64
 
@@ -19,7 +19,7 @@ export default function verifyFiles(releaseContext) {
19
19
  if (filePathNominalFilePath) {
20
20
  return true;
21
21
  }
22
- })
22
+ });
23
23
 
24
24
  for (;;) {
25
25
  const filePathsLength = filePaths.length;
@@ -2,34 +2,46 @@
2
2
 
3
3
  import verifyFiles from "../verify/files";
4
4
 
5
- export default function verifyRelease(releaseName, releaseContextMap) {
5
+ export default function verifyRelease(releaseName, dependentName, dependentReleased, releaseContextMap) {
6
6
  let releaseVerified = false;
7
7
 
8
8
  const releaseContext = releaseContextMap[releaseName];
9
9
 
10
10
  if (releaseContext !== null) {
11
- const dependencyReleasesVVerified = verifyDependencyReleases(releaseContext, releaseContextMap);
11
+ const released = releaseContext.isReleased();
12
12
 
13
- if (dependencyReleasesVVerified) {
14
- const verified = releaseContext.isVerified();
15
-
16
- if (verified) {
17
- releaseVerified = true;
13
+ if (released) {
14
+ releaseVerified = true;
15
+ } else {
16
+ if (dependentReleased) {
17
+ releaseContext.warning(`The '${releaseName}' project cannot be verified because its '${dependentName}' dependent is a package.`);
18
18
  } else {
19
- releaseContext.info(`Verifying the '${releaseName}' project...`);
19
+ const dependentName = releaseName, ///
20
+ dependentReleased = released, ///
21
+ dependencyReleasesVVerified = verifyDependencyReleases(releaseContext, dependentName, dependentReleased, releaseContextMap);
20
22
 
21
- const releaseFilesVerified = verifyReleaseFiles(releaseContext);
23
+ if (dependencyReleasesVVerified) {
24
+ const verified = releaseContext.isVerified();
22
25
 
23
- if (releaseFilesVerified) {
24
- const verified = true;
26
+ if (verified) {
27
+ releaseVerified = true;
28
+ } else {
29
+ releaseContext.info(`Verifying the '${releaseName}' project...`);
25
30
 
26
- releaseContext.setVerified(verified);
31
+ const releaseFilesVerified = verifyReleaseFiles(releaseContext);
27
32
 
28
- releaseVerified = verified; ///
29
- }
33
+ if (releaseFilesVerified) {
34
+ const verified = true;
35
+
36
+ releaseContext.setVerified(verified);
30
37
 
31
- if (releaseVerified) {
32
- releaseContext.info(`...verified the '${releaseName}' project.`);
38
+ releaseVerified = verified; ///
39
+ }
40
+
41
+ if (releaseVerified) {
42
+ releaseContext.info(`...verified the '${releaseName}' project.`);
43
+ }
44
+ }
33
45
  }
34
46
  }
35
47
  }
@@ -45,12 +57,12 @@ function verifyReleaseFiles(releaseContext) {
45
57
  return releaseFilesVerified;
46
58
  }
47
59
 
48
- function verifyDependencyReleases(releaseContext, releaseContextMap) {
60
+ function verifyDependencyReleases(releaseContext, dependentName, dependentReleased, releaseContextMap) {
49
61
  const dependencies = releaseContext.getDependencies(),
50
62
  dependencyReleasesVVerified = dependencies.everyDependency((dependency) => {
51
63
  const name = dependency.getName(),
52
64
  releaseName = name, ///
53
- releaseVerified = verifyRelease(releaseName, releaseContextMap);
65
+ releaseVerified = verifyRelease(releaseName, dependentName, dependentReleased, releaseContextMap);
54
66
 
55
67
  if (releaseVerified) {
56
68
  return true;