@ygracs/xepg-lib-js 0.0.24 → 0.0.25

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/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ #### *v0.0.25*
2
+
3
+ Pre-release version.
4
+
5
+ > - update `xepgdoc-lib.md`;
6
+ > - update dependency on `@ygracs/bsfoc-lib-js` module to v0.3.0;
7
+ > - update dependency on `@ygracs/dtf-lib-js` module to v0.0.30;
8
+ > - update dependency on `@ygracs/xobj-lib-js` module to v0.2.4;
9
+ > - move some functions from `$lib/xepgdoc-lib.js` into new `$lib/xml-base.js` module;
10
+ > - add function: `readAsAttrValue`;
11
+ > - (`TXEpgHeaderContainer`) remove deprecated property: `Provider`;
12
+ > - (`TXEpgContentProvider`) remove deprecated properties: `Header`, `Provider`.
13
+
1
14
  #### *v0.0.24*
2
15
 
3
16
  Pre-release version.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
- |***rev.*:**|0.0.10|
1
+ |***rev.*:**|0.0.11|
2
2
  |:---|---:|
3
- |***date***:|2025-07-30|
3
+ |***date***:|2025-08-25|
4
4
 
5
5
  ## Introduction
6
6
 
@@ -20,6 +20,7 @@ This module contains the following components:
20
20
 
21
21
  + `readAsTagName`;
22
22
  + `readAsAttrName`;
23
+ + `readAsAttrValue`;
23
24
  + `valueToElementID`;
24
25
 
25
26
  - classes:
@@ -1,6 +1,6 @@
1
- |***rev.*:**|0.1.40|
1
+ |***rev.*:**|0.1.43|
2
2
  |:---|---:|
3
- |***date***:|2025-07-30|
3
+ |***date***:|2025-08-25|
4
4
 
5
5
  ## Introduction
6
6
 
@@ -91,6 +91,17 @@ This function tries to convert a given `value` to the value of type which is sui
91
91
  |:---|---|---:|:---|
92
92
  | `value` | `any` | --- | some value to read |
93
93
 
94
+ <a name="readAsAttrValue"></a>
95
+ #### **readAsAttrValue(value)** => `string`
96
+
97
+ > since: \[`v0.0.25`]
98
+
99
+ This function tries to convert a given `value` to the value of type which is suitable for an XML-element's attribute. If failed a `null` is returned.
100
+
101
+ | parameter name | value type | default value | description |
102
+ |:---|---|---:|:---|
103
+ | `value` | `any` | --- | some value |
104
+
94
105
  <a name="valueToElementID"></a>
95
106
  #### **valueToElementID(value)**
96
107
 
@@ -670,11 +681,6 @@ The `options` structure is listed below:
670
681
  |---|---|:---|
671
682
  | `number` | no | defines a current TimeZone |
672
683
 
