@jdeighan/coffee-utils 13.0.14 → 13.0.16

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": "13.0.14",
4
+ "version": "13.0.16",
5
5
  "description": "A set of utility functions for CoffeeScript",
6
6
  "main": "coffee_utils.js",
7
7
  "exports": {
@@ -50,13 +50,13 @@
50
50
  },
51
51
  "homepage": "https://github.com/johndeighan/coffee-utils#readme",
52
52
  "dependencies": {
53
- "@jdeighan/base-utils": "^2.0.9",
53
+ "@jdeighan/base-utils": "^2.0.12",
54
54
  "cross-env": "^7.0.3",
55
55
  "n-readlines": "^1.0.1",
56
56
  "readline-sync": "^1.4.10",
57
57
  "svelte": "^3.55.0"
58
58
  },
59
59
  "devDependencies": {
60
- "@jdeighan/unit-tester": "^3.0.9"
60
+ "@jdeighan/unit-tester": "^3.0.12"
61
61
  }
62
62
  }
package/src/block.coffee CHANGED
@@ -4,72 +4,16 @@ import fs from 'fs'
4
4
  import readline from 'readline'
5
5
 
6
6
  import {assert, croak} from '@jdeighan/base-utils'
7
- import {blockToArray, arrayToBlock} from '@jdeighan/base-utils/utils'
7
+ import {
8
+ blockToArray, arrayToBlock, toArray, toBlock,
9
+ } from '@jdeighan/base-utils/utils'
8
10
  import {
9
11
  undef, pass, defined, notdefined,
10
12
  isEmpty, isString, isArray, nonEmpty, isArrayOfStrings,
11
13
  rtrim, OL,
12
14
  } from '@jdeighan/coffee-utils'
13
15
 
14
- export {blockToArray, arrayToBlock}
15
-
16
- # ---------------------------------------------------------------------------
17
- # toArray - split a block or array into lines w/o newlines
18
-
19
- export toArray = (item, option=undef) ->
20
- # --- Valid options:
21
- # 'noEmptyLines'
22
- # 'noLeadingEmptyLines'
23
-
24
- if isString(item)
25
- lLines = item.split(/\r?\n/)
26
- else if isArray(item)
27
- lLines = item
28
- else
29
- croak "Not a string or array"
30
-
31
- # --- We need to ensure that no strings contain newlines
32
- # and possibly remove empty lines
33
- lNewLines = []
34
- nonEmptyFound = false
35
- for line in lLines
36
- if isEmpty(line)
37
- if (option == 'noEmptyLines') \
38
- || ((option == 'noLeadingEmptyLines') && ! nonEmptyFound)
39
- pass
40
- else
41
- lNewLines.push ''
42
- else if (line.indexOf("\n") > -1)
43
- for substr in toArray(line)
44
- if isEmpty(substr)
45
- if (option == 'noEmptyLines') \
46
- || ((option == 'noLeadingEmptyLines') && ! nonEmptyFound)
47
- pass
48
- else
49
- lNewLines.push ''
50
- else
51
- nonEmptyFound = true
52
- lNewLines.push substr
53
- else
54
- nonEmptyFound = true
55
- lNewLines.push line
56
- return lNewLines
57
-
58
- # ---------------------------------------------------------------------------
59
- # toBlock - block may have trailing whitespace
60
- # but undef items are ignored
61
-
62
- export toBlock = (lLines) ->
63
-
64
- if notdefined(lLines)
65
- return undef
66
- assert isArrayOfStrings(lLines),
67
- "lLines is not an array of strings: #{OL(lLines)}"
68
- lNewLines = []
69
- for line in lLines
70
- if defined(line)
71
- lNewLines.push rtrim(line)
72
- return lNewLines.join("\n")
16
+ export {blockToArray, arrayToBlock, toArray, toBlock}
73
17
 
74
18
  # ---------------------------------------------------------------------------
75
19
 
