# ===--- gyb_stdlib_support.py -----------------------*- coding: utf-8 -*-===// # # This source file is part of the Swift.org open source project # # Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors # Licensed under Apache License v2.0 with Runtime Library Exception # # See https://swift.org/LICENSE.txt for license information # See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors TRAVERSALS = ['Forward', 'Bidirectional', 'RandomAccess'] def collectionForTraversal(traversal): # noqa (N802 function name should be lowercase) if traversal == 'Forward': return 'Collection' elif traversal == 'Bidirectional': return 'BidirectionalCollection' elif traversal == 'RandomAccess': return 'RandomAccessCollection' else: raise ValueError("Unknown traversal %r" % traversal) def collectionTypeName(traversal, mutable, rangeReplaceable): # noqa (N802) name = collectionForTraversal(traversal) if rangeReplaceable: name = 'RangeReplaceable' + name if mutable: name = 'Mutable' + name return name def protocolsForCollectionFeatures(traversal, mutable, rangeReplaceable): # noqa (N802) protocols = [collectionForTraversal(traversal)] if mutable: protocols.append('MutableCollection') if rangeReplaceable: protocols.append('RangeReplaceableCollection') return protocols def documentationNameForTraversal(traversal): # noqa (N802) if traversal == 'Forward': return 'collection' elif traversal == 'Bidirectional': return 'bidirectional collection' elif traversal == 'RandomAccess': return 'random-access collection' else: raise ValueError("Unknown traversal %r" % traversal)