673
- <a name="TXEpgHeaderContainer+Provider"></a>
674
- ##### **Provider**
675
-
676
- > \[!] NOTE: `[since v0.0.22]` deprecated. Use [`provider` property](#TXEpgHeaderContainer+provider) instead.
677
-
678
684
  <a name="TXEpgHeaderContainer+provider"></a>
679
685
  ##### **provider**
680
686
 
@@ -822,11 +828,6 @@ The `options` structure is listed below:
822
828
 
823
829
  #### class properties
824
830
 
825
- <a name="TXEpgContentProvider+Header"></a>
826
- ##### **Header**
827
-
828
- > \[!] NOTE: `[since v0.0.22]` deprecated. Use [`header` property](#TXEpgContentProvider+header) instead.
829
-
830
831
  <a name="TXEpgContentProvider+header"></a>
831
832
  ##### **header**
832
833
 
@@ -836,11 +837,6 @@ The `options` structure is listed below:
836
837
  |---|---|:---|
837
838
  | `TXEpgHeaderContainer` | yes | returns a `TXEpgHeaderContainer` instance |
838
839
 
839
- <a name="TXEpgContentProvider+Provider"></a>
840
- ##### **Provider**
841
-
842
- > \[!] NOTE: `[since v0.0.22]` deprecated. Use [`provider` property](#TXEpgContentProvider+provider) instead.
843
-
844
840
  <a name="TXEpgContentProvider+provider"></a>
845
841
  ##### **provider**
846
842
 
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- // [v0.1.011-20250727]
1
+ // [v0.1.014-20250825]
2
2
 
3
3
  // === module init block ===
4
4
 
@@ -6,6 +6,8 @@ const xepgdoc = require('./lib/xepgdoc-lib.js');
6
6
 
7
7
  const xObj = require('@ygracs/xobj-lib-js');
8
8
 
9
+ const xmlBase = require('./lib/xml-base');
10
+
9
11
  // === module inner block ===
10
12
 
11
13
  // === module main block ===
@@ -20,9 +22,10 @@ module.exports.TXEpgDTSProvider = xepgdoc.TXEpgDTSProvider;
20
22
  module.exports.TXEpgProviderContainer = xepgdoc.TXEpgProviderContainer;
21
23
  module.exports.TXEpgHeaderContainer = xepgdoc.TXEpgHeaderContainer;
22
24
 
23
- module.exports.readAsTagName = xepgdoc.readAsTagName;
24
- module.exports.readAsAttrName = xepgdoc.readAsAttrName;
25
- module.exports.valueToElementID = xepgdoc.valueToElementID;
25
+ module.exports.readAsTagName = xmlBase.readAsTagName;
26
+ module.exports.readAsAttrName = xmlBase.readAsAttrName;
27
+ module.exports.readAsAttrValue = xmlBase.readAsAttrValue;
28
+ module.exports.valueToElementID = xmlBase.valueToElementID;
26
29
 
27
30
  // re-export stuff from `@ygracs/xobj-lib-js` module
28
31
  module.exports.TXmlContentParseOptions = xObj.TXmlContentParseOptions;
@@ -1,4 +1,4 @@
1
- // [v0.2.124-20250730]
1
+ // [v0.2.128-20250825]
2
2
 
3
3
  // === module init block ===
4
4
 
@@ -36,6 +36,12 @@ const {
36
36
  writeXObjAttr,
37
37
  } = xObj;
38
38
 
39
+ const {
40
+ readAsTagName,
41
+ readAsAttrName,
42
+ valueToElementID,
43
+ } = require('./xml-base');
44
+
39
45
  // === module inner block ===
40
46
 
41
47
  /*
@@ -252,73 +258,6 @@ const defParseOptions = new TXmlContentParseOptions();
252
258
  * (* function definitions *)
253
259
  */
254
260
 
255
- /**
256
- * Tries to convert a given value to a valid tag name of an XML-element.
257
- * @since v0.0.23
258
- * @function readAsTagName
259
- * @param {any} value - some value
260
- * @returns {string}
261
- */
262
- function readAsTagName(value) {
263
- let tagName = valueToIDString(value, { ignoreNumbers: true });
264
- if (tagName === null) return '';
265
- if (tagName !== '') {
266
- // // TODO: do extra checks
267
- const template = /[\s\/\\\"\'<>=]/;
268
- const trigger = tagName.match(template);
269
- if (trigger) {
270
- //console.log(trigger);
271
- tagName = '';
272
- };
273
- };
274
- return tagName;
275
- };
276
-
277
- /**
278
- * Tries to convert a given value to a valid name of an XML-attribute.
279
- * @since v0.0.23
280
- * @function readAsAttrName
281
- * @param {any} value - some value
282
- * @returns {string}
283
- */
284
- function readAsAttrName(value) {
285
- let attrName = valueToIDString(value, { ignoreNumbers: true });
286
- if (attrName === null) return '';
287
- if (attrName !== '') {
288
- // // TODO: do extra checks
289
- const template = /[\s\/\\\"\'<>=]/;
290
- const trigger = attrName.match(template);
291
- if (trigger) {
292
- //console.log(trigger);
293
- attrName = '';
294
- };
295
- };
296
- return attrName;
297
- };
298
-
299
- /**
300
- * Tries to convert a given value to a valid identifier suitable as a value
301
- * for an "ID-attribute" of an XML-element.
302
- * @since v0.0.23
303
- * @function valueToElementID
304
- * @param {any} value - some value
305
- * @returns {string}
306
- */
307
- function valueToElementID(value) {
308
- let id = valueToIDString(value);
309
- if (id === null) return '';
310
- if (id !== '') {
311
- // // TODO: do extra checks
312
- const template = /[\s\/\\\"\'<>=]/;
313
- const trigger = id.match(template);
314
- if (trigger) {
315
- //console.log(trigger);
316
- id = '';
317
- };
318
- };
319
- return id;
320
- };
321
-
322
261
  /***
323
262
  * (* class definitions *)
324
263
  */
@@ -1495,17 +1434,6 @@ class TXEpgHeaderContainer {
1495
1434
  return isPlainObject(docProv) ? docProv : null;
1496
1435
  }
1497
1436
 
1498
- /**
1499
- * Returns a `TXEpgProviderContainer` instance
1500
- * @type {?TXEpgProviderContainer}
1501
- * @readonly
1502
- * @deprecated
1503
- * @todo \[since `v0.0.22`] deprecated. Use `TXEpgHeaderContainer.provider`
1504
- */
1505
- get Provider() {
1506
- return this.provider;
1507
- }
1508
-
1509
1437
  /**
1510
1438
  * Returns a `TXEpgProviderContainer` instance
1511
1439
  * @since 0.0.22
@@ -1823,17 +1751,6 @@ class TXEpgContentProvider {
1823
1751
  return isPlainObject(docBody) ? docBody : null;
1824
1752
  }
1825
1753
 
1826
- /**
1827
- * Returns a `TXEpgHeaderContainer` instance
1828
- * @type {?TXEpgHeaderContainer}
1829
- * @readonly
1830
- * @deprecated
1831
- * @todo \[since `v0.0.22`] deprecated. Use `TXEpgContentProvider.header`
1832
- */
1833
- get Header() {
1834
- return this.header;
1835
- }
1836
-
1837
1754
  /**
1838
1755
  * Returns a `TXEpgHeaderContainer` instance
1839
1756
  * @since 0.0.22
@@ -1849,17 +1766,6 @@ class TXEpgContentProvider {
1849
1766
  );
1850
1767
  }
1851
1768
 
1852
- /**
1853
- * Returns a `TXEpgProviderContainer` instance
1854
- * @type {?TXEpgProviderContainer}
1855
- * @readonly
1856
- * @deprecated
1857
- * @todo \[since `v0.0.22`] deprecated. Use `TXEpgContentProvider.provider`
1858
- */
1859
- get Provider() {
1860
- return this.provider;
1861
- }
1862
-
1863
1769
  /**
1864
1770
  * Returns a `TXEpgProviderContainer` instance
1865
1771
  * @since 0.0.22
@@ -2156,10 +2062,6 @@ module.exports.XEPG_DEF_PROVIDER_VER = XEPG_DEF_PROVIDER_VER;
2156
2062
  module.exports.XEPG_DEF_DOCUMENT_TYPE = XEPG_DEF_DOCUMENT_TYPE;
2157
2063
  module.exports.XEPG_DEF_DOCUMENT_SCHEMA = XEPG_DEF_DOCUMENT_SCHEMA;
2158
2064
 
2159
- module.exports.readAsTagName = readAsTagName;
2160
- module.exports.readAsAttrName = readAsAttrName;
2161
- module.exports.valueToElementID = valueToElementID;
2162
-
2163
2065
  module.exports.TXEpgDTSProvider = TXEpgDTSProvider;
2164
2066
  module.exports.TXEpgScheduleItem = TXEpgScheduleItem;
2165
2067
  module.exports.TXEpgSchedulesList = TXEpgSchedulesList;
@@ -2167,3 +2069,8 @@ module.exports.TXEpgProviderContainer = TXEpgProviderContainer;
2167
2069
  module.exports.TXEpgChannelContainer = TXEpgChannelContainer;
2168
2070
  module.exports.TXEpgHeaderContainer = TXEpgHeaderContainer;
2169
2071
  module.exports.TXEpgContentProvider = TXEpgContentProvider;
2072
+
2073
+ // * re-exported *
2074
+ module.exports.readAsTagName = readAsTagName;
2075
+ module.exports.readAsAttrName = readAsAttrName;
2076
+ module.exports.valueToElementID = valueToElementID;
@@ -0,0 +1,133 @@
1
+ // [v0.1.002-20250825]
2
+
3
+ // === module init block ===
4
+
5
+ const {
6
+ //valueToIndex,
7
+ valueToIDString,
8
+ //readAsString, readAsNumber,
9
+ //isNotEmptyString,
10
+ //isArray, isObject, isPlainObject,
11
+ } = require('@ygracs/bsfoc-lib-js');
12
+
13
+ // === module inner block ===
14
+
15
+ /***
16
+ * (* helper function definitions *)
17
+ */
18
+
19
+ // === module main block ===
20
+
21
+ /***
22
+ * (* constant definitions *)
23
+ */
24
+
25
+ /***
26
+ * (* function definitions *)
27
+ */
28
+
29
+ /**
30
+ * Tries to convert a given value to a valid tag name of an XML-element.
31
+ * @since v0.0.23
32
+ * @function readAsTagName
33
+ * @param {any} value - some value
34
+ * @returns {string}
35
+ */
36
+ function readAsTagName(value) {
37
+ let tagName = valueToIDString(value, { ignoreNumbers: true });
38
+ if (tagName === null) return '';
39
+ if (tagName !== '') {
40
+ // // TODO: do extra checks
41
+ const template = /[\s\/\\\"\'<>=]/;
42
+ const trigger = tagName.match(template);
43
+ if (trigger) {
44
+ //console.log(trigger);
45
+ tagName = '';
46
+ };
47
+ };
48
+ return tagName;
49
+ };
50
+
51
+ /**
52
+ * Tries to convert a given value to a valid name of an XML-attribute.
53
+ * @since v0.0.23
54
+ * @function readAsAttrName
55
+ * @param {any} value - some value
56
+ * @returns {string}
57
+ */
58
+ function readAsAttrName(value) {
59
+ let attrName = valueToIDString(value, { ignoreNumbers: true });
60
+ if (attrName === null) return '';
61
+ if (attrName !== '') {
62
+ // // TODO: do extra checks
63
+ const template = /[\s\/\\\"\'<>=]/;
64
+ const trigger = attrName.match(template);
65
+ if (trigger) {
66
+ //console.log(trigger);
67
+ attrName = '';
68
+ };
69
+ };
70
+ return attrName;
71
+ };
72
+
73
+ /**
74
+ * Tries to convert a given value to a valid "attribute value".
75
+ * @since v0.0.25
76
+ * @function readAsAttrValue
77
+ * @param {any} value - some value
78
+ * @return {?string}
79
+ */
80
+ function readAsAttrValue(value) {
81
+ let result = null;
82
+ switch (typeof value) {
83
+ case 'boolean': {
84
+ result = value.toString();
85
+ break;
86
+ }
87
+ case 'number': {
88
+ if (Number.isNaN(value)) break;
89
+ result = value.toString();
90
+ break;
91
+ }
92
+ case 'string': {
93
+ result = value.trim();
94
+ break;
95
+ }
96
+ default: {}
97
+ };
98
+ return result;
99
+ };
100
+
101
+ /**
102
+ * Tries to convert a given value to a valid identifier suitable as a value
103
+ * for an "ID-attribute" of an XML-element.
104
+ * @since v0.0.23
105
+ * @function valueToElementID
106
+ * @param {any} value - some value
107
+ * @returns {string}
108
+ */
109
+ function valueToElementID(value) {
110
+ let id = valueToIDString(value);
111
+ if (id === null) return '';
112
+ if (id !== '') {
113
+ // // TODO: do extra checks
114
+ const template = /[\s\/\\\"\'<>=]/;
115
+ const trigger = id.match(template);
116
+ if (trigger) {
117
+ //console.log(trigger);
118
+ id = '';
119
+ };
120
+ };
121
+ return id;
122
+ };
123
+
124
+ /***
125
+ * (* class definitions *)
126
+ */
127
+
128
+ // === module exports block ===
129
+
130
+ module.exports.readAsTagName = readAsTagName;
131
+ module.exports.readAsAttrName = readAsAttrName;
132
+ module.exports.readAsAttrValue = readAsAttrValue;
133
+ module.exports.valueToElementID = valueToElementID;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ygracs/xepg-lib-js",
3
- "version": "0.0.24",
3
+ "version": "0.0.25",
4
4
  "description": "A library for handling an EPG-sources based on an XEPG-format",
5
5
  "author": "ygracs <cs70th-om@rambler.ru>",
6
6
  "license": "MIT",
@@ -19,6 +19,7 @@
19
19
  "doc/*.md",
20
20
  "lib/xepgdoc-lib.js",
21
21
  "lib/dts-helper.js",
22
+ "lib/xml-base.js",
22
23
  "index.js",
23
24
  "CHANGELOG.md"
24
25
  ],
@@ -33,15 +34,15 @@
33
34
  },
34
35
  "dependencies": {
35
36
  "@cntwg/file-helper": "^0.0.1",
36
- "@ygracs/bsfoc-lib-js": "^0.2.3",
37
- "@ygracs/dtf-lib-js": "^0.0.29",
37
+ "@ygracs/bsfoc-lib-js": "^0.3.0",
38
+ "@ygracs/dtf-lib-js": "^0.0.30",
38
39
  "@ygracs/xml-js6": "^0.0.5-b",
39
- "@ygracs/xobj-lib-js": "^0.2.3"
40
+ "@ygracs/xobj-lib-js": "^0.2.4"
40
41
  },
41
42
  "devDependencies": {
42
- "cross-env": "^7.0.3",
43
- "jest": "^30.0.4",
44
- "jsdoc-to-markdown": "^9.1.1",
43
+ "cross-env": "^10.0.0",
44
+ "jest": "^30.0.5",
45
+ "jsdoc-to-markdown": "^9.1.2",
45
46
  "minimist": "^1.2.8"
46
47
  }
47
48
  }