@cntwg/xml-lib-js 0.0.34 → 0.0.35

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,14 +1,23 @@
1
+ #### *v0.0.35*
2
+
3
+ Pre-release version.
4
+
5
+ > - update dependency on `@ygracs/bsfoc-lib-js` module to v0.3.0;
6
+ > - update dependency on `@ygracs/xobj-lib-js` module to v0.2.4;
7
+ > - move some functions from `$lib/xmldoc-lib.js` into new `$lib/xml-base.js` module;
8
+ > - add function: `readAsAttrValue`.
9
+
1
10
  #### *v0.0.34*
2
11
 
3
12
  Pre-release version.
4
13
 
5
14
  > - update `xmldoc-lib.md`;
6
15
  > - update dependency on `@ygracs/xobj-lib-js` module to v0.2.3;
7
- > - (`TXmlElementController`) remove methods: `_getChildRaw`, `_addChildRaw`< `_setChildRaw`;
16
+ > - (`TXmlElementController`) remove methods: `_getChildRaw`, `_addChildRaw`, `_setChildRaw`;
8
17
  > - (`TXmlElementsListController`) add special static method: `__getItemRaw`;
9
18
  > - (`TXmlElementsListController`) add special static method: `__setItemRaw`;
10
19
  > - (`TXmlElementsListController`) deprecate methods: `_getItemRaw`, `_setItemRaw`;
11
- > - (`TXmlElementsListController`) add iterator method;
20
+ > - (`TXmlElementsListController`) add iterator method.
12
21
 
13
22
  #### *v0.0.33*
14
23
 
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
- |***rev.*:**|0.1.9|
1
+ |***rev.*:**|0.1.10|
2
2
  |:---|---:|
3
- |***date***:|2024-08-01|
3
+ |***date***:|2024-08-23|
4
4
 
5
5
  ## Introduction
6
6
 
