@jdeighan/coffee-utils 4.1.2 → 4.1.6

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jdeighan/coffee-utils",
3
3
  "type": "module",
4
- "version": "4.1.2",
4
+ "version": "4.1.6",
5
5
  "description": "A set of utility functions for CoffeeScript",
6
6
  "main": "coffee_utils.js",
7
7
  "exports": {
@@ -42,6 +42,7 @@
42
42
  "dependencies": {
43
43
  "ava": "^3.15.0",
44
44
  "cross-env": "^7.0.3",
45
- "js-yaml": "^4.1.0"
45
+ "js-yaml": "^4.1.0",
46
+ "readline-sync": "^1.4.10"
46
47
  }
47
48
  }
@@ -14,9 +14,9 @@ import {debug, debugging, setDebugging} from '@jdeighan/coffee-utils/debug'
14
14
 
15
15
  export class UnitTester
16
16
 
17
- constructor: (whichTest='deepEqual', @fulltest=false) ->
17
+ constructor: (@file='unknown file') ->
18
18
  @hFound = {}
19
- @setWhichTest whichTest
19
+ @whichTest = 'deepEqual'
20
20
  @justshow = false
21
21
  @testing = true
22
22
  @maxLineNum = undef
@@ -180,7 +180,7 @@ export class UnitTester
180
180
  @lineNum = lineNum # set an object property
181
181
 
182
182
  if (lineNum < 0) && process.env.FINALTEST
183
- error "Negative line numbers not allowed in FINALTEST"
183
+ error "Negative line numbers not allowed in FINALTEST in #{@file}"
184
184
 
185
185
  if ! @testing || (@maxLineNum && (lineNum > @maxLineNum))
186
186
  return
@@ -242,9 +242,6 @@ export class UnitTester
242
242
 
243
243
  getLineNum: (lineNum) ->
244
244
 
245
- if @fulltest && (lineNum < 0)
246
- error "UnitTester(): negative line number during full test!!!"
247
-
248
245
  # --- patch lineNum to avoid duplicates
249
246
  while @hFound[lineNum]
250
247
  if lineNum < 0
