Remove implicit yield functionality
Co-authored-by: Delmer Reed <delmer814+1@gmail.com>pull/3730/head
parent
bbd2d7aadd
commit
d4c9a96a9d
|
@ -24,7 +24,6 @@ interface YieldToggles {
|
|||
|
||||
interface State {
|
||||
nonYieldableIndexesToggled: YieldToggles
|
||||
isImplicitYieldToggled: boolean
|
||||
}
|
||||
|
||||
// an Expression is a group of one or more functions
|
||||
|
@ -34,7 +33,6 @@ class ExpressionNode extends PureComponent<Props, State> {
|
|||
|
||||
this.state = {
|
||||
nonYieldableIndexesToggled: this.nonYieldableNodesFromScript,
|
||||
isImplicitYieldToggled: this.isImplicitYieldToggled,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -151,44 +149,8 @@ class ExpressionNode extends PureComponent<Props, State> {
|
|||
/>
|
||||
</Fragment>
|
||||
)
|
||||
} else if (this.isEndOfScript(i)) {
|
||||
const script = scriptUpToYield(bodyID, declarationID, i, true)
|
||||
|
||||
return (
|
||||
<Fragment key={`${i}-notInScript`}>
|
||||
<FuncNode
|
||||
key={i}
|
||||
index={i}
|
||||
func={func}
|
||||
funcs={funcs}
|
||||
bodyID={bodyID}
|
||||
service={service}
|
||||
onChangeArg={onChangeArg}
|
||||
onDelete={onDeleteFuncNode}
|
||||
onToggleYield={this.handleHideImplicitYield}
|
||||
isYieldable={isAfterFilter && isAfterRange}
|
||||
isYielding={this.isBeforeYielding(i)}
|
||||
isYieldedInScript={this.isYieldNodeIndex(i + 1)}
|
||||
declarationID={declarationID}
|
||||
onGenerateScript={onGenerateScript}
|
||||
declarationsFromBody={declarationsFromBody}
|
||||
onToggleYieldWithLast={this.handleToggleYieldWithLast}
|
||||
onDeleteBody={onDeleteBody}
|
||||
/>
|
||||
<YieldFuncNode
|
||||
index={i}
|
||||
func={func}
|
||||
data={data}
|
||||
script={script}
|
||||
bodyID={bodyID}
|
||||
service={service}
|
||||
declarationID={declarationID}
|
||||
/>
|
||||
</Fragment>
|
||||
)
|
||||
} else {
|
||||
return funcNode
|
||||
}
|
||||
return funcNode
|
||||
})}
|
||||
<FuncSelector
|
||||
bodyID={bodyID}
|
||||
|
@ -204,26 +166,13 @@ class ExpressionNode extends PureComponent<Props, State> {
|
|||
}
|
||||
|
||||
private isBeforeYielding(funcIndex: number): boolean {
|
||||
const {funcs, isLastBody} = this.props
|
||||
const {isImplicitYieldToggled, nonYieldableIndexesToggled} = this.state
|
||||
const {nonYieldableIndexesToggled} = this.state
|
||||
const beforeToggledLastYield = !!nonYieldableIndexesToggled[funcIndex]
|
||||
|
||||
if (beforeToggledLastYield) {
|
||||
return true
|
||||
}
|
||||
|
||||
if (
|
||||
funcIndex === funcs.length - 1 &&
|
||||
isLastBody &&
|
||||
isImplicitYieldToggled
|
||||
) {
|
||||
return true
|
||||
}
|
||||
|
||||
if (funcIndex === funcs.length - 1) {
|
||||
return false
|
||||
}
|
||||
|
||||
return this.isYieldNodeIndex(funcIndex + 1)
|
||||
}
|
||||
|
||||
|
@ -255,9 +204,7 @@ class ExpressionNode extends PureComponent<Props, State> {
|
|||
}
|
||||
|
||||
if (isBeforeFilter || isBeforeRange) {
|
||||
const nextNode = _.get(funcs, `${index + 1}`, null)
|
||||
|
||||
if (nextNode && nextNode.name === 'yield') {
|
||||
if (this.isYieldNodeIndex(index + 1)) {
|
||||
return {...acc, [index]: true}
|
||||
}
|
||||
}
|
||||
|
@ -268,18 +215,6 @@ class ExpressionNode extends PureComponent<Props, State> {
|
|||
)
|
||||
}
|
||||
|
||||
private get isImplicitYieldToggled(): boolean {
|
||||
const {isLastBody} = this.props
|
||||
|
||||
return isLastBody && this.isLastFuncYield
|
||||
}
|
||||
|
||||
private get isLastFuncYield(): boolean {
|
||||
const {funcs} = this.props
|
||||
|
||||
return _.get(funcs, `${funcs.length - 1}.name`) !== 'yield'
|
||||
}
|
||||
|
||||
// if funcNode is not yieldable, add last before yield()
|
||||
private handleToggleYieldWithLast = (funcNodeIndex: number) => {
|
||||
this.setState(({nonYieldableIndexesToggled}) => {
|
||||
|
@ -293,20 +228,6 @@ class ExpressionNode extends PureComponent<Props, State> {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
private handleHideImplicitYield = () => {
|
||||
this.setState(() => ({
|
||||
isImplicitYieldToggled: false,
|
||||
}))
|
||||
}
|
||||
|
||||
private isEndOfScript(index: number): boolean {
|
||||
const {isLastBody, funcs} = this.props
|
||||
const {isImplicitYieldToggled} = this.state
|
||||
const isLastScriptFunc = isLastBody && index === funcs.length - 1
|
||||
|
||||
return isLastScriptFunc && isImplicitYieldToggled
|
||||
}
|
||||
}
|
||||
|
||||
export default ExpressionNode
|
||||
|
|
Loading…
Reference in New Issue