pacc 1.0.0 → 1.0.2

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/README.md CHANGED
@@ -15,6 +15,82 @@ propetty path utils
15
15
 
16
16
  # API
17
17
 
18
+ <!-- Generated by documentation.js. Update this documentation by updating the source code. -->
19
+
20
+ ### Table of Contents
21
+
22
+ * [AttributeDefinition](#attributedefinition)
23
+ * [Properties](#properties)
24
+ * [tokens](#tokens)
25
+ * [Parameters](#parameters)
26
+ * [setAttribute](#setattribute)
27
+ * [Parameters](#parameters-1)
28
+ * [getAttribute](#getattribute)
29
+ * [Parameters](#parameters-2)
30
+ * [getAttributeAndOperator](#getattributeandoperator)
31
+ * [Parameters](#parameters-3)
32
+
33
+ ## AttributeDefinition
34
+
35
+ Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)
36
+
37
+ ### Properties
38
+
39
+ * `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20;
40
+ * `writable` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)**&#x20;
41
+ * `private` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** should the value be shown
42
+ * `depends` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** name of an attribute we depend on
43
+ * `additionalAttributes` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** extra attributes that are present in case our attribute is set
44
+ * `description` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20;
45
+ * `default` **any?** the default value
46
+ * `set` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** set the value
47
+ * `get` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** get the value can be used to calculate default values
48
+ * `env` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)> | [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))?** environment variable use to provide the value
49
+
50
+ ## tokens
51
+
52
+ Split property path into tokens
53
+
54
+ ### Parameters
55
+
56
+ * `string` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20;
57
+
58
+ ## setAttribute
59
+
60
+ Set Object attribute.
61
+ The name may be a property path like 'a.b.c'.
62
+
63
+ ### Parameters
64
+
65
+ * `object` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**&#x20;
66
+ * `expression` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20;
67
+ * `value` **any**&#x20;
68
+
69
+ ## getAttribute
70
+
71
+ Deliver attribute value.
72
+ The name may be a property path like 'a.b.c' or a\[2]
73
+
74
+ ### Parameters
75
+
76
+ * `object` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**&#x20;
77
+ * `expression` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20;
78
+
79
+ Returns **any** value associated with the given property name
80
+
81
+ ## getAttributeAndOperator
82
+
83
+ Deliver attribute value and operator.
84
+ The name may be a property path like 'a.b.c <='.
85
+
86
+ ### Parameters
87
+
88
+ * `object` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**&#x20;
89
+ * `expression` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20;
90
+ * `getters` (optional, default `{}`)
91
+
92
+ Returns **\[any, [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)]** value associated with the given property name
93
+
18
94
  # install
19
95
 
20
96
  With [npm](http://npmjs.org) do:
package/package.json CHANGED
@@ -1,9 +1,12 @@
1
1
  {
2
2
  "name": "pacc",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
+ "exports": {
8
+ ".": "./src/attribute.mjs"
9
+ },
7
10
  "description": "property path utils",
8
11
  "contributors": [
9
12
  {
@@ -11,9 +14,6 @@
11
14
  "email": "markus.felten@gmx.de"
12
15
  }
13
16
  ],
14
- "exports": {
15
- ".": "./src/attribute.mjs"
16
- },
17
17
  "license": "BSD-2-Clause",
18
18
  "scripts": {
19
19
  "test": "npm run test:browser-ava && npm run test:ava",
@@ -29,7 +29,7 @@
29
29
  "browser-ava": "^2.0.0",
30
30
  "c8": "^8.0.1",
31
31
  "documentation": "^14.0.2",
32
- "semantic-release": "^22.0.6"
32
+ "semantic-release": "^22.0.7"
33
33
  },
34
34
  "repository": {
35
35
  "type": "git",
package/src/attribute.mjs CHANGED
@@ -13,180 +13,9 @@
13
13
  * @property {string[]|string} [env] environment variable use to provide the value
14
14
  */
15
15
 
16
- /**
17
- * Split property path into tokens
18
- * @generator
19
- * @param {string} string
20
- * @yields {string}
21
- */
22
- export function* tokens(string) {
23
- let state, buffer;
24
-
25
- for (const c of string) {
26
- switch (state) {
27
- case "string-escaping":
28
- const esc = {
29
- "\\": "\\",
30
- t: "\t",
31
- b: "\b",
32
- r: "\r",
33
- n: "\n",
34
- f: "\f"
35
- };
36
- buffer += esc[c];
37
- state = "string";
38
- continue;
39
- }
40
-
41
- switch (c) {
42
- case "\t":
43
- case " ":
44
- switch (state) {
45
- case undefined:
46
- break;
47
- case "string":
48
- buffer += c;
49
- break;
50
- case "identifier":
51
- yield buffer;
52
- buffer = "";
53
- state = undefined;
54
- break;
55
- default:
56
- yield state;
57
- state = undefined;
58
- }
59
- break;
60
-
61
- case "\\":
62
- switch (state) {
63
- case "string":
64
- state = "string-escaping";
65
- break;
66
- }
67
- break;
68
- case '"':
69
- case "'":
70
- switch (state) {
71
- case undefined:
72
- buffer = "";
73
- state = "string";
74
- break;
75
- case "string":
76
- yield buffer;
77
- state = undefined;
78
- break;
79
- case "identifier":
80
- yield buffer;
81
- buffer = "";
82
- state = "string";
83
- break;
84
- default:
85
- yield state;
86
- buffer = "";
87
- state = "string";
88
- }
89
- break;
90
- case "!":
91
- case ">":
92
- case "<":
93
- switch (state) {
94
- case undefined:
95
- state = c;
96
- break;
97
- case "string":
98
- buffer += c;
99
- break;
100
- case "identifier":
101
- yield buffer;
102
- state = c;
103
- break;
104
- default:
105
- yield state;
106
- state = c;
107
- }
108
- break;
109
-
110
- case "=":
111
- switch (state) {
112
- case undefined:
113
- state = c;
114
- break;
115
- case "string":
116
- buffer += c;
117
- break;
118
- case "identifier":
119
- yield buffer;
120
- state = c;
121
- break;
122
- default:
123
- state += c;
124
- }
125
- break;
126
- case ".":
127
- case "+":
128
- case "-":
129
- case "*":
130
- case "/":
131
- case "(":
132
- case ")":
133
- case "[":
134
- case "]":
135
- switch (state) {
136
- case undefined:
137
- state = c;
138
- break;
139
- case "string":
140
- buffer += c;
141
- break;
142
- case "identifier":
143
- yield buffer;
144
- state = c;
145
- break;
146
- default:
147
- yield state;
148
- state = c;
149
- }
150
- break;
151
- default:
152
- switch (state) {
153
- case undefined:
154
- buffer = c;
155
- state = "identifier";
156
- break;
157
- case "string":
158
- case "identifier":
159
- buffer += c;
160
- break;
161
- default:
162
- if (
163
- (c >= "a" && c <= "z") ||
164
- (c >= "A" && c <= "Z") ||
165
- (c >= "0" && c <= "9") ||
166
- c === "_"
167
- ) {
168
- yield state;
169
- state = "identifier";
170
- buffer = c;
171
- } else {
172
- state += c;
173
- }
174
- }
175
- }
176
- }
16
+ import { tokens } from "./tokens.mjs";
177
17
 
178
- switch (state) {
179
- case undefined:
180
- break;
181
- case "string":
182
- throw new Error("unterminated string");
183
- case "identifier":
184
- yield buffer;
185
- break;
186
- default:
187
- yield state;
188
- }
189
- }
18
+ export { tokens };
190
19
 
191
20
  /**
192
21
  * Set Object attribute.
@@ -233,6 +62,10 @@ export function setAttribute(object, expression, value) {
233
62
  * @returns {any} value associated with the given property name
234
63
  */
235
64
  export function getAttribute(object, expression) {
65
+ if (object?.[expression] !== undefined) {
66
+ return object[expression];
67
+ }
68
+
236
69
  return getAttributeAndOperator(object, expression)[0];
237
70
  }
238
71
 
package/src/tokens.mjs ADDED
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Split property path into tokens
3
+ * @generator
4
+ * @param {string} string
5
+ * @yields {string}
6
+ */
7
+ export function* tokens(string) {
8
+ let state, buffer;
9
+
10
+ for (const c of string) {
11
+ switch (state) {
12
+ case "string-escaping":
13
+ const esc = {
14
+ "\\": "\\",
15
+ b: "\b",
16
+ f: "\f",
17
+ n: "\n",
18
+ r: "\r",
19
+ t: "\t"
20
+ };
21
+ buffer += esc[c];
22
+ state = "string";
23
+ continue;
24
+ }
25
+
26
+ switch (c) {
27
+ case "\t":
28
+ case " ":
29
+ switch (state) {
30
+ case undefined:
31
+ break;
32
+ case "string":
33
+ buffer += c;
34
+ break;
35
+ case "identifier":
36
+ yield buffer;
37
+ buffer = "";
38
+ state = undefined;
39
+ break;
40
+ default:
41
+ yield state;
42
+ state = undefined;
43
+ }
44
+ break;
45
+
46
+ case "\\":
47
+ switch (state) {
48
+ case "string":
49
+ state = "string-escaping";
50
+ break;
51
+ }
52
+ break;
53
+ case '"':
54
+ case "'":
55
+ switch (state) {
56
+ case undefined:
57
+ buffer = "";
58
+ state = "string";
59
+ break;
60
+ case "string":
61
+ yield buffer;
62
+ state = undefined;
63
+ break;
64
+ case "identifier":
65
+ yield buffer;
66
+ buffer = "";
67
+ state = "string";
68
+ break;
69
+ default:
70
+ yield state;
71
+ buffer = "";
72
+ state = "string";
73
+ }
74
+ break;
75
+ case "!":
76
+ case ">":
77
+ case "<":
78
+ case "&":
79
+ case "|":
80
+ switch (state) {
81
+ case '&':
82
+ case '|':
83
+ if(state === c) {
84
+ yield state + c;
85
+ state = undefined;
86
+ }
87
+ else {
88
+ yield state;
89
+ state = c;
90
+ }
91
+ break;
92
+ case undefined:
93
+ state = c;
94
+ break;
95
+ case "string":
96
+ buffer += c;
97
+ break;
98
+ case "identifier":
99
+ yield buffer;
100
+ state = c;
101
+ break;
102
+ default:
103
+ yield state;
104
+ state = c;
105
+ }
106
+ break;
107
+
108
+ case "=":
109
+ switch (state) {
110
+ case undefined:
111
+ state = c;
112
+ break;
113
+ case "string":
114
+ buffer += c;
115
+ break;
116
+ case "identifier":
117
+ yield buffer;
118
+ state = c;
119
+ break;
120
+ default:
121
+ state += c;
122
+ }
123
+ break;
124
+ case ".":
125
+ case "+":
126
+ case "-":
127
+ case "*":
128
+ case "/":
129
+ case "(":
130
+ case ")":
131
+ case "[":
132
+ case "]":
133
+ case "{":
134
+ case "}":
135
+ switch (state) {
136
+ case undefined:
137
+ state = c;
138
+ break;
139
+ case "string":
140
+ buffer += c;
141
+ break;
142
+ case "identifier":
143
+ yield buffer;
144
+ state = c;
145
+ break;
146
+ default:
147
+ yield state;
148
+ state = c;
149
+ }
150
+ break;
151
+ default:
152
+ switch (state) {
153
+ case undefined:
154
+ buffer = c;
155
+ state = "identifier";
156
+ break;
157
+ case "string":
158
+ case "identifier":
159
+ buffer += c;
160
+ break;
161
+ default:
162
+ if (
163
+ (c >= "a" && c <= "z") ||
164
+ (c >= "A" && c <= "Z") ||
165
+ (c >= "0" && c <= "9") ||
166
+ c === "_"
167
+ ) {
168
+ yield state;
169
+ state = "identifier";
170
+ buffer = c;
171
+ } else {
172
+ state += c;
173
+ }
174
+ }
175
+ }
176
+ }
177
+
178
+ switch (state) {
179
+ case undefined:
180
+ break;
181
+ case "string":
182
+ throw new Error("unterminated string");
183
+ case "identifier":
184
+ yield buffer;
185
+ break;
186
+ default:
187
+ yield state;
188
+ }
189
+ }