package/src/UnitTester.js CHANGED
@@ -32,10 +32,10 @@ import {
32
32
 
33
33
  // ---------------------------------------------------------------------------
34
34
  export var UnitTester = class UnitTester {
35
- constructor(whichTest = 'deepEqual', fulltest = false) {
36
- this.fulltest = fulltest;
35
+ constructor(file = 'unknown file') {
36
+ this.file = file;
37
37
  this.hFound = {};
38
- this.setWhichTest(whichTest);
38
+ this.whichTest = 'deepEqual';
39
39
  this.justshow = false;
40
40
  this.testing = true;
41
41
  this.maxLineNum = undef;
@@ -189,7 +189,7 @@ export var UnitTester = class UnitTester {
189
189
  this.initialize();
190
190
  this.lineNum = lineNum; // set an object property
191
191
  if ((lineNum < 0) && process.env.FINALTEST) {
192
- error("Negative line numbers not allowed in FINALTEST");
192
+ error(`Negative line numbers not allowed in FINALTEST in ${this.file}`);
193
193
  }
194
194
  if (!this.testing || (this.maxLineNum && (lineNum > this.maxLineNum))) {
195
195
  return;
@@ -256,9 +256,6 @@ export var UnitTester = class UnitTester {
256
256
 
257
257
  // ........................................................................
258
258
  getLineNum(lineNum) {
259
- if (this.fulltest && (lineNum < 0)) {
260
- error("UnitTester(): negative line number during full test!!!");
261
- }
262
259
  // --- patch lineNum to avoid duplicates
263
260
  while (this.hFound[lineNum]) {
264
261
  if (lineNum < 0) {
@@ -1,5 +1,6 @@
1
1
  # coffee_utils.coffee
2
2
 
3
+ import getline from 'readline-sync'
3
4
  import {log} from '@jdeighan/coffee-utils/log'
4
5
 
5
6
  export sep_dash = '-'.repeat(42)
@@ -201,6 +202,12 @@ export isInteger = (x) ->
201
202
  else
202
203
  return false
203
204
 
205
+ # ---------------------------------------------------------------------------
206
+
207
+ export uniq = (lItems) ->
208
+
209
+ return [...new Set(lItems)]
210
+
204
211
  # ---------------------------------------------------------------------------
205
212
  # warn - issue a warning
206
213
 
@@ -208,13 +215,23 @@ export warn = (message) ->
208
215
 
209
216
  log "WARNING: #{message}"
210
217
 
218
+ # ---------------------------------------------------------------------------
219
+ # hashToStr - stringify a hash
220
+
221
+ export hashToStr = (h) ->
222
+
223
+ return JSON.stringify(h, Object.keys(h).sort(), 3)
224
+
211
225
  # ---------------------------------------------------------------------------
212
226
  # say - print to the console (for now)
213
227
  # later, on a web page, call alert(str)
214
228
 
215
- export say = (str, obj=undef) ->
229
+ export say = (x) ->
216
230
 
217
- log str, obj
231
+ if isHash(x)
232
+ console.log hashToStr(x)
233
+ else
234
+ console.log x
218
235
  return
219
236
 
220
237
  # ---------------------------------------------------------------------------
@@ -223,7 +240,8 @@ export say = (str, obj=undef) ->
223
240
 
224
241
  export ask = (prompt) ->
225
242
 
226
- return 'yes'
243
+ answer = getline.question("{prompt}? ")
244
+ return answer
227
245
 
228
246
  # ---------------------------------------------------------------------------
229
247
 
@@ -2,6 +2,8 @@
2
2
  // coffee_utils.coffee
3
3
  var commentRegExp;
4
4
 
5
+ import getline from 'readline-sync';
6
+
5
7
  import {
6
8
  log
7
9
  } from '@jdeighan/coffee-utils/log';
@@ -208,24 +210,41 @@ export var isInteger = function(x) {
208
210
  }
209
211
  };
210
212
 
213
+ // ---------------------------------------------------------------------------
214
+ export var uniq = function(lItems) {
215
+ return [...new Set(lItems)];
216
+ };
217
+
211
218
  // ---------------------------------------------------------------------------
212
219
  // warn - issue a warning
213
220
  export var warn = function(message) {
214
221
  return log(`WARNING: ${message}`);
215
222
  };
216
223
 
224
+ // ---------------------------------------------------------------------------
225
+ // hashToStr - stringify a hash
226
+ export var hashToStr = function(h) {
227
+ return JSON.stringify(h, Object.keys(h).sort(), 3);
228
+ };
229
+
217
230
  // ---------------------------------------------------------------------------
218
231
  // say - print to the console (for now)
219
232
  // later, on a web page, call alert(str)
220
- export var say = function(str, obj = undef) {
221
- log(str, obj);
233
+ export var say = function(x) {
234
+ if (isHash(x)) {
235
+ console.log(hashToStr(x));
236
+ } else {
237
+ console.log(x);
238
+ }
222
239
  };
223
240
 
224
241
  // ---------------------------------------------------------------------------
225
242
  // ask - ask a question
226
243
  // later, on a web page, prompt the user for answer to question
227
244
  export var ask = function(prompt) {
228
- return 'yes';
245
+ var answer;
246
+ answer = getline.question("{prompt}? ");
247
+ return answer;
229
248
  };
230
249
 
231
250
  // ---------------------------------------------------------------------------
@@ -23,7 +23,7 @@ lDebugStack = []
23
23
  # --- These are saved/restored in lDebugStack
24
24
  export debugging = false
25
25
  ifMatches = undef
26
- lDebugFuncs = undef
26
+ lDebugFuncs = undef # --- names of functions to debug
27
27
 
28
28
  stdLogger = false
29
29
 
@@ -51,7 +51,7 @@ export var debugging = false;
51
51
 
52
52
  ifMatches = undef;
53
53
 
54
- lDebugFuncs = undef;
54
+ lDebugFuncs = undef; // --- names of functions to debug
55
55
 
56
56
  stdLogger = false;
57
57
 
package/temp.js ADDED
@@ -0,0 +1,16 @@
1
+ // Generated by CoffeeScript 2.6.1
2
+ // temp.coffee
3
+ var str;
4
+
5
+ import {
6
+ hashToStr
7
+ } from '@jdeighan/coffee-utils';
8
+
9
+ // ---------------------------------------------------------------------------
10
+ str = hashToStr({
11
+ c: 3,
12
+ b: 2,
13
+ a: 1
14
+ });
15
+
16
+ console.log(str);