Skip to content
This repository has been archived by the owner on Dec 15, 2022. It is now read-only.

Commit

Permalink
Merge 7c802fb into ba551f6
Browse files Browse the repository at this point in the history
  • Loading branch information
smashwilson committed Aug 13, 2018
2 parents ba551f6 + 7c802fb commit 0dead42
Showing 1 changed file with 14 additions and 10 deletions.
24 changes: 14 additions & 10 deletions lib/helpers.js
Expand Up @@ -4,6 +4,7 @@ import os from 'os';
import temp from 'temp';

import FilePatchController from './controllers/file-patch-controller';
import RefHolder from './models/ref-holder';

export const LINE_ENDING_REGEX = /\r?\n/;
export const CO_AUTHOR_REGEX = /^co-authored-by. (.+?) <(.+?)>$/i;
Expand Down Expand Up @@ -409,16 +410,14 @@ export function extractCoAuthorsAndRawCommitMessage(commitMessage) {
}

export function createItem(node, componentHolder = null, uri = null, extra = {}) {
const holder = componentHolder || new RefHolder();

const override = {
getElement: () => node,

getRealItem: () => componentHolder.getOr(null),

getRealItemPromise: () => componentHolder.getPromise(),
getRealItem: () => holder.getOr(null),

destroy: () => componentHolder && componentHolder.map(component => {
return component.destroy && component.destroy();
}),
getRealItemPromise: () => holder.getPromise(),

...extra,
};
Expand All @@ -434,16 +433,21 @@ export function createItem(node, componentHolder = null, uri = null, extra = {})
return target[name];
}

return componentHolder.get()[name];
// The {value: ...} wrapper prevents .map() from flattening a returned RefHolder.
// If component[name] is a RefHolder, we want to return that RefHolder as-is.
const {value} = holder.map(component => ({value: component[name]})).getOr({value: undefined});
return value;
},

set(target, name, value) {
componentHolder.get()[name] = value;
return true;
return holder.map(component => {
component[name] = value;
return true;
}).getOr(true);
},

has(target, name) {
return Reflect.has(componentHolder.get(), name) || Reflect.has(target, name);
return holder.map(component => Reflect.has(component, name)).getOr(false) || Reflect.has(target, name);
},
});
} else {
Expand Down

0 comments on commit 0dead42

Please sign in to comment.