| /** |
| * Copyright (c) HashiCorp, Inc. |
| * SPDX-License-Identifier: MPL-2.0 |
| */ |
| |
| import { assert } from '@ember/debug'; |
| |
| // This is a tagged template function that will |
| // replace placeholders in the form of 'id' with the value from the passed context |
| // |
| // usage: |
| // let fn = apiPath`foo/bar/${'id'}`; |
| // let output = fn({id: 'an-id'}); |
| // output will result in 'foo/bar/an-id'; |
| |
| export default function apiPath(strings, ...keys) { |
| return function (data) { |
| const dict = data || {}; |
| const result = [strings[0]]; |
| assert( |
| `Expected ${keys.length} keys in apiPath context, only recieved ${Object.keys(data).join(',')}`, |
| Object.keys(data).length >= keys.length |
| ); |
| keys.forEach((key, i) => { |
| result.push(dict[key], strings[i + 1]); |
| }); |
| return result.join(''); |
| }; |
| } |