Files
enviPy-bayer/static/js/ketcher2/node_modules/accessory/index.js
2025-06-23 20:13:54 +02:00

30 lines
669 B
JavaScript

'use strict'
var split = require('dot-parts')
var balanced = require('balanced-match')
var ap = require('ap')
var findCall = ap.partial(balanced, '(', ')')
module.exports = function createAccessor (source, path) {
return split(path).reduce(accumulate, source)
}
function accumulate (statement, property) {
var callString = ''
function append (body) {
callString += '(' + body + ')'
}
var call = findCall(property)
if (call) {
property = call.pre
append(call.body)
var post = call.post
}
while (post) {
call = findCall(post)
append(call.body)
post = call.post
}
return statement + "['" + property + "']" + callString
}