@@ -25,6 +25,7 @@ xObj-manipulator is a set of functions (see docs for [`@ygracs/xobj-lib-js` modu
25
25
 
26
26
  + `readAsTagName` (*experimental*);
27
27
  + `readAsAttrName` (*experimental*);
28
+ + `readAsAttrValue` (*experimental*);
28
29
  + `valueToElementID` (*experimental*);
29
30
 
30
31
  - classes:
package/doc/xmldoc-lib.md CHANGED
@@ -1,6 +1,6 @@
1
- >|***rev.*:**|0.1.40|
1
+ >|***rev.*:**|0.1.41|
2
2
  >|:---|---:|
3
- >|date:|2025-07-19|
3
+ >|date:|2025-08-23|
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.35`]
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
 
package/index.js CHANGED
@@ -1,12 +1,13 @@
1
- // [v0.1.016-20240801]
1
+ // [v0.2.018-20250823]
2
2
 
3
3
  // === module init block ===
4
4
 
5
5
  const xObj = require('@ygracs/xobj-lib-js');
6
- const xmldoc = require('./lib/xmldoc-lib.js');
7
- const xmlHelper = require('./lib/xml-helper.js');
6
+ const xmldoc = require('./lib/xmldoc-lib');
7
+ const xmlHelper = require('./lib/xml-helper');
8
+ const xmlBase = require('./lib/xml-base');
8
9
 
9
- // === module extra block (helper functions) ===
10
+ // === module inner block ===
10
11
 
11
12
  // === module main block ===
12
13
 
@@ -14,16 +15,17 @@ const xmlHelper = require('./lib/xml-helper.js');
14
15
 
15
16
  module.exports.xObj = xObj;
16
17
  module.exports.xmlHelper = xmlHelper;
17
- module.exports.xmlDoc = xmldoc;
18
+ module.exports.xmlDoc = xmldoc; // // TODO: [?]
19
+
20
+ module.exports.readAsTagName = xmlBase.readAsTagName;
21
+ module.exports.readAsAttrName = xmlBase.readAsAttrName;
22
+ module.exports.readAsAttrValue = xmlBase.readAsAttrValue;
23
+ module.exports.valueToElementID = xmlBase.valueToElementID;
18
24
 
19
25
  module.exports.XML_DEF_PARSE_OPTIONS = xmldoc.XML_DEF_PARSE_OPTIONS;
20
26
  module.exports.XML_DEF_ROOT_ETAG_NAME = xmldoc.XML_DEF_ROOT_ETAG_NAME;
21
27
  module.exports.XML_LANG_ATTR_TNAME = xmldoc.XML_LANG_ATTR_TNAME;
22
28
 
23
- module.exports.readAsTagName = xmldoc.readAsTagName;
24
- module.exports.readAsAttrName = xmldoc.readAsAttrName;
25
- module.exports.valueToElementID = xmldoc.valueToElementID;
26
-
27
29
  module.exports.TXmlContentParseOptions = xmldoc.TXmlContentParseOptions;
28
30
 
29
31
  module.exports.TXmlAttributesMapper = xmldoc.TXmlAttributesMapper;
@@ -0,0 +1,129 @@
1
+ // [v0.1.001-20250823]
2
+
3
+ // === module init block ===
4
+
5
+ const {
6
+ //valueToIndex, readAsBool, readAsString, isNotEmptyString,
7
+ //isArray, isObject, isPlainObject,
8
+ //valueToArray, valueToEntry,
9
+ valueToIDString,
10
+ } = require('@ygracs/bsfoc-lib-js');
11
+
12
+ // === module inner block ===
13
+
14
+ // === module main block ===
15
+
16
+ /***
17
+ * (* constant definitions *)
18
+ */
19
+
20
+ /***
21
+ * (* function definitions *)
22
+ */
23
+
24
+ /**
25
+ * Tries to convert a given value to a valid tag name of an XML-element.
26
+ * @since v0.0.28
27
+ * @function readAsTagName
28
+ * @param {any} value - some value
29
+ * @returns {string}
30
+ */
31
+ function readAsTagName(value) {
32
+ let tagName = valueToIDString(value, { ignoreNumbers: true });
33
+ if (tagName === null) return '';
34
+ if (tagName !== '') {
35
+ // // TODO: do extra checks
36
+ const template = /[\s\/\\\"\'<>=]/;
37
+ const trigger = tagName.match(template);
38
+ if (trigger) {
39
+ //console.log(trigger);
40
+ tagName = '';
41
+ };
42
+ };
43
+ return tagName;
44
+ };
45
+
46
+ /**
47
+ * Tries to convert a given value to a valid name of an XML-attribute.
48
+ * @since v0.0.28
49
+ * @function readAsAttrName
50
+ * @param {any} value - some value
51
+ * @returns {string}
52
+ */
53
+ function readAsAttrName(value) {
54
+ let attrName = valueToIDString(value, { ignoreNumbers: true });
55
+ if (attrName === null) return '';
56
+ if (attrName !== '') {
57
+ // // TODO: do extra checks
58
+ const template = /[\s\/\\\"\'<>=]/;
59
+ const trigger = attrName.match(template);
60
+ if (trigger) {
61
+ //console.log(trigger);
62
+ attrName = '';
63
+ };
64
+ };
65
+ return attrName;
66
+ };
67
+
68
+ /**
69
+ * Tries to convert a given value to a valid "attribute value".
70
+ * @since v0.0.35
71
+ * @function readAsAttrValue
72
+ * @param {any} value - some value
73
+ * @return {?string}
74
+ */
75
+ function readAsAttrValue(value) {
76
+ let result = null;
77
+ switch (typeof value) {
78
+ case 'boolean': {
79
+ result = value.toString();
80
+ break;
81
+ }
82
+ case 'number': {
83
+ if (Number.isNaN(value)) break;
84
+ result = value.toString();
85
+ break;
86
+ }
87
+ case 'string': {
88
+ result = value.trim();
89
+ break;
90
+ }
91
+ default: {}
92
+ };
93
+ return result;
94
+ };
95
+
96
+ /**
97
+ * Tries to convert a given value to a valid identifier
98
+ * suitable as a value for an "ID-attribute" of an XML-element.
99
+ * @since v0.0.28
100
+ * @function valueToElementID
101
+ * @param {any} value - some value
102
+ * @returns {string}
103
+ * @see valueToIDString
104
+ */
105
+ function valueToElementID(value) {
106
+ let id = valueToIDString(value);
107
+ if (id === null) return '';
108
+ if (id !== '') {
109
+ // // TODO: do extra checks
110
+ const template = /[\s\/\\\"\'<>=]/;
111
+ const trigger = id.match(template);
112
+ if (trigger) {
113
+ //console.log(trigger);
114
+ id = '';
115
+ };
116
+ };
117
+ return id;
118
+ };
119
+
120
+ /***
121
+ * (* class definitions *)
122
+ */
123
+
124
+ // === module exports block ===
125
+
126
+ module.exports.readAsTagName = readAsTagName;
127
+ module.exports.readAsAttrName = readAsAttrName;
128
+ module.exports.readAsAttrValue = readAsAttrValue;
129
+ module.exports.valueToElementID = valueToElementID;
package/lib/xml-helper.js CHANGED
@@ -1,4 +1,4 @@
1
- // [v0.1.005-20250206]
1
+ // [v0.1.006-20250822]
2
2
 
3
3
  // === module init block ===
4
4
 
@@ -24,11 +24,11 @@ const {
24
24
  */
25
25
 
26
26
  /**
27
+ * Tries to get a child element.
27
28
  * @function getChildByPath
28
29
  * @param {TXmlElementController} obj - some element
29
30
  * @param {string[]} chain - path to a target child element
30
31
  * @returns {?TXmlElementController}
31
- * @description Tries to get a child element.
32
32
  */
33
33
  function getChildByPath(obj, chain) {
34
34
  let result = null;
@@ -54,11 +54,11 @@ function getChildByPath(obj, chain) {
54
54
  };
55
55
 
56
56
  /**
57
+ * Tries to get a child element.
57
58
  * @function addChildByPath
58
59
  * @param {TXmlElementController} obj - some element
59
60
  * @param {string[]} chain - path to a target child element
60
61
  * @returns {?TXmlElementController}
61
- * @description Tries to get a child element.
62
62
  */
63
63
  function addChildByPath(obj, chain) {
64
64
  let item = obj;
@@ -82,19 +82,19 @@ function addChildByPath(obj, chain) {
82
82
  };
83
83
 
84
84
  /**
85
+ * Reads a text values from a given XML-element.
85
86
  * @function extractTextValues
86
87
  * @param {(TXmlElementController|TXmlElementsListController)} obj - some element
87
88
  * @returns {string[]}
88
- * @description Reads a text values from a given XML-element.
89
89
  */
90
90
  function extractTextValues(obj) {
91
91
  /**
92
+ * Reads element value and adds it to the list
92
93
  * @function pushValue
93
94
  * @param {string[]} result - accumulator array
94
95
  * @param {any} item - some element
95
96
  * @returns {void}
96
97
  * @protected
97
- * @description Reads element value and adds it to the list
98
98
  */
99
99
  const pushValue = (result, item) => {
100
100
  if (item instanceof TXmlElementController) {
@@ -115,20 +115,19 @@ function extractTextValues(obj) {
115
115
  };
116
116
 
117
117
  /**
118
+ * Reads a text values with a `lang` attribute from a given XML-element.
118
119
  * @function extractTextValuesLn
119
120
  * @param {(TXmlElementController|TXmlElementsListController)} obj - some element
120
121
  * @returns {any[]}
121
- * @description Reads a text values with a `lang` attribute
122
- * from a given XML-element.
123
122
  */
124
123
  function extractTextValuesLn(obj) {
125
124
  /**
125
+ * Reads element value and adds it to the list
126
126
  * @function pushValue
127
127
  * @param {any[]} result - accumulator array
128
128
  * @param {any} item - some element
129
129
  * @returns {void}
130
130
  * @protected
131
- * @description Reads element value and adds it to the list
132
131
  */
133
132
  const pushValue = (result, item) => {
134
133
  if (item instanceof TXmlElementController) {
package/lib/xmldoc-lib.js CHANGED
@@ -1,4 +1,4 @@
1
- // [v0.2.117-20250719]
1
+ // [v0.2.118-20250823]
2
2
 
3
3
  // === module init block ===
4
4
 
@@ -25,7 +25,17 @@ const {
25
25
  DEF_XML_PARSE_OPTIONS: XML_DEF_PARSE_OPTIONS,
26
26
  } = xObj;
27
27
 
28
- // === module extra block (helper functions) ===
28
+ const {
29
+ readAsTagName,
30
+ readAsAttrName,
31
+ valueToElementID,
32
+ } = require('./xml-base');
33
+
34
+ // === module inner block ===
35
+
36
+ /***
37
+ * (* helper function definitions *)
38
+ */
29
39
 
30
40
  /**
31
41
  * An XML-element controller settings.
@@ -109,73 +119,6 @@ const XML_TE_NROOT_EMSG = 'root element not found';
109
119
  * (* function definitions *)
110
120
  */
111
121
 
112
- /**
113
- * Tries to convert a given value to a valid tag name of an XML-element.
114
- * @since v0.0.28
115
- * @function readAsTagName
116
- * @param {any} value - some value
117
- * @returns {string}
118
- */
119
- function readAsTagName(value) {
120
- let tagName = valueToIDString(value, { ignoreNumbers: true });
121
- if (tagName === null) return '';
122
- if (tagName !== '') {
123
- // // TODO: do extra checks
124
- const template = /[\s\/\\\"\'<>=]/;
125
- const trigger = tagName.match(template);
126
- if (trigger) {
127
- //console.log(trigger);
128
- tagName = '';
129
- };
130
- };
131
- return tagName;
132
- };
133
-
134
- /**
135
- * Tries to convert a given value to a valid name of an XML-attribute.
136
- * @since v0.0.28
137
- * @function readAsAttrName
138
- * @param {any} value - some value
139
- * @returns {string}
140
- */
141
- function readAsAttrName(value) {
142
- let attrName = valueToIDString(value, { ignoreNumbers: true });
143
- if (attrName === null) return '';
144
- if (attrName !== '') {
145
- // // TODO: do extra checks
146
- const template = /[\s\/\\\"\'<>=]/;
147
- const trigger = attrName.match(template);
148
- if (trigger) {
149
- //console.log(trigger);
150
- attrName = '';
151
- };
152
- };
153
- return attrName;
154
- };
155
-
156
- /**
157
- * Tries to convert a given value to a valid identifier
158
- * suitable as a value for an "ID-attribute" of an XML-element.
159
- * @since v0.0.28
160
- * @function valueToElementID
161
- * @param {any} value - some value
162
- * @returns {string}
163
- */
164
- function valueToElementID(value) {
165
- let id = valueToIDString(value);
166
- if (id === null) return '';
167
- if (id !== '') {
168
- // // TODO: do extra checks
169
- const template = /[\s\/\\\"\'<>=]/;
170
- const trigger = id.match(template);
171
- if (trigger) {
172
- //console.log(trigger);
173
- id = '';
174
- };
175
- };
176
- return id;
177
- };
178
-
179
122
  /***
180
123
  * (* class definitions *)
181
124
  */
@@ -1640,10 +1583,6 @@ module.exports.XML_DEF_PARSE_OPTIONS = XML_DEF_PARSE_OPTIONS;
1640
1583
  module.exports.XML_DEF_ROOT_ETAG_NAME = XML_DEF_ROOT_ETAG_NAME;
1641
1584
  module.exports.XML_LANG_ATTR_TNAME = XML_LANG_ATTR_TNAME;
1642
1585
 
1643
- module.exports.readAsTagName = readAsTagName;
1644
- module.exports.readAsAttrName = readAsAttrName;
1645
- module.exports.valueToElementID = valueToElementID;
1646
-
1647
1586
  module.exports.TXmlAttributesMapper = TXmlAttributesMapper;
1648
1587
  module.exports.TXmlElementController = TXmlElementController;
1649
1588
  module.exports.TXmlElementsListController = TXmlElementsListController;
@@ -1651,3 +1590,8 @@ module.exports.TXmlContentParseOptions = TXmlContentParseOptions;
1651
1590
  module.exports.TXmlContentDeclaration = TXmlContentDeclaration;
1652
1591
  module.exports.TXmlContentRootElement = TXmlContentRootElement;
1653
1592
  module.exports.TXmlContentContainer = TXmlContentContainer;
1593
+
1594
+ // * re-expected *
1595
+ module.exports.readAsTagName = readAsTagName;
1596
+ module.exports.readAsAttrName = readAsAttrName;
1597
+ module.exports.valueToElementID = valueToElementID;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cntwg/xml-lib-js",
3
- "version": "0.0.34",
3
+ "version": "0.0.35",
4
4
  "description": "A library for handling an XML-documents",
5
5
  "author": "ygracs <cs70th-om@rambler.ru>",
6
6
  "license": "MIT",
@@ -16,6 +16,7 @@
16
16
  "doc/xmldoc-lib.md",
17
17
  "lib/xmldoc-lib.js",
18
18
  "lib/xml-helper.js",
19
+ "lib/xml-base.js",
19
20
  "index.js",
20
21
  "CHANGELOG.md"
21
22
  ],
@@ -37,13 +38,13 @@
37
38
  },
38
39
  "dependencies": {
39
40
  "@cntwg/file-helper": "^0.0.1",
40
- "@ygracs/bsfoc-lib-js": "^0.2.3",
41
+ "@ygracs/bsfoc-lib-js": "^0.3.0",
41
42
  "@ygracs/xml-js6": "^0.0.5-b",
42
- "@ygracs/xobj-lib-js": "^0.2.3"
43
+ "@ygracs/xobj-lib-js": "^0.2.4"
43
44
  },
44
45
  "devDependencies": {
45
- "jest": "^30.0.4",
46
- "jsdoc-to-markdown": "^9.1.1",
46
+ "jest": "^30.0.5",
47
+ "jsdoc-to-markdown": "^9.1.2",
47
48
  "minimist": "^1.2.8"
48
49
  }
49
50
  }