1 | ;
|
2 |
|
3 | /*;
|
4 | @module-license:
|
5 | The MIT License (MIT)
|
6 | @mit-license
|
7 |
|
8 | Copyright (@c) 2017 Richeve Siodina Bebedor
|
9 | @email: richeve.bebedor@gmail.com
|
10 |
|
11 | Permission is hereby granted, free of charge, to any person obtaining a copy
|
12 | of this software and associated documentation files (the "Software"), to deal
|
13 | in the Software without restriction, including without limitation the rights
|
14 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
15 | copies of the Software, and to permit persons to whom the Software is
|
16 | furnished to do so, subject to the following conditions:
|
17 |
|
18 | The above copyright notice and this permission notice shall be included in all
|
19 | copies or substantial portions of the Software.
|
20 |
|
21 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
22 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
23 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
24 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
25 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
26 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
27 | SOFTWARE.
|
28 | @end-module-license
|
29 |
|
30 | @module-configuration:
|
31 | {
|
32 | "package": "raze",
|
33 | "path": "raze/raze.js",
|
34 | "file": "raze.js",
|
35 | "module": "raze",
|
36 | "author": "Richeve S. Bebedor",
|
37 | "eMail": "richeve.bebedor@gmail.com",
|
38 | "contributors": [
|
39 | "John Lenon Maghanoy <johnlenonmaghanoy@gmail.com>",
|
40 | "Vinse Vinalon <vinsevinalon@gmail.com>"
|
41 | ],
|
42 | "repository": "https://github.com/volkovasystems/raze.git",
|
43 | "test": "raze-test.js",
|
44 | "global": true
|
45 | }
|
46 | @end-module-configuration
|
47 |
|
48 | @module-documentation:
|
49 | Convert entity to Array instance.
|
50 |
|
51 | This will always return a new array.
|
52 | @end-module-documentation
|
53 | */var _from = require("babel-runtime/core-js/array/from");var _from2 = _interopRequireDefault(_from);var _typeof2 = require("babel-runtime/helpers/typeof");var _typeof3 = _interopRequireDefault(_typeof2);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
|
54 |
|
55 | var ARGUMENTS_PATTERN = /^\[object Arguments\]$/;
|
56 |
|
57 | var raze = function raze(entity) {
|
58 | /*;
|
59 | @meta-configuration:
|
60 | {
|
61 | "entity:required": "*"
|
62 | }
|
63 | @end-meta-configuration
|
64 | */
|
65 |
|
66 | /*;
|
67 | @note:
|
68 | If entity is falsy, return empty array.
|
69 | @end-note
|
70 | */
|
71 | if (
|
72 | typeof entity == "undefined" ||
|
73 | typeof entity == "string" && entity.length == 0 ||
|
74 | (typeof entity === "undefined" ? "undefined" : (0, _typeof3.default)(entity)) == "object" && entity == null ||
|
75 | typeof entity == "number" && isNaN(entity))
|
76 | {
|
77 | return [];
|
78 | }
|
79 |
|
80 | /*;
|
81 | @note:
|
82 | All arrays, array-like, iterable, are object (with rare exception*)
|
83 | Non-objects take up the first position of the array.
|
84 | * Functions with Symbol.iterable might be an exception but chances
|
85 | of this being implemented is rare considering no practical use cases
|
86 | as of the moment.
|
87 | @end-note
|
88 | */
|
89 |
|
90 |
|
91 | if ((typeof entity === "undefined" ? "undefined" : (0, _typeof3.default)(entity)) != "object") {
|
92 | return [entity];
|
93 | }
|
94 |
|
95 | try {
|
96 | var array = (0, _from2.default)(entity);
|
97 |
|
98 | /*;
|
99 | @note:
|
100 | If the array result is empty, then check if it is an argument entity,
|
101 | else return the entity as the first position in the object because
|
102 | the object is not absorbed because the object is not array-like or
|
103 | iterable.
|
104 | @end-note
|
105 | */
|
106 | if (array.length === 0) {
|
107 | if (ARGUMENTS_PATTERN.test("" + entity)) {
|
108 | return array;
|
109 | }
|
110 |
|
111 | if (Array.isArray(entity)) {
|
112 | return array;
|
113 | }
|
114 |
|
115 | return [entity];
|
116 | }
|
117 |
|
118 | return array;
|
119 |
|
120 | } catch (error) {
|
121 | return [];
|
122 | }
|
123 | };
|
124 |
|
125 | module.exports = raze;
|
126 |
|
127 | //# sourceMappingURL=raze.support.js.map |
\ | No newline at end of file |