|
20 | 20 |
|
21 | 21 | // MODULES // |
22 | 22 |
|
23 | | -var isFunction = require( '@stdlib/assert/is-function' ); |
24 | 23 | var trim = require( '@stdlib/string/base/trim' ); |
25 | 24 | var replace = require( '@stdlib/string/base/replace' ); |
26 | 25 | var MultiSlice = require( '@stdlib/slice/multi' ); |
27 | 26 | var str2multislice = require( '@stdlib/slice/base/str2multislice' ); |
28 | 27 | var seq2multislice = require( '@stdlib/slice/base/seq2multislice' ); |
29 | 28 | var str2slice = require( '@stdlib/slice/base/str2slice' ); |
30 | | -var slice = require( '@stdlib/ndarray/base/slice' ); |
31 | 29 | var format = require( '@stdlib/string/format' ); |
32 | | -var errMessage = require( './error_message.js' ); |
33 | | -var errConstructor = require( './error_constructor.js' ); |
34 | | -var hasProperty = require( './has_property.js' ); |
35 | 30 | var RE_INTEGER = require( './re_integer.js' ); |
36 | 31 | var RE_SUBSEQ = require( './re_subseq.js' ); |
37 | 32 |
|
38 | 33 |
|
39 | 34 | // MAIN // |
40 | 35 |
|
41 | 36 | /** |
42 | | -* Trap for retrieving property values. |
| 37 | +* Converts a zero-dimensional ndarray indexing expression to a slice. |
43 | 38 | * |
44 | 39 | * @private |
45 | 40 | * @param {Object} target - target object |
46 | | -* @param {(string|symbol)} property - property name |
47 | | -* @param {Object} receiver - the proxy object or an object inheriting from the proxy |
| 41 | +* @param {string} property - property name |
| 42 | +* @param {boolean} strict - boolean indicating whether to enforce strict bounds checking |
48 | 43 | * @throws {Error} invalid slice operation |
49 | 44 | * @throws {RangeError} number of slice dimensions must match the number of array dimensions |
50 | | -* @returns {*} result |
| 45 | +* @returns {MultiSlice} multi-slice object |
51 | 46 | */ |
52 | | -function get( target, property, receiver ) { // eslint-disable-line stdlib/jsdoc-require-throws-tags |
53 | | - var value; |
| 47 | +function prop2slice( target, property ) { |
54 | 48 | var shape; |
55 | 49 | var prop; |
56 | 50 | var ch; |
57 | | - var E; |
58 | 51 | var s; |
59 | | - if ( hasProperty( property ) ) { |
60 | | - value = target[ property ]; |
61 | | - if ( isFunction( value ) ) { |
62 | | - return wrapper; |
63 | | - } |
64 | | - return value; |
65 | | - } |
| 52 | + |
66 | 53 | prop = trim( property ); |
67 | 54 |
|
68 | 55 | // Retrieve the first character in order to to detect how a slice operation was specified: |
@@ -120,32 +107,10 @@ function get( target, property, receiver ) { // eslint-disable-line stdlib/jsdoc |
120 | 107 | else { |
121 | 108 | throw new Error( format( 'invalid operation. Unsupported slice operation. Value: `%s`.', property ) ); |
122 | 109 | } |
123 | | - try { |
124 | | - return slice( receiver, s, true ); |
125 | | - } catch ( err ) { |
126 | | - E = errConstructor( err ); |
127 | | - throw new E( errMessage( err.message ) ); |
128 | | - } |
129 | | - |
130 | | - /** |
131 | | - * Method wrapper. |
132 | | - * |
133 | | - * @private |
134 | | - * @returns {*} results |
135 | | - */ |
136 | | - function wrapper() { |
137 | | - var args; |
138 | | - var i; |
139 | | - |
140 | | - args = []; |
141 | | - for ( i = 0; i < arguments.length; i++ ) { |
142 | | - args.push( arguments[ i ] ); |
143 | | - } |
144 | | - return value.apply( ( this === receiver ) ? target : this, args ); // eslint-disable-line no-invalid-this |
145 | | - } |
| 110 | + return s; |
146 | 111 | } |
147 | 112 |
|
148 | 113 |
|
149 | 114 | // EXPORTS // |
150 | 115 |
|
151 | | -module.exports = get; |
| 116 | +module.exports = prop2slice; |
0 commit comments