package/src/block.js CHANGED
@@ -11,7 +11,9 @@ import {
11
11
 
12
12
  import {
13
13
  blockToArray,
14
- arrayToBlock
14
+ arrayToBlock,
15
+ toArray,
16
+ toBlock
15
17
  } from '@jdeighan/base-utils/utils';
16
18
 
17
19
  import {
@@ -30,75 +32,9 @@ import {
30
32
 
31
33
  export {
32
34
  blockToArray,
33
- arrayToBlock
34
- };
35
-
36
- // ---------------------------------------------------------------------------
37
- // toArray - split a block or array into lines w/o newlines
38
- export var toArray = function(item, option = undef) {
39
- var i, j, lLines, lNewLines, len, len1, line, nonEmptyFound, ref, substr;
40
- // --- Valid options:
41
- // 'noEmptyLines'
42
- // 'noLeadingEmptyLines'
43
- if (isString(item)) {
44
- lLines = item.split(/\r?\n/);
45
- } else if (isArray(item)) {
46
- lLines = item;
47
- } else {
48
- croak("Not a string or array");
49
- }
50
- // --- We need to ensure that no strings contain newlines
51
- // and possibly remove empty lines
52
- lNewLines = [];
53
- nonEmptyFound = false;
54
- for (i = 0, len = lLines.length; i < len; i++) {
55
- line = lLines[i];
56
- if (isEmpty(line)) {
57
- if ((option === 'noEmptyLines') || ((option === 'noLeadingEmptyLines') && !nonEmptyFound)) {
58
- pass;
59
- } else {
60
- lNewLines.push('');
61
- }
62
- } else if (line.indexOf("\n") > -1) {
63
- ref = toArray(line);
64
- for (j = 0, len1 = ref.length; j < len1; j++) {
65
- substr = ref[j];
66
- if (isEmpty(substr)) {
67
- if ((option === 'noEmptyLines') || ((option === 'noLeadingEmptyLines') && !nonEmptyFound)) {
68
- pass;
69
- } else {
70
- lNewLines.push('');
71
- }
72
- } else {
73
- nonEmptyFound = true;
74
- lNewLines.push(substr);
75
- }
76
- }
77
- } else {
78
- nonEmptyFound = true;
79
- lNewLines.push(line);
80
- }
81
- }
82
- return lNewLines;
83
- };
84
-
85
- // ---------------------------------------------------------------------------
86
- // toBlock - block may have trailing whitespace
87
- // but undef items are ignored
88
- export var toBlock = function(lLines) {
89
- var i, lNewLines, len, line;
90
- if (notdefined(lLines)) {
91
- return undef;
92
- }
93
- assert(isArrayOfStrings(lLines), `lLines is not an array of strings: ${OL(lLines)}`);
94
- lNewLines = [];
95
- for (i = 0, len = lLines.length; i < len; i++) {
96
- line = lLines[i];
97
- if (defined(line)) {
98
- lNewLines.push(rtrim(line));
99
- }
100
- }
101
- return lNewLines.join("\n");
35
+ arrayToBlock,
36
+ toArray,
37
+ toBlock
102
38
  };
103
39
 
104
40
  // ---------------------------------------------------------------------------
package/src/indent.coffee CHANGED
@@ -90,32 +90,34 @@ export isUndented = (line) ->
90
90
 
91
91
  export indented = (input, level=1, oneIndent="\t") ->
92
92
 
93
+ # --- level can be a string, in which case it is
94
+ # pre-pended to each line of input
93
95
  if isString(level)
94
- # --- level can be a string
95
- if (level == "")
96
+ if (level == '')
96
97
  return input
97
98
  toAdd = level
98
99
  else if isInteger(level)
99
- assert (level >= 0), "indented(): negative level"
100
100
  if (level == 0)
101
101
  return input
102
+ assert (level > 0), "Invalid level #{OL(level)}"
102
103
  toAdd = indentation(level, oneIndent)
103
104
  else
104
- croak "level must be a string or integer"
105
+ croak "Invalid level #{OL(level)}"
105
106
 
106
107
  # --- NOTE: toArray(input) just returns input if it's an array
107
108
  # else it splits the string into an array of lines
108
- lLines = for line in toArray(input)
109
+ lLines = []
110
+ for line in toArray(input)
109
111
  if isEmpty(line)
110
- ""
112
+ lLines.push ''
111
113
  else
112
- "#{toAdd}#{line}"
114
+ lLines.push "#{toAdd}#{line}"
115
+
113
116
  if isArray(input)
114
117
  return lLines
115
118
  else if isString(input)
116
119
  return toBlock(lLines)
117
- else
118
- croak "Invalid input; #{OL(input)}"
120
+ croak "Invalid input; #{OL(input)}"
119
121
 
120
122
  # ---------------------------------------------------------------------------
121
123
  # undented - string with 1st line indentation removed for each line
package/src/indent.js CHANGED
@@ -102,45 +102,41 @@ export var isUndented = function(line) {
102
102
  // indented - add indentation to each string in a block or array
103
103
  // - returns the same type as input, i.e. array or string
104
104
  export var indented = function(input, level = 1, oneIndent = "\t") {
105
- var lLines, line, toAdd;
105
+ var i, lLines, len1, line, ref, toAdd;
106
+ // --- level can be a string, in which case it is
107
+ // pre-pended to each line of input
106
108
  if (isString(level)) {
107
- // --- level can be a string
108
- if (level === "") {
109
+ if (level === '') {
109
110
  return input;
110
111
  }
111
112
  toAdd = level;
112
113
  } else if (isInteger(level)) {
113
- assert(level >= 0, "indented(): negative level");
114
114
  if (level === 0) {
115
115
  return input;
116
116
  }
117
+ assert(level > 0, `Invalid level ${OL(level)}`);
117
118
  toAdd = indentation(level, oneIndent);
118
119
  } else {
119
- croak("level must be a string or integer");
120
+ croak(`Invalid level ${OL(level)}`);
120
121
  }
121
122
  // --- NOTE: toArray(input) just returns input if it's an array
122
123
  // else it splits the string into an array of lines
123
- lLines = (function() {
124
- var i, len1, ref, results;
125
- ref = toArray(input);
126
- results = [];
127
- for (i = 0, len1 = ref.length; i < len1; i++) {
128
- line = ref[i];
129
- if (isEmpty(line)) {
130
- results.push("");
131
- } else {
132
- results.push(`${toAdd}${line}`);
133
- }
124
+ lLines = [];
125
+ ref = toArray(input);
126
+ for (i = 0, len1 = ref.length; i < len1; i++) {
127
+ line = ref[i];
128
+ if (isEmpty(line)) {
129
+ lLines.push('');
130
+ } else {
131
+ lLines.push(`${toAdd}${line}`);
134
132
  }
135
- return results;
136
- })();
133
+ }
137
134
  if (isArray(input)) {
138
135
  return lLines;
139
136
  } else if (isString(input)) {
140
137
  return toBlock(lLines);
141
- } else {
142
- return croak(`Invalid input; ${OL(input)}`);
143
138
  }
139
+ return croak(`Invalid input; ${OL(input)}`);
144
140
  };
145
141
 
146
142
  // ---------------------------------------------------------------------------