refactoring unwrap
Vladimir Bauer
3 years ago
| 161 | 161 | s.aDecorators, |
| 162 | 162 | } { |
| 163 | 163 | for _, d := range decorators { |
| 164 | cb(extractBaseDecorator(d)) | |
| 164 | cb(unwrap(d)) | |
| 165 | 165 | } |
| 166 | 166 | } |
| 167 | 167 | }: |
| 590 | 590 | s.aDecorators, |
| 591 | 591 | } { |
| 592 | 592 | for _, d := range decorators { |
| 593 | d = extractBaseDecorator(d) | |
| 593 | d = unwrap(d) | |
| 594 | 594 | if d, ok := d.(decor.AverageDecorator); ok { |
| 595 | 595 | s.averageDecorators = append(s.averageDecorators, d) |
| 596 | 596 | } |
| 668 | 668 | } |
| 669 | 669 | } |
| 670 | 670 | |
| 671 | func extractBaseDecorator(d decor.Decorator) decor.Decorator { | |
| 671 | func unwrap(d decor.Decorator) decor.Decorator { | |
| 672 | 672 | if d, ok := d.(decor.Wrapper); ok { |
| 673 | return extractBaseDecorator(d.Unwrap()) | |
| 673 | return unwrap(d.Unwrap()) | |
| 674 | 674 | } |
| 675 | 675 | return d |
| 676 | 676 | } |