From 003593b64a64eea7e66fac6f3ce99ab755aacee7 Mon Sep 17 00:00:00 2001 From: Tomasz Lewandowski Date: Fri, 24 Jan 2020 21:54:11 +0100 Subject: [PATCH 1/3] color formatter -> DecoratedSpyFormatter + Emoji Prefixes --- Example/Environment.swift | 8 +- Spy.xcodeproj/project.pbxproj | 400 +++++++++++------- Spy/Common/ColoredSpyFormatter.swift | 19 - .../Decorated/AnyLevelDecorator.swift | 38 ++ .../ColoredSpyLevelNameDecorator.swift | 31 ++ .../Decorated/DecoratedLevelBuilder.swift | 28 ++ .../Decorated/DecoratedSpyFormatter.swift | 21 + .../EmojiPrefixedSpyLevelDecorator.swift | 33 ++ .../Decorated/PSpyLevelDecorator.swift | 18 + .../Decorated/PlainLevelNameDecorator.swift | 16 + .../Raw}/RawSpyFormatter.swift | 0 Spy/Common/SpyLevel.swift | 14 +- Spy/Core/PColoredSpyLevel.swift | 11 - SpyTests/ColoredSpyFormatterTests.swift | 18 - SpyTests/DecoratedSpyFormatterTests.swift | 33 ++ ...jiPrefixedSpyLevelNameDecoratorTests.swift | 25 ++ SpyTests/SpyColorTests.swift | 1 + .../TestColoredSpyLevelNameDecorator.swift | 25 ++ 18 files changed, 521 insertions(+), 218 deletions(-) delete mode 100644 Spy/Common/ColoredSpyFormatter.swift create mode 100644 Spy/Common/Formatters/Decorated/AnyLevelDecorator.swift create mode 100644 Spy/Common/Formatters/Decorated/ColoredSpyLevelNameDecorator.swift create mode 100644 Spy/Common/Formatters/Decorated/DecoratedLevelBuilder.swift create mode 100644 Spy/Common/Formatters/Decorated/DecoratedSpyFormatter.swift create mode 100644 Spy/Common/Formatters/Decorated/EmojiPrefixedSpyLevelDecorator.swift create mode 100644 Spy/Common/Formatters/Decorated/PSpyLevelDecorator.swift create mode 100644 Spy/Common/Formatters/Decorated/PlainLevelNameDecorator.swift rename Spy/Common/{ => Formatters/Raw}/RawSpyFormatter.swift (100%) delete mode 100644 Spy/Core/PColoredSpyLevel.swift delete mode 100644 SpyTests/ColoredSpyFormatterTests.swift create mode 100644 SpyTests/DecoratedSpyFormatterTests.swift create mode 100644 SpyTests/EmojiPrefixedSpyLevelNameDecoratorTests.swift create mode 100644 SpyTests/TestColoredSpyLevelNameDecorator.swift diff --git a/Example/Environment.swift b/Example/Environment.swift index dd606b4..0bae98f 100644 --- a/Example/Environment.swift +++ b/Example/Environment.swift @@ -11,8 +11,12 @@ import Spy public struct Environment { public static var spy: AnySpy = { return CompositeSpy() - .add(spy: ConsoleSpy( - spyFormatter: RawSpyFormatter(), + .add(spy: ConsoleSpy( + spyFormatter: DecoratedSpyFormatter( + levelNameBuilder: DecoratedLevelNameBuilder() + .add(decorator: PlainLevelNameDecorator().toAnyDecorator()) + .add(decorator: EmojiPrefixedSpyLevelNameDecorator().toAnyDecorator()) + ), timestampProvider: CurrentTimestampProvider(), configuration: SpyConfigurationBuilder() .add(levels: SpyLevel.levelsFrom(loggingLevel)) diff --git a/Spy.xcodeproj/project.pbxproj b/Spy.xcodeproj/project.pbxproj index 01bec47..3d729b3 100644 --- a/Spy.xcodeproj/project.pbxproj +++ b/Spy.xcodeproj/project.pbxproj @@ -7,74 +7,85 @@ objects = { /* Begin PBXBuildFile section */ - 03E14636E748AD712863C4C9 /* RawSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0ADD68BAD32886AD351C0DF /* RawSpyFormatter.swift */; }; + 01DC729040BB0735C4C88EC0 /* DecoratedLevelBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20FDC8804C6F3833807DCE0D /* DecoratedLevelBuilder.swift */; }; 05B151B8E880D8E760E474EB /* String+PSpyable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAEC108A3832B5E814A0FD72 /* String+PSpyable.swift */; }; 067547D57836983449BD37FF /* PSpyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E7BF75BAB70741E76324A4D /* PSpyTests.swift */; }; 068C3F82F2F30FCE9337F719 /* PSpyChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7ECD0B3052BFA8AC94D83E2 /* PSpyChannel.swift */; }; 06E623625255BD2C37780B70 /* SpyConfigurationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A225A817646067EBD729D1B /* SpyConfigurationTests.swift */; }; 0960B5AD3CD9DC8D3F164F8F /* Spy-Swift.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B38C06DFA82FEE0B6018DFE /* Spy-Swift.h */; settings = {ATTRIBUTES = (Private, ); }; }; 0B1E4BECF222C9816D8B377B /* SpyLevelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCAD0635277EC7F24086E2A /* SpyLevelTests.swift */; }; - 0B45CEF621128EDC4F2EC037 /* RawSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0ADD68BAD32886AD351C0DF /* RawSpyFormatter.swift */; }; - 0B59A92676CFBE7AD07832FC /* PColoredSpyLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCFC9E6DE2BDD91A129BBDF /* PColoredSpyLevel.swift */; }; 0BC32ADA821AA7BBA4C4E632 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3D91C2EC2DD101CF21ACEE /* AppDelegate.swift */; }; + 0D3A37DE86601FE16EF5D1D8 /* TestColoredSpyLevelNameDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB04DC49C011B23DF8C3389E /* TestColoredSpyLevelNameDecorator.swift */; }; 0E8A240FB1BD894915DB91FC /* PSpyLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEA4577B8A05FCCE23974CA3 /* PSpyLevel.swift */; }; 1509C1F557AB15F513F207C5 /* String+PSpyable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAEC108A3832B5E814A0FD72 /* String+PSpyable.swift */; }; - 15579266A438E8373D19ADA7 /* ColoredSpyFormatterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B31EE0E1A8E35DB050B7BF7 /* ColoredSpyFormatterTests.swift */; }; 173FE8DE0B940BD6F0376872 /* String+PSpyable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAEC108A3832B5E814A0FD72 /* String+PSpyable.swift */; }; 17C29D64A8EDA4C3E0FEE686 /* Spy.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F2850AE714DB254464B02DDD /* Spy.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 18FC7DF37F1E1E5973DA04E7 /* ColoredSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 704629BD2DA4E65CB85B44A2 /* ColoredSpyFormatter.swift */; }; 19450A771F401CB4FC681C44 /* SpyConfigurationBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D2E0EF783D972A969685BB /* SpyConfigurationBuilder.swift */; }; 19DA90F1AA80C6743BB06779 /* SpyableStringTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B712E56E1BBE344098456A06 /* SpyableStringTests.swift */; }; + 19FB7667717ED8CBB0EC9961 /* Pods_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 945CC05D699EC2E7607BA367 /* Pods_Example.framework */; }; 1D6B29087959EE09A0E38A1E /* PSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17C12F479779F885FFD5947B /* PSpy.swift */; }; 1E4752938008078138590582 /* RawSpyFormatterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB1892C116E484C0A9CEE11F /* RawSpyFormatterTests.swift */; }; 1FCAA0FF0B43AE7ACD7B48C6 /* CompositeSpyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E00BBCA9E4F5B96DBACDEAA /* CompositeSpyTests.swift */; }; + 20DECD204218C72EB0004F11 /* PlainLevelNameDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 261E26B8CACFF52BFAF23F24 /* PlainLevelNameDecorator.swift */; }; 21B02C3179425E712098BB8F /* PSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17C12F479779F885FFD5947B /* PSpy.swift */; }; 2262A63FF401FB90F7D45B67 /* AutoMockable.generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAB98796A3C79A11981558DD /* AutoMockable.generated.swift */; }; - 24E224EC2283D738DF745C98 /* ColoredSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 704629BD2DA4E65CB85B44A2 /* ColoredSpyFormatter.swift */; }; 2A31A3E5B2EA6A521BF0095B /* Spy.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F2850AE714DB254464B02DDD /* Spy.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 2AA29C4C75601F3C359DE764 /* ColoredSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 704629BD2DA4E65CB85B44A2 /* ColoredSpyFormatter.swift */; }; - 2CB34323D952EADA8906FD37 /* Pods_Spy_tvOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BCD26C07F4F4FFB66CD349E /* Pods_Spy_tvOS.framework */; }; + 2A62E9C38A57BF5DD82A36AD /* EmojiPrefixedSpyLevelNameDecoratorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC9108D395F05EFA68F906AC /* EmojiPrefixedSpyLevelNameDecoratorTests.swift */; }; 2E177EFC11792493BE363631 /* SpyLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 118C16754FC38E5A07685006 /* SpyLevel.swift */; }; 33393E3C5A2987D7177F6D82 /* Spy.h in Headers */ = {isa = PBXBuildFile; fileRef = 797BE01EEE903051BF964652 /* Spy.h */; settings = {ATTRIBUTES = (Public, ); }; }; 353C2184989E65ABD598E90B /* String+Colored.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D80E77E946C234FA70A60CB /* String+Colored.swift */; }; 3870206ABDFC01485BBF19AC /* PSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17C12F479779F885FFD5947B /* PSpy.swift */; }; + 38A7C74931843540C1801D5E /* AnyLevelDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67253CF8104AD95F0C363B9E /* AnyLevelDecorator.swift */; }; 39672CB6F32864A32B83F830 /* SpyColorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04409B4774F92016C6901F69 /* SpyColorTests.swift */; }; + 3983E0B3AFB0323C312E3F0D /* EmojiPrefixedSpyLevelDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58899DBC3D1E553C565C8431 /* EmojiPrefixedSpyLevelDecorator.swift */; }; 3AC7008E7D17C907BE2DE52D /* SpyConfigurationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A225A817646067EBD729D1B /* SpyConfigurationTests.swift */; }; - 3BBFCC563E6D47D1C48F6986 /* PColoredSpyLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCFC9E6DE2BDD91A129BBDF /* PColoredSpyLevel.swift */; }; 3C05462E6DF63DE1F0997C66 /* AnySpyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D19ADD9D7DF5A76D1ADFDAA2 /* AnySpyTests.swift */; }; 3C1F26ED92D01B47E2D3007E /* CompositeSpyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E00BBCA9E4F5B96DBACDEAA /* CompositeSpyTests.swift */; }; + 3FEBC2D512FF67DBC4BEAC50 /* DecoratedLevelBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20FDC8804C6F3833807DCE0D /* DecoratedLevelBuilder.swift */; }; 40674627A0381137B894A72A /* ConsoleSpyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDC5AAEA8A89B929C95B321B /* ConsoleSpyTests.swift */; }; + 41D050A2F33AC838763DCA80 /* DecoratedSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5166096A04677805A734720 /* DecoratedSpyFormatter.swift */; }; 42175CE58C2866720C3E3DC9 /* CompositeSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EE973C951D4D02B1A540560 /* CompositeSpy.swift */; }; 44243EEFD83ECAA405CE47D8 /* CurrentTimestampProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC720605A9EFD7D25659B56D /* CurrentTimestampProvider.swift */; }; 485CF3835F477BB652A3378E /* AnySpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF2977004EA2EB53528A4F35 /* AnySpy.swift */; }; + 49FA3E13ED495EFB67F09577 /* RawSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F532A7B8168E805A2735D1F1 /* RawSpyFormatter.swift */; }; 4AB427DE68BE189509538792 /* Spy.h in Headers */ = {isa = PBXBuildFile; fileRef = 797BE01EEE903051BF964652 /* Spy.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4D633D03FCDD3CBBFF332C99 /* Spy.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2850AE714DB254464B02DDD /* Spy.framework */; }; 4F128AC60B1145DE3F616BC0 /* PSpyLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEA4577B8A05FCCE23974CA3 /* PSpyLevel.swift */; }; - 51B2EC621C9AD78302DC5E7D /* RawSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0ADD68BAD32886AD351C0DF /* RawSpyFormatter.swift */; }; + 4F315EB0E68EC114E14BA0A7 /* DecoratedSpyFormatterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7F7DAD6349DEB9B9C93E502 /* DecoratedSpyFormatterTests.swift */; }; + 51AD4ACDFC2CCF4051A3A48A /* DecoratedLevelBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20FDC8804C6F3833807DCE0D /* DecoratedLevelBuilder.swift */; }; + 537CC9E38E37E0DB168FFD00 /* DecoratedLevelBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20FDC8804C6F3833807DCE0D /* DecoratedLevelBuilder.swift */; }; 54843A4085FFD5237E5E6E59 /* PSpyable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 083BA954DE1B5FDE0E92AFBA /* PSpyable.swift */; }; + 55937733DF64DF3094150778 /* DecoratedSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5166096A04677805A734720 /* DecoratedSpyFormatter.swift */; }; 5B752801F7316FD953E39D25 /* Spy.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F2850AE714DB254464B02DDD /* Spy.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 5BA16C608CFC8700BC2BC8C6 /* ColoredSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 704629BD2DA4E65CB85B44A2 /* ColoredSpyFormatter.swift */; }; 5BDEC228E142161495F28987 /* ConsoleSpyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDC5AAEA8A89B929C95B321B /* ConsoleSpyTests.swift */; }; + 5C646EE13DAE3B161F08D18A /* Pods_SpyTests_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DCC53F3D18F378AAC67FD38 /* Pods_SpyTests_iOS.framework */; }; 5ED5122DDB798AC53EE3C8B3 /* PSpyable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 083BA954DE1B5FDE0E92AFBA /* PSpyable.swift */; }; + 60BAA8F401079244275AF8A2 /* PlainLevelNameDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 261E26B8CACFF52BFAF23F24 /* PlainLevelNameDecorator.swift */; }; 60EF1293F6688808E82F14F5 /* String+Colored.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D80E77E946C234FA70A60CB /* String+Colored.swift */; }; + 611243FF16D40C61191EAB88 /* EmojiPrefixedSpyLevelDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58899DBC3D1E553C565C8431 /* EmojiPrefixedSpyLevelDecorator.swift */; }; 62AFD6CA6344AF0F4D8F1CCD /* SpyColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ACE6EFE1738957011107C20 /* SpyColor.swift */; }; - 63CCA7B8EB1734BE3CED9552 /* Pods_SpyTests_tvOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93364D4D9A3C255B36061B9E /* Pods_SpyTests_tvOS.framework */; }; + 65F6F9D33FE128469B6F18BB /* DecoratedSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5166096A04677805A734720 /* DecoratedSpyFormatter.swift */; }; 6632657E0F9024B622C384F2 /* PSpyable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 083BA954DE1B5FDE0E92AFBA /* PSpyable.swift */; }; 663DC4AAE9CBB4B181773A0F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4BBC8875BEB948A2868F8F4A /* Assets.xcassets */; }; - 69FC6D68062A8D0709AD7FBA /* ColoredSpyFormatterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B31EE0E1A8E35DB050B7BF7 /* ColoredSpyFormatterTests.swift */; }; + 66F5EFA3C14E939E4E3C8E8A /* PlainLevelNameDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 261E26B8CACFF52BFAF23F24 /* PlainLevelNameDecorator.swift */; }; 6AF426DCA1E3D154730C05A9 /* SpyConfigurationBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B94A3F1FD6044C741CFAA7 /* SpyConfigurationBuilderTests.swift */; }; 6C26BFB55872028C592AA5E6 /* ConsoleSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2C43B51E4C3FC74551482F1 /* ConsoleSpy.swift */; }; + 6C4C889F1DD00907E0EF0F39 /* Pods_Spy_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C6FEC5F44E1ED57BBDF2FCAA /* Pods_Spy_macOS.framework */; }; 6D342CD13E60B9F5AF3FE963 /* SpyChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 521793EF050158ABA07595D0 /* SpyChannel.swift */; }; 6E75553A990E9E21C5A46086 /* SpyConfigurationBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B94A3F1FD6044C741CFAA7 /* SpyConfigurationBuilderTests.swift */; }; 71C3E5188C68CD679A7E3BD3 /* SpyConfigurationBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D2E0EF783D972A969685BB /* SpyConfigurationBuilder.swift */; }; 73BF06596792ACCE96D05F8C /* PTimestampProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F066CF5C12BC433A4D0339C8 /* PTimestampProvider.swift */; }; - 73D4E991DEDD876CDD42CEC5 /* Pods_Spy_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CECA6A5A15B62FCF8875C5D /* Pods_Spy_iOS.framework */; }; - 7447AF07B1A1C5989E4D6A0D /* ColoredSpyFormatterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B31EE0E1A8E35DB050B7BF7 /* ColoredSpyFormatterTests.swift */; }; + 743375A5138CDAF1E181FCA7 /* AnyLevelDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67253CF8104AD95F0C363B9E /* AnyLevelDecorator.swift */; }; + 747E2C1E6608D27B31A11543 /* DecoratedSpyFormatterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7F7DAD6349DEB9B9C93E502 /* DecoratedSpyFormatterTests.swift */; }; 75519EF5B192426192E12476 /* SpyLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 118C16754FC38E5A07685006 /* SpyLevel.swift */; }; 75B1B84566E71D5B8B25E261 /* PSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BDE36DD5E247B5B28C8A0F1 /* PSpyFormatter.swift */; }; + 79E02880AB96459CC2A22701 /* ColoredSpyLevelNameDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE9213F0F5618C324C5387D8 /* ColoredSpyLevelNameDecorator.swift */; }; 79FA4FB2CD9CE24FAF55CA50 /* RawSpyFormatterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB1892C116E484C0A9CEE11F /* RawSpyFormatterTests.swift */; }; + 7B1724B853FD434EFB0706B8 /* DecoratedSpyFormatterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7F7DAD6349DEB9B9C93E502 /* DecoratedSpyFormatterTests.swift */; }; + 7C44E3AFAE84A6A99BFB4161 /* AnyLevelDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67253CF8104AD95F0C363B9E /* AnyLevelDecorator.swift */; }; + 7CC29D530EE2A4149DA17904 /* Pods_Spy_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 372C9D19D97D0AAF9DF764B1 /* Pods_Spy_iOS.framework */; }; + 7D89F6836B7E1992A7BC274C /* DecoratedSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5166096A04677805A734720 /* DecoratedSpyFormatter.swift */; }; 7E6F4EFDED1399C3C21A5C27 /* NetworkSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F3C0B931D6E8C457DB3AC0E /* NetworkSpy.swift */; }; - 7F397EECDCD1877A0BF61A19 /* Pods_SpyTests_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 171FF7143E776555949F8693 /* Pods_SpyTests_iOS.framework */; }; 7F500EE1B575C69C06BEE07C /* Spy.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2850AE714DB254464B02DDD /* Spy.framework */; }; 7F7AC611D87F5A755F2FD60D /* PSpyLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEA4577B8A05FCCE23974CA3 /* PSpyLevel.swift */; }; 82276828C327F059A980D12E /* CompositeSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EE973C951D4D02B1A540560 /* CompositeSpy.swift */; }; @@ -84,67 +95,82 @@ 886A7BD2543444F89389CC16 /* PSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17C12F479779F885FFD5947B /* PSpy.swift */; }; 8910FD3712967C56851A303E /* SpyLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 118C16754FC38E5A07685006 /* SpyLevel.swift */; }; 892B171B9B79D82756032DEE /* PSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BDE36DD5E247B5B28C8A0F1 /* PSpyFormatter.swift */; }; + 895283B869B2AB34764BE357 /* ColoredSpyLevelNameDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE9213F0F5618C324C5387D8 /* ColoredSpyLevelNameDecorator.swift */; }; 8C26251481FA08C43C7F898B /* SpyableStringTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B712E56E1BBE344098456A06 /* SpyableStringTests.swift */; }; 8FCFB3833011AE89281E023B /* ConsoleSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2C43B51E4C3FC74551482F1 /* ConsoleSpy.swift */; }; + 97B5920715A544FA22458037 /* EmojiPrefixedSpyLevelNameDecoratorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC9108D395F05EFA68F906AC /* EmojiPrefixedSpyLevelNameDecoratorTests.swift */; }; 981EEC6855191D72F55509F1 /* AnySpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF2977004EA2EB53528A4F35 /* AnySpy.swift */; }; + 98B553D88D12EFAB4FBD08F9 /* Pods_SpyTests_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC3296688691B378E22685A2 /* Pods_SpyTests_macOS.framework */; }; + 995190404832857DC9455482 /* PSpyLevelDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6B2E0089964BB5D760E0F77 /* PSpyLevelDecorator.swift */; }; 9A1EB1FD313D3F5F095C3DB4 /* SpyColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ACE6EFE1738957011107C20 /* SpyColor.swift */; }; 9A9D3BB19B331877AA7384EE /* PSpyChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7ECD0B3052BFA8AC94D83E2 /* PSpyChannel.swift */; }; 9B3FD0BB2566700EFB118DA2 /* SpyColorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04409B4774F92016C6901F69 /* SpyColorTests.swift */; }; 9B89D1D5F99812C232E51E89 /* AnySpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF2977004EA2EB53528A4F35 /* AnySpy.swift */; }; - 9BFC8B82D8A544471F8226A1 /* RawSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0ADD68BAD32886AD351C0DF /* RawSpyFormatter.swift */; }; - 9C6632E56A871AA5CA71C481 /* PColoredSpyLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCFC9E6DE2BDD91A129BBDF /* PColoredSpyLevel.swift */; }; 9E5DEB16749087CB0CB5339E /* CurrentTimestampProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC720605A9EFD7D25659B56D /* CurrentTimestampProvider.swift */; }; - A03B5A42F456DFDA47868AB8 /* Pods_SpyTests_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FEF75AB748BA20E18446B73 /* Pods_SpyTests_macOS.framework */; }; A30368B5C48757EC721B8C5E /* SpyConfigurationBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D2E0EF783D972A969685BB /* SpyConfigurationBuilder.swift */; }; AA1ADA45BC367897E26CBCCD /* AnySpyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D19ADD9D7DF5A76D1ADFDAA2 /* AnySpyTests.swift */; }; AA95200FE6E47BAA72C42FF4 /* ConsoleSpyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDC5AAEA8A89B929C95B321B /* ConsoleSpyTests.swift */; }; AB084605CDACB9B7E3605C7A /* CompositeSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EE973C951D4D02B1A540560 /* CompositeSpy.swift */; }; AB29D838E29A56E2F3BC1687 /* PSpyChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7ECD0B3052BFA8AC94D83E2 /* PSpyChannel.swift */; }; AD8946BE1EB5312AE328E1E3 /* Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044627ED90B7A4C5A51AB9F2 /* Environment.swift */; }; + AE5CCB62E1C4924EB767F3C4 /* PSpyLevelDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6B2E0089964BB5D760E0F77 /* PSpyLevelDecorator.swift */; }; AEA11A8D41458C45890DD2FC /* SpyColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ACE6EFE1738957011107C20 /* SpyColor.swift */; }; AFF10C2452455326925C8D6C /* SpyableStringTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B712E56E1BBE344098456A06 /* SpyableStringTests.swift */; }; B1550E19429EFA8A6E60ACD0 /* AnySpyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D19ADD9D7DF5A76D1ADFDAA2 /* AnySpyTests.swift */; }; B2421BD4F629D52D4231ADBE /* SpyLevelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCAD0635277EC7F24086E2A /* SpyLevelTests.swift */; }; B242FB7D157350BF3C52AF5F /* SpyColorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04409B4774F92016C6901F69 /* SpyColorTests.swift */; }; - B37426EFC7529DE4ACE7EB0D /* PColoredSpyLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCFC9E6DE2BDD91A129BBDF /* PColoredSpyLevel.swift */; }; B4464A8896B59E2B598D6190 /* Spy-Swift.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B38C06DFA82FEE0B6018DFE /* Spy-Swift.h */; settings = {ATTRIBUTES = (Private, ); }; }; B68D37D441F7931F9805F067 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58A84B16AF7E4301E34B9862 /* ViewController.swift */; }; B8B4D55060E2DA4A225E54EB /* PTimestampProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F066CF5C12BC433A4D0339C8 /* PTimestampProvider.swift */; }; BE6460A87A2BE44E50B45E09 /* PSpyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E7BF75BAB70741E76324A4D /* PSpyTests.swift */; }; + BFD3C8954E99A4A1BFA557A8 /* TestColoredSpyLevelNameDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB04DC49C011B23DF8C3389E /* TestColoredSpyLevelNameDecorator.swift */; }; C00E6ACCAD78C4BFEFDA7A5A /* SpyConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8002EB9A67043BABE9E9E729 /* SpyConfiguration.swift */; }; + C092C3E7138F37EC061F3692 /* Pods_SpyTests_tvOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08AF5FB33BE6E9A776D68CD1 /* Pods_SpyTests_tvOS.framework */; }; C0962F28B8B09664B1A667EE /* SpyChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 521793EF050158ABA07595D0 /* SpyChannel.swift */; }; C1739893893ED4397E244D5C /* SpyConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8002EB9A67043BABE9E9E729 /* SpyConfiguration.swift */; }; + C18E26A9C71439922FEE77BE /* ColoredSpyLevelNameDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE9213F0F5618C324C5387D8 /* ColoredSpyLevelNameDecorator.swift */; }; C2CDAB2DB07EA3A221F45346 /* SpyConfigurationBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D2E0EF783D972A969685BB /* SpyConfigurationBuilder.swift */; }; C2E7B779989D9DBFF18A62EC /* SpyLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 118C16754FC38E5A07685006 /* SpyLevel.swift */; }; C620CBE9088160BA86699938 /* ConsoleSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2C43B51E4C3FC74551482F1 /* ConsoleSpy.swift */; }; C8629831D1D56B4BB934DF1A /* String+PSpyable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAEC108A3832B5E814A0FD72 /* String+PSpyable.swift */; }; C9767B7941C887F87CB15FED /* SpyLevelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCAD0635277EC7F24086E2A /* SpyLevelTests.swift */; }; C99A87C0ED390D32FB658163 /* CurrentTimestampProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC720605A9EFD7D25659B56D /* CurrentTimestampProvider.swift */; }; - CC463FD94823A44257663741 /* Pods_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11400985BA70DB33EE9CF77F /* Pods_Example.framework */; }; + CAD749F4F0BD805A46752680 /* EmojiPrefixedSpyLevelDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58899DBC3D1E553C565C8431 /* EmojiPrefixedSpyLevelDecorator.swift */; }; + CBFF90ABE45499573540B414 /* ColoredSpyLevelNameDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE9213F0F5618C324C5387D8 /* ColoredSpyLevelNameDecorator.swift */; }; + CE56933529D554A751313222 /* EmojiPrefixedSpyLevelDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58899DBC3D1E553C565C8431 /* EmojiPrefixedSpyLevelDecorator.swift */; }; CE63C4AE38E15F61A2389431 /* CompositeSpyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E00BBCA9E4F5B96DBACDEAA /* CompositeSpyTests.swift */; }; + CEA58439D3FE9FBDA34AB8E6 /* EmojiPrefixedSpyLevelNameDecoratorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC9108D395F05EFA68F906AC /* EmojiPrefixedSpyLevelNameDecoratorTests.swift */; }; + D004DDB2F3FD98F552B769C2 /* RawSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F532A7B8168E805A2735D1F1 /* RawSpyFormatter.swift */; }; D05742190967E771291030A7 /* SpyConfigurationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A225A817646067EBD729D1B /* SpyConfigurationTests.swift */; }; D221CA190DA599ECDBE6AB66 /* RawSpyFormatterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB1892C116E484C0A9CEE11F /* RawSpyFormatterTests.swift */; }; + D4663683690C94988F8D93DE /* PlainLevelNameDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 261E26B8CACFF52BFAF23F24 /* PlainLevelNameDecorator.swift */; }; D4F6595FE610807177B0CF25 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B41911F9890DE920ABEED9EF /* Main.storyboard */; }; D4F8CBC3E2FCD93A2FD4EF6D /* PSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BDE36DD5E247B5B28C8A0F1 /* PSpyFormatter.swift */; }; D60C6F7CF9D93E8FB7885B95 /* PSpyable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 083BA954DE1B5FDE0E92AFBA /* PSpyable.swift */; }; + D63CBC505EDF849AD0751B6E /* RawSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F532A7B8168E805A2735D1F1 /* RawSpyFormatter.swift */; }; D6F11216ABB18B4691F4E657 /* Spy.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F2850AE714DB254464B02DDD /* Spy.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D862FA68866D424B9B0521CB /* String+Colored.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D80E77E946C234FA70A60CB /* String+Colored.swift */; }; D9709249E601964C25B4D812 /* CompositeSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EE973C951D4D02B1A540560 /* CompositeSpy.swift */; }; DAC461D0CDA627AFAC0E33F8 /* SpyConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8002EB9A67043BABE9E9E729 /* SpyConfiguration.swift */; }; DCC3E89A37F3AE94C22BA575 /* SpyChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E6F2544402457A3D984DAE9 /* SpyChannel.swift */; }; DDC287FB5C2DB6B0045A0549 /* Spy.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2850AE714DB254464B02DDD /* Spy.framework */; }; + DDFDAFC5A09176ABE4D36327 /* Pods_Spy_tvOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4145A2539490CC5CF9ED5415 /* Pods_Spy_tvOS.framework */; }; E0A8B1F68A1D77F737BDFC61 /* PTimestampProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F066CF5C12BC433A4D0339C8 /* PTimestampProvider.swift */; }; E3D4662BAB047881F16F9768 /* Spy.h in Headers */ = {isa = PBXBuildFile; fileRef = 797BE01EEE903051BF964652 /* Spy.h */; settings = {ATTRIBUTES = (Public, ); }; }; E4FB454F9DC865BCB2282CE2 /* AnySpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF2977004EA2EB53528A4F35 /* AnySpy.swift */; }; E65242FA8DE42CEF964BFF32 /* SpyConfigurationBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B94A3F1FD6044C741CFAA7 /* SpyConfigurationBuilderTests.swift */; }; + E853FF141B439C68A77C24BD /* RawSpyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F532A7B8168E805A2735D1F1 /* RawSpyFormatter.swift */; }; EA4102CDEC2FA0F762242CF9 /* SpyColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ACE6EFE1738957011107C20 /* SpyColor.swift */; }; - EA788BC221774137D8BAB7BC /* Pods_Spy_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E97E93B564B10EFAB917E7E /* Pods_Spy_macOS.framework */; }; + EAF3C9B3FF05CA164F540D0C /* PSpyLevelDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6B2E0089964BB5D760E0F77 /* PSpyLevelDecorator.swift */; }; EC640757F0DF68788CB2E307 /* AutoMockable.generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAB98796A3C79A11981558DD /* AutoMockable.generated.swift */; }; ED1D9880D0FE92EC326A5113 /* Spy-Swift.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B38C06DFA82FEE0B6018DFE /* Spy-Swift.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F1A0395ABBF615489F73A323 /* TestColoredSpyLevelNameDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB04DC49C011B23DF8C3389E /* TestColoredSpyLevelNameDecorator.swift */; }; F3D6BF8A86265329889ED41C /* PTimestampProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F066CF5C12BC433A4D0339C8 /* PTimestampProvider.swift */; }; F5CF317CC6C31D366651B8BF /* CurrentTimestampProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC720605A9EFD7D25659B56D /* CurrentTimestampProvider.swift */; }; F79F86D94319BDFB8B6A1041 /* ConsoleSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2C43B51E4C3FC74551482F1 /* ConsoleSpy.swift */; }; F923CDB15CA708C9A4F9918A /* PSpyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E7BF75BAB70741E76324A4D /* PSpyTests.swift */; }; + FA1C94B0513C52E102F2B2EE /* PSpyLevelDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6B2E0089964BB5D760E0F77 /* PSpyLevelDecorator.swift */; }; + FBA3D2AAF03BCAE7EDABF818 /* AnyLevelDecorator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67253CF8104AD95F0C363B9E /* AnyLevelDecorator.swift */; }; FBB8940D9542B4DD3CB38558 /* PSpyChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7ECD0B3052BFA8AC94D83E2 /* PSpyChannel.swift */; }; FBF6654AE8F7E3DC0AE1FF88 /* AutoMockable.generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAB98796A3C79A11981558DD /* AutoMockable.generated.swift */; }; FC0EBDA068A0274BA54A59CB /* Spy-Swift.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B38C06DFA82FEE0B6018DFE /* Spy-Swift.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -236,81 +262,88 @@ 04409B4774F92016C6901F69 /* SpyColorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpyColorTests.swift; sourceTree = ""; }; 044627ED90B7A4C5A51AB9F2 /* Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Environment.swift; sourceTree = ""; }; 083BA954DE1B5FDE0E92AFBA /* PSpyable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PSpyable.swift; sourceTree = ""; }; - 083C122AF7CF8DD958C22718 /* Pods-Spy_iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spy_iOS.debug.xcconfig"; path = "Target Support Files/Pods-Spy_iOS/Pods-Spy_iOS.debug.xcconfig"; sourceTree = ""; }; + 08AF5FB33BE6E9A776D68CD1 /* Pods_SpyTests_tvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SpyTests_tvOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 0E6F2544402457A3D984DAE9 /* SpyChannel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpyChannel.swift; sourceTree = ""; }; 0F3C0B931D6E8C457DB3AC0E /* NetworkSpy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkSpy.swift; sourceTree = ""; }; - 11400985BA70DB33EE9CF77F /* Pods_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1148C4BF435D4451CB19446D /* Pods-Spy_iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spy_iOS.debug.xcconfig"; path = "Target Support Files/Pods-Spy_iOS/Pods-Spy_iOS.debug.xcconfig"; sourceTree = ""; }; 118C16754FC38E5A07685006 /* SpyLevel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpyLevel.swift; sourceTree = ""; }; - 171FF7143E776555949F8693 /* Pods_SpyTests_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SpyTests_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 17C12F479779F885FFD5947B /* PSpy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PSpy.swift; sourceTree = ""; }; - 199DD8D4248D006EB91FAAFC /* Pods-SpyTests_macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpyTests_macOS.release.xcconfig"; path = "Target Support Files/Pods-SpyTests_macOS/Pods-SpyTests_macOS.release.xcconfig"; sourceTree = ""; }; + 1922CCB609C299E519B976C8 /* Pods-Spy_tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spy_tvOS.release.xcconfig"; path = "Target Support Files/Pods-Spy_tvOS/Pods-Spy_tvOS.release.xcconfig"; sourceTree = ""; }; 1ACE6EFE1738957011107C20 /* SpyColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpyColor.swift; sourceTree = ""; }; - 1B31EE0E1A8E35DB050B7BF7 /* ColoredSpyFormatterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColoredSpyFormatterTests.swift; sourceTree = ""; }; + 20FDC8804C6F3833807DCE0D /* DecoratedLevelBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecoratedLevelBuilder.swift; sourceTree = ""; }; 212C0F1ADFE8F1F7DE292679 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; - 2E97E93B564B10EFAB917E7E /* Pods_Spy_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Spy_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 261E26B8CACFF52BFAF23F24 /* PlainLevelNameDecorator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlainLevelNameDecorator.swift; sourceTree = ""; }; + 372C9D19D97D0AAF9DF764B1 /* Pods_Spy_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Spy_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3A3D789E7A6B2F0083690EBF /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.debug.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.debug.xcconfig"; sourceTree = ""; }; + 3AA30ECA177595C79F60EE34 /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.release.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.release.xcconfig"; sourceTree = ""; }; + 4145A2539490CC5CF9ED5415 /* Pods_Spy_tvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Spy_tvOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 43CDA0072EF09DDE8C86172A /* Pods-Spy_iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spy_iOS.release.xcconfig"; path = "Target Support Files/Pods-Spy_iOS/Pods-Spy_iOS.release.xcconfig"; sourceTree = ""; }; 4BBC8875BEB948A2868F8F4A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 4BCD26C07F4F4FFB66CD349E /* Pods_Spy_tvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Spy_tvOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 4D2A75209F0ADFD824A7846E /* SpyTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SpyTests-Bridging-Header.h"; sourceTree = ""; }; 4E7BF75BAB70741E76324A4D /* PSpyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PSpyTests.swift; sourceTree = ""; }; 4E9FB7FE9330CAEDE9B9405B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 521793EF050158ABA07595D0 /* SpyChannel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpyChannel.swift; sourceTree = ""; }; 5489AA9BC65AF9E7441610A7 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 5880FCBC4A68A8F18CAA1D99 /* Example.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Example.entitlements; sourceTree = ""; }; + 58899DBC3D1E553C565C8431 /* EmojiPrefixedSpyLevelDecorator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPrefixedSpyLevelDecorator.swift; sourceTree = ""; }; 58A84B16AF7E4301E34B9862 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 5B38C06DFA82FEE0B6018DFE /* Spy-Swift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Spy-Swift.h"; sourceTree = ""; }; - 5FBC5B4EF3E4021C5A415D2B /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.debug.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.debug.xcconfig"; sourceTree = ""; }; + 5DF38338ACF9C7984FF66542 /* Pods-SpyTests_tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpyTests_tvOS.debug.xcconfig"; path = "Target Support Files/Pods-SpyTests_tvOS/Pods-SpyTests_tvOS.debug.xcconfig"; sourceTree = ""; }; 5FCAD0635277EC7F24086E2A /* SpyLevelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpyLevelTests.swift; sourceTree = ""; }; - 66F196C75EF08164C244D4D6 /* Pods-Spy_macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spy_macOS.debug.xcconfig"; path = "Target Support Files/Pods-Spy_macOS/Pods-Spy_macOS.debug.xcconfig"; sourceTree = ""; }; + 67253CF8104AD95F0C363B9E /* AnyLevelDecorator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyLevelDecorator.swift; sourceTree = ""; }; 6772CCD175E542765B2DCE45 /* SpyTests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = SpyTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 6D80E77E946C234FA70A60CB /* String+Colored.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Colored.swift"; sourceTree = ""; }; 6E00BBCA9E4F5B96DBACDEAA /* CompositeSpyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompositeSpyTests.swift; sourceTree = ""; }; - 704629BD2DA4E65CB85B44A2 /* ColoredSpyFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColoredSpyFormatter.swift; sourceTree = ""; }; 797BE01EEE903051BF964652 /* Spy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Spy.h; sourceTree = ""; }; - 7CECA6A5A15B62FCF8875C5D /* Pods_Spy_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Spy_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7BB8FB03FF77973A26691BEB /* Pods-SpyTests_iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpyTests_iOS.release.xcconfig"; path = "Target Support Files/Pods-SpyTests_iOS/Pods-SpyTests_iOS.release.xcconfig"; sourceTree = ""; }; + 7DCC53F3D18F378AAC67FD38 /* Pods_SpyTests_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SpyTests_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7EE973C951D4D02B1A540560 /* CompositeSpy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompositeSpy.swift; sourceTree = ""; }; - 7FEF75AB748BA20E18446B73 /* Pods_SpyTests_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SpyTests_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 8002EB9A67043BABE9E9E729 /* SpyConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpyConfiguration.swift; sourceTree = ""; }; 82A24CF2E792F20511B7B4CC /* SpyTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SpyTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 8A225A817646067EBD729D1B /* SpyConfigurationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpyConfigurationTests.swift; sourceTree = ""; }; 8A3D91C2EC2DD101CF21ACEE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 8D34312D622FD2F686DA4A0A /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.release.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.release.xcconfig"; sourceTree = ""; }; - 8E8E4CD70A7335CCBE8C1A19 /* Pods-SpyTests_tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpyTests_tvOS.release.xcconfig"; path = "Target Support Files/Pods-SpyTests_tvOS/Pods-SpyTests_tvOS.release.xcconfig"; sourceTree = ""; }; 92F35F256075C8FD7F58F6AE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 93364D4D9A3C255B36061B9E /* Pods_SpyTests_tvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SpyTests_tvOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 945CC05D699EC2E7607BA367 /* Pods_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 94B02152FA5F1BF520D7032F /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; 9BDE36DD5E247B5B28C8A0F1 /* PSpyFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PSpyFormatter.swift; sourceTree = ""; }; - A6B5A64BA9CA2D768CDE4341 /* Pods-SpyTests_iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpyTests_iOS.release.xcconfig"; path = "Target Support Files/Pods-SpyTests_iOS/Pods-SpyTests_iOS.release.xcconfig"; sourceTree = ""; }; + 9E1C6019893E61551B844D8F /* Pods-SpyTests_tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpyTests_tvOS.release.xcconfig"; path = "Target Support Files/Pods-SpyTests_tvOS/Pods-SpyTests_tvOS.release.xcconfig"; sourceTree = ""; }; A74F2C395D1B8DECBD10C145 /* Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; A7ECD0B3052BFA8AC94D83E2 /* PSpyChannel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PSpyChannel.swift; sourceTree = ""; }; + A82EA2AB54E8585D1DEF42D6 /* Pods-SpyTests_macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpyTests_macOS.release.xcconfig"; path = "Target Support Files/Pods-SpyTests_macOS/Pods-SpyTests_macOS.release.xcconfig"; sourceTree = ""; }; AA470997515CFFB38C44689C /* Common.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Common.xcconfig; sourceTree = ""; }; + AC9108D395F05EFA68F906AC /* EmojiPrefixedSpyLevelNameDecoratorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPrefixedSpyLevelNameDecoratorTests.swift; sourceTree = ""; }; + AE9213F0F5618C324C5387D8 /* ColoredSpyLevelNameDecorator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColoredSpyLevelNameDecorator.swift; sourceTree = ""; }; + AF03613F7068DA8B05CDB038 /* Pods-Spy_macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spy_macOS.debug.xcconfig"; path = "Target Support Files/Pods-Spy_macOS/Pods-Spy_macOS.debug.xcconfig"; sourceTree = ""; }; + AF145610ABEFDF53967B46C1 /* Pods-SpyTests_macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpyTests_macOS.debug.xcconfig"; path = "Target Support Files/Pods-SpyTests_macOS/Pods-SpyTests_macOS.debug.xcconfig"; sourceTree = ""; }; B2C43B51E4C3FC74551482F1 /* ConsoleSpy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConsoleSpy.swift; sourceTree = ""; }; B4D2E0EF783D972A969685BB /* SpyConfigurationBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpyConfigurationBuilder.swift; sourceTree = ""; }; + B5166096A04677805A734720 /* DecoratedSpyFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecoratedSpyFormatter.swift; sourceTree = ""; }; B689C2640382401D7124B39C /* Spy.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Spy.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B6B2E0089964BB5D760E0F77 /* PSpyLevelDecorator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PSpyLevelDecorator.swift; sourceTree = ""; }; B712E56E1BBE344098456A06 /* SpyableStringTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpyableStringTests.swift; sourceTree = ""; }; + B7F7DAD6349DEB9B9C93E502 /* DecoratedSpyFormatterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecoratedSpyFormatterTests.swift; sourceTree = ""; }; BAB98796A3C79A11981558DD /* AutoMockable.generated.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoMockable.generated.swift; sourceTree = ""; }; BAEC108A3832B5E814A0FD72 /* String+PSpyable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+PSpyable.swift"; sourceTree = ""; }; - BCCFC9E6DE2BDD91A129BBDF /* PColoredSpyLevel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PColoredSpyLevel.swift; sourceTree = ""; }; BDC5AAEA8A89B929C95B321B /* ConsoleSpyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConsoleSpyTests.swift; sourceTree = ""; }; BEA4577B8A05FCCE23974CA3 /* PSpyLevel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PSpyLevel.swift; sourceTree = ""; }; BF2977004EA2EB53528A4F35 /* AnySpy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnySpy.swift; sourceTree = ""; }; - C1DF3F6280C42F056B73BA80 /* Pods-Spy_iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spy_iOS.release.xcconfig"; path = "Target Support Files/Pods-Spy_iOS/Pods-Spy_iOS.release.xcconfig"; sourceTree = ""; }; - C413E468ABBE017AAD6A27E2 /* Pods-SpyTests_iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpyTests_iOS.debug.xcconfig"; path = "Target Support Files/Pods-SpyTests_iOS/Pods-SpyTests_iOS.debug.xcconfig"; sourceTree = ""; }; - C8B922D3B06BB7D6233D2C15 /* Pods-Spy_tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spy_tvOS.debug.xcconfig"; path = "Target Support Files/Pods-Spy_tvOS/Pods-Spy_tvOS.debug.xcconfig"; sourceTree = ""; }; + C6FEC5F44E1ED57BBDF2FCAA /* Pods_Spy_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Spy_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C9D02D06CCB2020EE4E5E901 /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; CA898462C74354F0C07F6D32 /* SpyTests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = SpyTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + CC3296688691B378E22685A2 /* Pods_SpyTests_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SpyTests_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CF49C862AFF8344692F93D42 /* Spy.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Spy.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D1967E560B272AB22C043242 /* Pods-SpyTests_macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpyTests_macOS.debug.xcconfig"; path = "Target Support Files/Pods-SpyTests_macOS/Pods-SpyTests_macOS.debug.xcconfig"; sourceTree = ""; }; D19ADD9D7DF5A76D1ADFDAA2 /* AnySpyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnySpyTests.swift; sourceTree = ""; }; D9B94A3F1FD6044C741CFAA7 /* SpyConfigurationBuilderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpyConfigurationBuilderTests.swift; sourceTree = ""; }; - E25FDC97295E23A233FC6F65 /* Pods-Spy_tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spy_tvOS.release.xcconfig"; path = "Target Support Files/Pods-Spy_tvOS/Pods-Spy_tvOS.release.xcconfig"; sourceTree = ""; }; - ECB2CB8D388416EA097F80B8 /* Pods-Spy_macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spy_macOS.release.xcconfig"; path = "Target Support Files/Pods-Spy_macOS/Pods-Spy_macOS.release.xcconfig"; sourceTree = ""; }; + DB04DC49C011B23DF8C3389E /* TestColoredSpyLevelNameDecorator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestColoredSpyLevelNameDecorator.swift; sourceTree = ""; }; + DFD6CC3C63E612B2845D3B48 /* Pods-Spy_macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spy_macOS.release.xcconfig"; path = "Target Support Files/Pods-Spy_macOS/Pods-Spy_macOS.release.xcconfig"; sourceTree = ""; }; F066CF5C12BC433A4D0339C8 /* PTimestampProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PTimestampProvider.swift; sourceTree = ""; }; - F0ADD68BAD32886AD351C0DF /* RawSpyFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RawSpyFormatter.swift; sourceTree = ""; }; - F1BD9512F25AA3FA0A9260C9 /* Pods-SpyTests_tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpyTests_tvOS.debug.xcconfig"; path = "Target Support Files/Pods-SpyTests_tvOS/Pods-SpyTests_tvOS.debug.xcconfig"; sourceTree = ""; }; + F18B0453BECCA1EE6418894A /* Pods-Spy_tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spy_tvOS.debug.xcconfig"; path = "Target Support Files/Pods-Spy_tvOS/Pods-Spy_tvOS.debug.xcconfig"; sourceTree = ""; }; F2850AE714DB254464B02DDD /* Spy.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Spy.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F532A7B8168E805A2735D1F1 /* RawSpyFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RawSpyFormatter.swift; sourceTree = ""; }; F89E7AB26C7CC111444C2F77 /* Spy.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Spy.framework; sourceTree = BUILT_PRODUCTS_DIR; }; FB1892C116E484C0A9CEE11F /* RawSpyFormatterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RawSpyFormatterTests.swift; sourceTree = ""; }; FC720605A9EFD7D25659B56D /* CurrentTimestampProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrentTimestampProvider.swift; sourceTree = ""; }; + FF1E644AF2A42D6BFEAD15C3 /* Pods-SpyTests_iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpyTests_iOS.debug.xcconfig"; path = "Target Support Files/Pods-SpyTests_iOS/Pods-SpyTests_iOS.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -319,65 +352,65 @@ buildActionMask = 2147483647; files = ( 4D633D03FCDD3CBBFF332C99 /* Spy.framework in Frameworks */, - A03B5A42F456DFDA47868AB8 /* Pods_SpyTests_macOS.framework in Frameworks */, + 98B553D88D12EFAB4FBD08F9 /* Pods_SpyTests_macOS.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 07CEF185428A4DF1C44C7789 /* Frameworks */ = { + 21541168DF3DDAF3443853AB /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 7F500EE1B575C69C06BEE07C /* Spy.framework in Frameworks */, + 5C646EE13DAE3B161F08D18A /* Pods_SpyTests_iOS.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 21541168DF3DDAF3443853AB /* Frameworks */ = { + 28845D6F0A07D81D664F63BE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7F500EE1B575C69C06BEE07C /* Spy.framework in Frameworks */, - 7F397EECDCD1877A0BF61A19 /* Pods_SpyTests_iOS.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2F3B647C01C6D6CD27E34356 /* Frameworks */ = { + 2DFB7D95EB87F58476B44248 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DDC287FB5C2DB6B0045A0549 /* Spy.framework in Frameworks */, - CC463FD94823A44257663741 /* Pods_Example.framework in Frameworks */, + 7CC29D530EE2A4149DA17904 /* Pods_Spy_iOS.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 310DFB39F8D268D0AAAA8F8D /* Frameworks */ = { + 2F3B647C01C6D6CD27E34356 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FC9A196D90E55547356AB223 /* Spy.framework in Frameworks */, - 63CCA7B8EB1734BE3CED9552 /* Pods_SpyTests_tvOS.framework in Frameworks */, + DDC287FB5C2DB6B0045A0549 /* Spy.framework in Frameworks */, + 19FB7667717ED8CBB0EC9961 /* Pods_Example.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5E0B5A27279AD7D5445CC08B /* Frameworks */ = { + 310DFB39F8D268D0AAAA8F8D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - EA788BC221774137D8BAB7BC /* Pods_Spy_macOS.framework in Frameworks */, + FC9A196D90E55547356AB223 /* Spy.framework in Frameworks */, + C092C3E7138F37EC061F3692 /* Pods_SpyTests_tvOS.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6CBAF697F94B826349BEE2E0 /* Frameworks */ = { + CC6E57E29B7633F00F3EC572 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 2CB34323D952EADA8906FD37 /* Pods_Spy_tvOS.framework in Frameworks */, + 6C4C889F1DD00907E0EF0F39 /* Pods_Spy_macOS.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7AA94CFB8A3AD41B868A4BED /* Frameworks */ = { + D175A9C043AD50188A551CAB /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 73D4E991DEDD876CDD42CEC5 /* Pods_Spy_iOS.framework in Frameworks */, + DDFDAFC5A09176ABE4D36327 /* Pods_Spy_tvOS.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -399,37 +432,37 @@ name = Products; sourceTree = ""; }; - 0FCF5D341C845D9061DEEC01 /* Pods */ = { + 03C16A23568A17B8E7D4DD51 /* Pods */ = { isa = PBXGroup; children = ( - 5FBC5B4EF3E4021C5A415D2B /* Pods-Example.debug.xcconfig */, - 8D34312D622FD2F686DA4A0A /* Pods-Example.release.xcconfig */, - C413E468ABBE017AAD6A27E2 /* Pods-SpyTests_iOS.debug.xcconfig */, - A6B5A64BA9CA2D768CDE4341 /* Pods-SpyTests_iOS.release.xcconfig */, - D1967E560B272AB22C043242 /* Pods-SpyTests_macOS.debug.xcconfig */, - 199DD8D4248D006EB91FAAFC /* Pods-SpyTests_macOS.release.xcconfig */, - F1BD9512F25AA3FA0A9260C9 /* Pods-SpyTests_tvOS.debug.xcconfig */, - 8E8E4CD70A7335CCBE8C1A19 /* Pods-SpyTests_tvOS.release.xcconfig */, - 083C122AF7CF8DD958C22718 /* Pods-Spy_iOS.debug.xcconfig */, - C1DF3F6280C42F056B73BA80 /* Pods-Spy_iOS.release.xcconfig */, - 66F196C75EF08164C244D4D6 /* Pods-Spy_macOS.debug.xcconfig */, - ECB2CB8D388416EA097F80B8 /* Pods-Spy_macOS.release.xcconfig */, - C8B922D3B06BB7D6233D2C15 /* Pods-Spy_tvOS.debug.xcconfig */, - E25FDC97295E23A233FC6F65 /* Pods-Spy_tvOS.release.xcconfig */, + 3A3D789E7A6B2F0083690EBF /* Pods-Example.debug.xcconfig */, + 3AA30ECA177595C79F60EE34 /* Pods-Example.release.xcconfig */, + FF1E644AF2A42D6BFEAD15C3 /* Pods-SpyTests_iOS.debug.xcconfig */, + 7BB8FB03FF77973A26691BEB /* Pods-SpyTests_iOS.release.xcconfig */, + AF145610ABEFDF53967B46C1 /* Pods-SpyTests_macOS.debug.xcconfig */, + A82EA2AB54E8585D1DEF42D6 /* Pods-SpyTests_macOS.release.xcconfig */, + 5DF38338ACF9C7984FF66542 /* Pods-SpyTests_tvOS.debug.xcconfig */, + 9E1C6019893E61551B844D8F /* Pods-SpyTests_tvOS.release.xcconfig */, + 1148C4BF435D4451CB19446D /* Pods-Spy_iOS.debug.xcconfig */, + 43CDA0072EF09DDE8C86172A /* Pods-Spy_iOS.release.xcconfig */, + AF03613F7068DA8B05CDB038 /* Pods-Spy_macOS.debug.xcconfig */, + DFD6CC3C63E612B2845D3B48 /* Pods-Spy_macOS.release.xcconfig */, + F18B0453BECCA1EE6418894A /* Pods-Spy_tvOS.debug.xcconfig */, + 1922CCB609C299E519B976C8 /* Pods-Spy_tvOS.release.xcconfig */, ); path = Pods; sourceTree = ""; }; - 3E32FC59595AB34296EF6440 /* Frameworks */ = { + 39F6DE37ABB6654913107FDE /* Frameworks */ = { isa = PBXGroup; children = ( - 11400985BA70DB33EE9CF77F /* Pods_Example.framework */, - 171FF7143E776555949F8693 /* Pods_SpyTests_iOS.framework */, - 7FEF75AB748BA20E18446B73 /* Pods_SpyTests_macOS.framework */, - 93364D4D9A3C255B36061B9E /* Pods_SpyTests_tvOS.framework */, - 7CECA6A5A15B62FCF8875C5D /* Pods_Spy_iOS.framework */, - 2E97E93B564B10EFAB917E7E /* Pods_Spy_macOS.framework */, - 4BCD26C07F4F4FFB66CD349E /* Pods_Spy_tvOS.framework */, + 945CC05D699EC2E7607BA367 /* Pods_Example.framework */, + 7DCC53F3D18F378AAC67FD38 /* Pods_SpyTests_iOS.framework */, + CC3296688691B378E22685A2 /* Pods_SpyTests_macOS.framework */, + 08AF5FB33BE6E9A776D68CD1 /* Pods_SpyTests_tvOS.framework */, + 372C9D19D97D0AAF9DF764B1 /* Pods_Spy_iOS.framework */, + C6FEC5F44E1ED57BBDF2FCAA /* Pods_Spy_macOS.framework */, + 4145A2539490CC5CF9ED5415 /* Pods_Spy_tvOS.framework */, ); name = Frameworks; sourceTree = ""; @@ -445,11 +478,10 @@ 48371DECAB19F23BE84F0438 /* Common */ = { isa = PBXGroup; children = ( - 704629BD2DA4E65CB85B44A2 /* ColoredSpyFormatter.swift */, + A6749E03B0AB542323C88810 /* Formatters */, 7EE973C951D4D02B1A540560 /* CompositeSpy.swift */, B2C43B51E4C3FC74551482F1 /* ConsoleSpy.swift */, FC720605A9EFD7D25659B56D /* CurrentTimestampProvider.swift */, - F0ADD68BAD32886AD351C0DF /* RawSpyFormatter.swift */, 118C16754FC38E5A07685006 /* SpyLevel.swift */, ); path = Common; @@ -468,11 +500,27 @@ path = Spy; sourceTree = ""; }; + 906E45A426D867A4FCADF3CE /* Raw */ = { + isa = PBXGroup; + children = ( + F532A7B8168E805A2735D1F1 /* RawSpyFormatter.swift */, + ); + path = Raw; + sourceTree = ""; + }; + A6749E03B0AB542323C88810 /* Formatters */ = { + isa = PBXGroup; + children = ( + F9D3C2E2AFB761F8D3F4894E /* Decorated */, + 906E45A426D867A4FCADF3CE /* Raw */, + ); + path = Formatters; + sourceTree = ""; + }; A6EE52F92C01A117FF0C2234 /* Core */ = { isa = PBXGroup; children = ( BF2977004EA2EB53528A4F35 /* AnySpy.swift */, - BCCFC9E6DE2BDD91A129BBDF /* PColoredSpyLevel.swift */, 17C12F479779F885FFD5947B /* PSpy.swift */, 083BA954DE1B5FDE0E92AFBA /* PSpyable.swift */, A7ECD0B3052BFA8AC94D83E2 /* PSpyChannel.swift */, @@ -495,8 +543,8 @@ E069343808C95096117CBA7D /* SpyTests */, 94B02152FA5F1BF520D7032F /* Package.swift */, 0326187113199AEC92CFE93C /* Products */, - 0FCF5D341C845D9061DEEC01 /* Pods */, - 3E32FC59595AB34296EF6440 /* Frameworks */, + 03C16A23568A17B8E7D4DD51 /* Pods */, + 39F6DE37ABB6654913107FDE /* Frameworks */, ); sourceTree = ""; }; @@ -530,9 +578,10 @@ children = ( 4764231C48B131FAAB5CA0A7 /* Autogenerated */, D19ADD9D7DF5A76D1ADFDAA2 /* AnySpyTests.swift */, - 1B31EE0E1A8E35DB050B7BF7 /* ColoredSpyFormatterTests.swift */, 6E00BBCA9E4F5B96DBACDEAA /* CompositeSpyTests.swift */, BDC5AAEA8A89B929C95B321B /* ConsoleSpyTests.swift */, + B7F7DAD6349DEB9B9C93E502 /* DecoratedSpyFormatterTests.swift */, + AC9108D395F05EFA68F906AC /* EmojiPrefixedSpyLevelNameDecoratorTests.swift */, 4E7BF75BAB70741E76324A4D /* PSpyTests.swift */, FB1892C116E484C0A9CEE11F /* RawSpyFormatterTests.swift */, B712E56E1BBE344098456A06 /* SpyableStringTests.swift */, @@ -542,6 +591,7 @@ 8A225A817646067EBD729D1B /* SpyConfigurationTests.swift */, 5FCAD0635277EC7F24086E2A /* SpyLevelTests.swift */, 4D2A75209F0ADFD824A7846E /* SpyTests-Bridging-Header.h */, + DB04DC49C011B23DF8C3389E /* TestColoredSpyLevelNameDecorator.swift */, ); path = SpyTests; sourceTree = ""; @@ -556,6 +606,20 @@ path = Configurations; sourceTree = ""; }; + F9D3C2E2AFB761F8D3F4894E /* Decorated */ = { + isa = PBXGroup; + children = ( + 67253CF8104AD95F0C363B9E /* AnyLevelDecorator.swift */, + AE9213F0F5618C324C5387D8 /* ColoredSpyLevelNameDecorator.swift */, + 20FDC8804C6F3833807DCE0D /* DecoratedLevelBuilder.swift */, + B5166096A04677805A734720 /* DecoratedSpyFormatter.swift */, + 58899DBC3D1E553C565C8431 /* EmojiPrefixedSpyLevelDecorator.swift */, + 261E26B8CACFF52BFAF23F24 /* PlainLevelNameDecorator.swift */, + B6B2E0089964BB5D760E0F77 /* PSpyLevelDecorator.swift */, + ); + path = Decorated; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -602,7 +666,7 @@ isa = PBXNativeTarget; buildConfigurationList = E20D01782C16923CC210FC11 /* Build configuration list for PBXNativeTarget "Example" */; buildPhases = ( - 1F6787B096C1DEBA8F5EE412 /* [CP] Check Pods Manifest.lock */, + BD54AFF6EFC702A506269F81 /* [CP] Check Pods Manifest.lock */, 9F17513BE0DEE0FD0EB5FF02 /* Sources */, BAC317D50090DEA1A23ED8B3 /* Resources */, 2F3B647C01C6D6CD27E34356 /* Frameworks */, @@ -623,10 +687,10 @@ isa = PBXNativeTarget; buildConfigurationList = 3C2AB836305F80B90627295F /* Build configuration list for PBXNativeTarget "Spy_iOS" */; buildPhases = ( - DFC30AF913C0336A5212B55D /* [CP] Check Pods Manifest.lock */, + E34378EDD743CBEAB2389326 /* [CP] Check Pods Manifest.lock */, 4CE71B7A82F6AB963337104A /* Headers */, 31195AA61D13AF5C43F28C5F /* Sources */, - 7AA94CFB8A3AD41B868A4BED /* Frameworks */, + 2DFB7D95EB87F58476B44248 /* Frameworks */, ); buildRules = ( ); @@ -641,10 +705,10 @@ isa = PBXNativeTarget; buildConfigurationList = 42EBBB54AA87A8B2CE277EB8 /* Build configuration list for PBXNativeTarget "Spy_macOS" */; buildPhases = ( - CEA0F20E2C5637BA2431FC9C /* [CP] Check Pods Manifest.lock */, + 090AC7BD15AD88D6832A4E6F /* [CP] Check Pods Manifest.lock */, 5BC1FC8F32A204A991913FFD /* Headers */, 11CAAEE2FAB9D8F0AFBDE1D9 /* Sources */, - 5E0B5A27279AD7D5445CC08B /* Frameworks */, + CC6E57E29B7633F00F3EC572 /* Frameworks */, ); buildRules = ( ); @@ -659,7 +723,7 @@ isa = PBXNativeTarget; buildConfigurationList = FE640FAC78F486D49127FDED /* Build configuration list for PBXNativeTarget "SpyTests_macOS" */; buildPhases = ( - 7149CA0A089801B979107730 /* [CP] Check Pods Manifest.lock */, + E3AE57330C4732706EFE0ED3 /* [CP] Check Pods Manifest.lock */, C0534A3E559CD5AF16872113 /* Sources */, 066D9DEF87320C63CDA5A125 /* Frameworks */, ACF73D70A2119F8D95D67799 /* Embed Frameworks */, @@ -678,10 +742,10 @@ isa = PBXNativeTarget; buildConfigurationList = D5C83FA2578275282804C87D /* Build configuration list for PBXNativeTarget "Spy_tvOS" */; buildPhases = ( - C2E5EC497DF886BA05054C64 /* [CP] Check Pods Manifest.lock */, + 39D78A5B0A0C6C83ED03A2BF /* [CP] Check Pods Manifest.lock */, 24DFC8619973A8EF9B5194C4 /* Headers */, 3BD522A72D130E6652301A40 /* Sources */, - 6CBAF697F94B826349BEE2E0 /* Frameworks */, + D175A9C043AD50188A551CAB /* Frameworks */, ); buildRules = ( ); @@ -696,7 +760,7 @@ isa = PBXNativeTarget; buildConfigurationList = F90D4FD8DD1744F5C50047EE /* Build configuration list for PBXNativeTarget "SpyTests_tvOS" */; buildPhases = ( - EFCEBD63EF19429AE7402014 /* [CP] Check Pods Manifest.lock */, + B66D643B2B1EE057E0DD55C0 /* [CP] Check Pods Manifest.lock */, 3EAADCC491C85632CAFE3D15 /* Sources */, 310DFB39F8D268D0AAAA8F8D /* Frameworks */, D145A19C087A720A8BE5BC33 /* Embed Frameworks */, @@ -715,7 +779,7 @@ isa = PBXNativeTarget; buildConfigurationList = 39FF6D6083D6D2F6D05CB4AA /* Build configuration list for PBXNativeTarget "SpyTests_iOS" */; buildPhases = ( - 84BBB5A800C0351FC98D3DB7 /* [CP] Check Pods Manifest.lock */, + E5FFAEAE620040A757BA90AE /* [CP] Check Pods Manifest.lock */, BE626AD77F7927458BB76414 /* Sources */, 21541168DF3DDAF3443853AB /* Frameworks */, 778878D46AF7A22426B7AF49 /* Embed Frameworks */, @@ -736,7 +800,7 @@ buildPhases = ( A2399FA8DCBC74F945151BC3 /* Headers */, 45FABD15EBAA08D147991A63 /* Sources */, - 07CEF185428A4DF1C44C7789 /* Frameworks */, + 28845D6F0A07D81D664F63BE /* Frameworks */, ); buildRules = ( ); @@ -820,7 +884,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 1F6787B096C1DEBA8F5EE412 /* [CP] Check Pods Manifest.lock */ = { + 090AC7BD15AD88D6832A4E6F /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -835,14 +899,14 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Example-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-Spy_macOS-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 7149CA0A089801B979107730 /* [CP] Check Pods Manifest.lock */ = { + 39D78A5B0A0C6C83ED03A2BF /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -857,14 +921,14 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SpyTests_macOS-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-Spy_tvOS-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 84BBB5A800C0351FC98D3DB7 /* [CP] Check Pods Manifest.lock */ = { + 8F9C6F2C822D15A1ADD59107 /* SwiftLint */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -872,21 +936,17 @@ inputFileListPaths = ( ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", ); - name = "[CP] Check Pods Manifest.lock"; + name = SwiftLint; outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SpyTests_iOS-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; + shellScript = "\"${PODS_ROOT}/SwiftLint/swiftlint\"\n"; }; - 8F9C6F2C822D15A1ADD59107 /* SwiftLint */ = { + B66D643B2B1EE057E0DD55C0 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -894,17 +954,21 @@ inputFileListPaths = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); - name = SwiftLint; + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( ); outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-SpyTests_tvOS-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/SwiftLint/swiftlint\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; }; - C2E5EC497DF886BA05054C64 /* [CP] Check Pods Manifest.lock */ = { + BD54AFF6EFC702A506269F81 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -919,14 +983,14 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Spy_tvOS-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-Example-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - CEA0F20E2C5637BA2431FC9C /* [CP] Check Pods Manifest.lock */ = { + E34378EDD743CBEAB2389326 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -941,14 +1005,14 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Spy_macOS-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-Spy_iOS-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - DFC30AF913C0336A5212B55D /* [CP] Check Pods Manifest.lock */ = { + E3AE57330C4732706EFE0ED3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -963,14 +1027,14 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Spy_iOS-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-SpyTests_macOS-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - EFCEBD63EF19429AE7402014 /* [CP] Check Pods Manifest.lock */ = { + E5FFAEAE620040A757BA90AE /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -985,7 +1049,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SpyTests_tvOS-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-SpyTests_iOS-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -999,19 +1063,24 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + FBA3D2AAF03BCAE7EDABF818 /* AnyLevelDecorator.swift in Sources */, 981EEC6855191D72F55509F1 /* AnySpy.swift in Sources */, - 18FC7DF37F1E1E5973DA04E7 /* ColoredSpyFormatter.swift in Sources */, + 79E02880AB96459CC2A22701 /* ColoredSpyLevelNameDecorator.swift in Sources */, AB084605CDACB9B7E3605C7A /* CompositeSpy.swift in Sources */, 8FCFB3833011AE89281E023B /* ConsoleSpy.swift in Sources */, F5CF317CC6C31D366651B8BF /* CurrentTimestampProvider.swift in Sources */, - 3BBFCC563E6D47D1C48F6986 /* PColoredSpyLevel.swift in Sources */, + 3FEBC2D512FF67DBC4BEAC50 /* DecoratedLevelBuilder.swift in Sources */, + 65F6F9D33FE128469B6F18BB /* DecoratedSpyFormatter.swift in Sources */, + CE56933529D554A751313222 /* EmojiPrefixedSpyLevelDecorator.swift in Sources */, 886A7BD2543444F89389CC16 /* PSpy.swift in Sources */, AB29D838E29A56E2F3BC1687 /* PSpyChannel.swift in Sources */, 8412EDEAA2D85CEEA805E0EF /* PSpyFormatter.swift in Sources */, 4F128AC60B1145DE3F616BC0 /* PSpyLevel.swift in Sources */, + EAF3C9B3FF05CA164F540D0C /* PSpyLevelDecorator.swift in Sources */, 6632657E0F9024B622C384F2 /* PSpyable.swift in Sources */, B8B4D55060E2DA4A225E54EB /* PTimestampProvider.swift in Sources */, - 03E14636E748AD712863C4C9 /* RawSpyFormatter.swift in Sources */, + D4663683690C94988F8D93DE /* PlainLevelNameDecorator.swift in Sources */, + D004DDB2F3FD98F552B769C2 /* RawSpyFormatter.swift in Sources */, 62AFD6CA6344AF0F4D8F1CCD /* SpyColor.swift in Sources */, FD176C5DC60F5BF88F166576 /* SpyConfiguration.swift in Sources */, 19450A771F401CB4FC681C44 /* SpyConfigurationBuilder.swift in Sources */, @@ -1025,19 +1094,24 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 38A7C74931843540C1801D5E /* AnyLevelDecorator.swift in Sources */, 9B89D1D5F99812C232E51E89 /* AnySpy.swift in Sources */, - 24E224EC2283D738DF745C98 /* ColoredSpyFormatter.swift in Sources */, + 895283B869B2AB34764BE357 /* ColoredSpyLevelNameDecorator.swift in Sources */, 82276828C327F059A980D12E /* CompositeSpy.swift in Sources */, 6C26BFB55872028C592AA5E6 /* ConsoleSpy.swift in Sources */, 44243EEFD83ECAA405CE47D8 /* CurrentTimestampProvider.swift in Sources */, - B37426EFC7529DE4ACE7EB0D /* PColoredSpyLevel.swift in Sources */, + 537CC9E38E37E0DB168FFD00 /* DecoratedLevelBuilder.swift in Sources */, + 41D050A2F33AC838763DCA80 /* DecoratedSpyFormatter.swift in Sources */, + 3983E0B3AFB0323C312E3F0D /* EmojiPrefixedSpyLevelDecorator.swift in Sources */, 1D6B29087959EE09A0E38A1E /* PSpy.swift in Sources */, 9A9D3BB19B331877AA7384EE /* PSpyChannel.swift in Sources */, 75B1B84566E71D5B8B25E261 /* PSpyFormatter.swift in Sources */, 83C426EEA71209EFF73B8C33 /* PSpyLevel.swift in Sources */, + FA1C94B0513C52E102F2B2EE /* PSpyLevelDecorator.swift in Sources */, D60C6F7CF9D93E8FB7885B95 /* PSpyable.swift in Sources */, E0A8B1F68A1D77F737BDFC61 /* PTimestampProvider.swift in Sources */, - 51B2EC621C9AD78302DC5E7D /* RawSpyFormatter.swift in Sources */, + 60BAA8F401079244275AF8A2 /* PlainLevelNameDecorator.swift in Sources */, + 49FA3E13ED495EFB67F09577 /* RawSpyFormatter.swift in Sources */, EA4102CDEC2FA0F762242CF9 /* SpyColor.swift in Sources */, C00E6ACCAD78C4BFEFDA7A5A /* SpyConfiguration.swift in Sources */, C2CDAB2DB07EA3A221F45346 /* SpyConfigurationBuilder.swift in Sources */, @@ -1051,19 +1125,24 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 7C44E3AFAE84A6A99BFB4161 /* AnyLevelDecorator.swift in Sources */, 485CF3835F477BB652A3378E /* AnySpy.swift in Sources */, - 5BA16C608CFC8700BC2BC8C6 /* ColoredSpyFormatter.swift in Sources */, + C18E26A9C71439922FEE77BE /* ColoredSpyLevelNameDecorator.swift in Sources */, D9709249E601964C25B4D812 /* CompositeSpy.swift in Sources */, F79F86D94319BDFB8B6A1041 /* ConsoleSpy.swift in Sources */, C99A87C0ED390D32FB658163 /* CurrentTimestampProvider.swift in Sources */, - 0B59A92676CFBE7AD07832FC /* PColoredSpyLevel.swift in Sources */, + 51AD4ACDFC2CCF4051A3A48A /* DecoratedLevelBuilder.swift in Sources */, + 55937733DF64DF3094150778 /* DecoratedSpyFormatter.swift in Sources */, + CAD749F4F0BD805A46752680 /* EmojiPrefixedSpyLevelDecorator.swift in Sources */, 21B02C3179425E712098BB8F /* PSpy.swift in Sources */, 068C3F82F2F30FCE9337F719 /* PSpyChannel.swift in Sources */, 892B171B9B79D82756032DEE /* PSpyFormatter.swift in Sources */, 0E8A240FB1BD894915DB91FC /* PSpyLevel.swift in Sources */, + 995190404832857DC9455482 /* PSpyLevelDecorator.swift in Sources */, 5ED5122DDB798AC53EE3C8B3 /* PSpyable.swift in Sources */, F3D6BF8A86265329889ED41C /* PTimestampProvider.swift in Sources */, - 9BFC8B82D8A544471F8226A1 /* RawSpyFormatter.swift in Sources */, + 20DECD204218C72EB0004F11 /* PlainLevelNameDecorator.swift in Sources */, + D63CBC505EDF849AD0751B6E /* RawSpyFormatter.swift in Sources */, 9A1EB1FD313D3F5F095C3DB4 /* SpyColor.swift in Sources */, DAC461D0CDA627AFAC0E33F8 /* SpyConfiguration.swift in Sources */, 71C3E5188C68CD679A7E3BD3 /* SpyConfigurationBuilder.swift in Sources */, @@ -1079,9 +1158,10 @@ files = ( AA1ADA45BC367897E26CBCCD /* AnySpyTests.swift in Sources */, 2262A63FF401FB90F7D45B67 /* AutoMockable.generated.swift in Sources */, - 7447AF07B1A1C5989E4D6A0D /* ColoredSpyFormatterTests.swift in Sources */, 3C1F26ED92D01B47E2D3007E /* CompositeSpyTests.swift in Sources */, 40674627A0381137B894A72A /* ConsoleSpyTests.swift in Sources */, + 4F315EB0E68EC114E14BA0A7 /* DecoratedSpyFormatterTests.swift in Sources */, + 2A62E9C38A57BF5DD82A36AD /* EmojiPrefixedSpyLevelNameDecoratorTests.swift in Sources */, BE6460A87A2BE44E50B45E09 /* PSpyTests.swift in Sources */, 79FA4FB2CD9CE24FAF55CA50 /* RawSpyFormatterTests.swift in Sources */, 6D342CD13E60B9F5AF3FE963 /* SpyChannel.swift in Sources */, @@ -1090,6 +1170,7 @@ 3AC7008E7D17C907BE2DE52D /* SpyConfigurationTests.swift in Sources */, B2421BD4F629D52D4231ADBE /* SpyLevelTests.swift in Sources */, 19DA90F1AA80C6743BB06779 /* SpyableStringTests.swift in Sources */, + F1A0395ABBF615489F73A323 /* TestColoredSpyLevelNameDecorator.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1097,19 +1178,24 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 743375A5138CDAF1E181FCA7 /* AnyLevelDecorator.swift in Sources */, E4FB454F9DC865BCB2282CE2 /* AnySpy.swift in Sources */, - 2AA29C4C75601F3C359DE764 /* ColoredSpyFormatter.swift in Sources */, + CBFF90ABE45499573540B414 /* ColoredSpyLevelNameDecorator.swift in Sources */, 42175CE58C2866720C3E3DC9 /* CompositeSpy.swift in Sources */, C620CBE9088160BA86699938 /* ConsoleSpy.swift in Sources */, 9E5DEB16749087CB0CB5339E /* CurrentTimestampProvider.swift in Sources */, - 9C6632E56A871AA5CA71C481 /* PColoredSpyLevel.swift in Sources */, + 01DC729040BB0735C4C88EC0 /* DecoratedLevelBuilder.swift in Sources */, + 7D89F6836B7E1992A7BC274C /* DecoratedSpyFormatter.swift in Sources */, + 611243FF16D40C61191EAB88 /* EmojiPrefixedSpyLevelDecorator.swift in Sources */, 3870206ABDFC01485BBF19AC /* PSpy.swift in Sources */, FBB8940D9542B4DD3CB38558 /* PSpyChannel.swift in Sources */, D4F8CBC3E2FCD93A2FD4EF6D /* PSpyFormatter.swift in Sources */, 7F7AC611D87F5A755F2FD60D /* PSpyLevel.swift in Sources */, + AE5CCB62E1C4924EB767F3C4 /* PSpyLevelDecorator.swift in Sources */, 54843A4085FFD5237E5E6E59 /* PSpyable.swift in Sources */, 73BF06596792ACCE96D05F8C /* PTimestampProvider.swift in Sources */, - 0B45CEF621128EDC4F2EC037 /* RawSpyFormatter.swift in Sources */, + 66F5EFA3C14E939E4E3C8E8A /* PlainLevelNameDecorator.swift in Sources */, + E853FF141B439C68A77C24BD /* RawSpyFormatter.swift in Sources */, AEA11A8D41458C45890DD2FC /* SpyColor.swift in Sources */, C1739893893ED4397E244D5C /* SpyConfiguration.swift in Sources */, A30368B5C48757EC721B8C5E /* SpyConfigurationBuilder.swift in Sources */, @@ -1137,9 +1223,10 @@ files = ( 3C05462E6DF63DE1F0997C66 /* AnySpyTests.swift in Sources */, EC640757F0DF68788CB2E307 /* AutoMockable.generated.swift in Sources */, - 15579266A438E8373D19ADA7 /* ColoredSpyFormatterTests.swift in Sources */, CE63C4AE38E15F61A2389431 /* CompositeSpyTests.swift in Sources */, AA95200FE6E47BAA72C42FF4 /* ConsoleSpyTests.swift in Sources */, + 747E2C1E6608D27B31A11543 /* DecoratedSpyFormatterTests.swift in Sources */, + CEA58439D3FE9FBDA34AB8E6 /* EmojiPrefixedSpyLevelNameDecoratorTests.swift in Sources */, 067547D57836983449BD37FF /* PSpyTests.swift in Sources */, D221CA190DA599ECDBE6AB66 /* RawSpyFormatterTests.swift in Sources */, C0962F28B8B09664B1A667EE /* SpyChannel.swift in Sources */, @@ -1148,6 +1235,7 @@ 06E623625255BD2C37780B70 /* SpyConfigurationTests.swift in Sources */, 0B1E4BECF222C9816D8B377B /* SpyLevelTests.swift in Sources */, AFF10C2452455326925C8D6C /* SpyableStringTests.swift in Sources */, + BFD3C8954E99A4A1BFA557A8 /* TestColoredSpyLevelNameDecorator.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1157,9 +1245,10 @@ files = ( B1550E19429EFA8A6E60ACD0 /* AnySpyTests.swift in Sources */, FBF6654AE8F7E3DC0AE1FF88 /* AutoMockable.generated.swift in Sources */, - 69FC6D68062A8D0709AD7FBA /* ColoredSpyFormatterTests.swift in Sources */, 1FCAA0FF0B43AE7ACD7B48C6 /* CompositeSpyTests.swift in Sources */, 5BDEC228E142161495F28987 /* ConsoleSpyTests.swift in Sources */, + 7B1724B853FD434EFB0706B8 /* DecoratedSpyFormatterTests.swift in Sources */, + 97B5920715A544FA22458037 /* EmojiPrefixedSpyLevelNameDecoratorTests.swift in Sources */, F923CDB15CA708C9A4F9918A /* PSpyTests.swift in Sources */, 1E4752938008078138590582 /* RawSpyFormatterTests.swift in Sources */, FC980D0C4924363F9FD1AEA4 /* SpyChannel.swift in Sources */, @@ -1168,6 +1257,7 @@ D05742190967E771291030A7 /* SpyConfigurationTests.swift in Sources */, C9767B7941C887F87CB15FED /* SpyLevelTests.swift in Sources */, 8C26251481FA08C43C7F898B /* SpyableStringTests.swift in Sources */, + 0D3A37DE86601FE16EF5D1D8 /* TestColoredSpyLevelNameDecorator.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1210,7 +1300,7 @@ /* Begin XCBuildConfiguration section */ 0C054A4C6A73B141C3E4A7E1 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8D34312D622FD2F686DA4A0A /* Pods-Example.release.xcconfig */; + baseConfigurationReference = 3AA30ECA177595C79F60EE34 /* Pods-Example.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; @@ -1228,7 +1318,7 @@ }; 1BF055A76204D004FAFD51AE /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 66F196C75EF08164C244D4D6 /* Pods-Spy_macOS.debug.xcconfig */; + baseConfigurationReference = AF03613F7068DA8B05CDB038 /* Pods-Spy_macOS.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; @@ -1273,7 +1363,7 @@ }; 276F33608C73B2EFED6D277D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F1BD9512F25AA3FA0A9260C9 /* Pods-SpyTests_tvOS.debug.xcconfig */; + baseConfigurationReference = 5DF38338ACF9C7984FF66542 /* Pods-SpyTests_tvOS.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1291,7 +1381,7 @@ }; 333AAF53B4B79D6C7401C5BB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5FBC5B4EF3E4021C5A415D2B /* Pods-Example.debug.xcconfig */; + baseConfigurationReference = 3A3D789E7A6B2F0083690EBF /* Pods-Example.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; @@ -1388,7 +1478,7 @@ }; 425F9F5ADC3513B70C9CAD5D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 083C122AF7CF8DD958C22718 /* Pods-Spy_iOS.debug.xcconfig */; + baseConfigurationReference = 1148C4BF435D4451CB19446D /* Pods-Spy_iOS.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; CURRENT_PROJECT_VERSION = 1; @@ -1413,7 +1503,7 @@ }; 49D6DDC318E8EBB539F35DE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8E8E4CD70A7335CCBE8C1A19 /* Pods-SpyTests_tvOS.release.xcconfig */; + baseConfigurationReference = 9E1C6019893E61551B844D8F /* Pods-SpyTests_tvOS.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1431,7 +1521,7 @@ }; 4CBD552CCBF93EC5EE73E378 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C413E468ABBE017AAD6A27E2 /* Pods-SpyTests_iOS.debug.xcconfig */; + baseConfigurationReference = FF1E644AF2A42D6BFEAD15C3 /* Pods-SpyTests_iOS.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1449,7 +1539,7 @@ }; 5BC81AD6AF80183195099A42 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ECB2CB8D388416EA097F80B8 /* Pods-Spy_macOS.release.xcconfig */; + baseConfigurationReference = DFD6CC3C63E612B2845D3B48 /* Pods-Spy_macOS.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; @@ -1474,7 +1564,7 @@ }; 5D77F0E8BB15017A730126DC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 199DD8D4248D006EB91FAAFC /* Pods-SpyTests_macOS.release.xcconfig */; + baseConfigurationReference = A82EA2AB54E8585D1DEF42D6 /* Pods-SpyTests_macOS.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COMBINE_HIDPI_IMAGES = YES; @@ -1492,7 +1582,7 @@ }; 5F6BFA27A824A14C4D2DE804 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C1DF3F6280C42F056B73BA80 /* Pods-Spy_iOS.release.xcconfig */; + baseConfigurationReference = 43CDA0072EF09DDE8C86172A /* Pods-Spy_iOS.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; CURRENT_PROJECT_VERSION = 1; @@ -1569,7 +1659,7 @@ }; 8BBBEACB9C073941FB5731E0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A6B5A64BA9CA2D768CDE4341 /* Pods-SpyTests_iOS.release.xcconfig */; + baseConfigurationReference = 7BB8FB03FF77973A26691BEB /* Pods-SpyTests_iOS.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1587,7 +1677,7 @@ }; B2DECA4BBA01E433FF0EA8B6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E25FDC97295E23A233FC6F65 /* Pods-Spy_tvOS.release.xcconfig */; + baseConfigurationReference = 1922CCB609C299E519B976C8 /* Pods-Spy_tvOS.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; CURRENT_PROJECT_VERSION = 1; @@ -1612,7 +1702,7 @@ }; F346B87A2A43A6C94B06CC45 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C8B922D3B06BB7D6233D2C15 /* Pods-Spy_tvOS.debug.xcconfig */; + baseConfigurationReference = F18B0453BECCA1EE6418894A /* Pods-Spy_tvOS.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; CURRENT_PROJECT_VERSION = 1; @@ -1637,7 +1727,7 @@ }; FC107C9144FFC557F37F5D74 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D1967E560B272AB22C043242 /* Pods-SpyTests_macOS.debug.xcconfig */; + baseConfigurationReference = AF145610ABEFDF53967B46C1 /* Pods-SpyTests_macOS.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COMBINE_HIDPI_IMAGES = YES; diff --git a/Spy/Common/ColoredSpyFormatter.swift b/Spy/Common/ColoredSpyFormatter.swift deleted file mode 100644 index 930f560..0000000 --- a/Spy/Common/ColoredSpyFormatter.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// ColoredSpyFormatter.swift -// Spy -// -// Created by Tomasz Lewandowski on 24/01/2020. -// Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. -// - -import Foundation - -public final class ColoredSpyFormatter: PSpyFormatter { - public init() { - - } - - public func format(timestamp: TimeInterval, level: Level, channel: Channel, message: PSpyable) -> String { - return "\(Date(timeIntervalSince1970: timestamp)) \(level.levelName.colored(with: level.color))::\(channel.channelName)::\(message.spyMessage)" - } -} diff --git a/Spy/Common/Formatters/Decorated/AnyLevelDecorator.swift b/Spy/Common/Formatters/Decorated/AnyLevelDecorator.swift new file mode 100644 index 0000000..0454bca --- /dev/null +++ b/Spy/Common/Formatters/Decorated/AnyLevelDecorator.swift @@ -0,0 +1,38 @@ +// +// AnyLevelDecorator.swift +// Spy +// +// Created by Tomasz Lewandowski on 24/01/2020. +// Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. +// + +public final class AnyLevelDecorator: PSpyLevelDecorator { + private let decorator: _AnyLevelDecoratorBase + + public init(_ decorator: Decorator) where Decorator.Level == Level { + self.decorator = _AnyLevelDecoratorBox(decorator) + } + + public func decorate(level: Level, value: String) -> String { + return decorator.decorate(level: level, value: value) + } +} + +private final class _AnyLevelDecoratorBox: _AnyLevelDecoratorBase { + let decorator: Decorator + + init(_ decorator: Decorator) { + self.decorator = decorator + super.init() + } + + override func decorate(level: Level, value: String) -> String { + return decorator.decorate(level: level, value: value) + } +} + +private class _AnyLevelDecoratorBase: PSpyLevelDecorator { + func decorate(level: Level, value: String) -> String { + fatalError("Must be overriden") + } +} diff --git a/Spy/Common/Formatters/Decorated/ColoredSpyLevelNameDecorator.swift b/Spy/Common/Formatters/Decorated/ColoredSpyLevelNameDecorator.swift new file mode 100644 index 0000000..15ef9bc --- /dev/null +++ b/Spy/Common/Formatters/Decorated/ColoredSpyLevelNameDecorator.swift @@ -0,0 +1,31 @@ +// +// ColoredSpyLevelNameDecorator.swift +// Spy +// +// Created by Tomasz Lewandowski on 24/01/2020. +// Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. +// + +public final class ColoredSpyLevelNameDecorator: PSpyLevelDecorator { + public typealias Level = SpyLevel + + public init() { + + } + + public func decorate(level: SpyLevel, value: String) -> String { + return value.colored(with: color(forLevel: level)) + } + + private func color(forLevel level: Level) -> SpyColor { + switch level { + case .finest: return .white + case .finer: return .cyan + case .fine: return .blue + case .config: return .magenta + case .info: return .green + case .warning: return .yellow + case .severe: return .red + } + } +} diff --git a/Spy/Common/Formatters/Decorated/DecoratedLevelBuilder.swift b/Spy/Common/Formatters/Decorated/DecoratedLevelBuilder.swift new file mode 100644 index 0000000..bea5671 --- /dev/null +++ b/Spy/Common/Formatters/Decorated/DecoratedLevelBuilder.swift @@ -0,0 +1,28 @@ +// +// DecoratedLevelNameBuilder.swift +// Spy +// +// Created by Tomasz Lewandowski on 24/01/2020. +// Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. +// + +public final class DecoratedLevelNameBuilder { + private var decorators: [AnyLevelDecorator] = [] + + public init() { + add(decorator: PlainLevelNameDecorator().toAnyDecorator()) + } + + @discardableResult public func add(decorator: AnyLevelDecorator) -> DecoratedLevelNameBuilder { + decorators.append(decorator) + return self + } + + public func build(withLevel level: Level) -> String { + var decoratedLevelName = "" + for decorator in decorators { + decoratedLevelName = decorator.decorate(level: level, value: decoratedLevelName) + } + return decoratedLevelName + } +} diff --git a/Spy/Common/Formatters/Decorated/DecoratedSpyFormatter.swift b/Spy/Common/Formatters/Decorated/DecoratedSpyFormatter.swift new file mode 100644 index 0000000..f62bc8f --- /dev/null +++ b/Spy/Common/Formatters/Decorated/DecoratedSpyFormatter.swift @@ -0,0 +1,21 @@ +// +// DecoratedSpyFormatter.swift +// Spy +// +// Created by Tomasz Lewandowski on 24/01/2020. +// Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. +// + +import Foundation + +public final class DecoratedSpyFormatter: PSpyFormatter { + let levelNameBuilder: DecoratedLevelNameBuilder + + public init(levelNameBuilder: DecoratedLevelNameBuilder) { + self.levelNameBuilder = levelNameBuilder + } + + public func format(timestamp: TimeInterval, level: Level, channel: Channel, message: PSpyable) -> String { + return "\(Date(timeIntervalSince1970: timestamp)) \(levelNameBuilder.build(withLevel: level))::\(channel.channelName)::\(message.spyMessage)" + } +} diff --git a/Spy/Common/Formatters/Decorated/EmojiPrefixedSpyLevelDecorator.swift b/Spy/Common/Formatters/Decorated/EmojiPrefixedSpyLevelDecorator.swift new file mode 100644 index 0000000..e1dc85a --- /dev/null +++ b/Spy/Common/Formatters/Decorated/EmojiPrefixedSpyLevelDecorator.swift @@ -0,0 +1,33 @@ +// +// EmojiPrefixedSpyLevelNameDecorator.swift +// Spy +// +// Created by Tomasz Lewandowski on 24/01/2020. +// Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. +// + +public final class EmojiPrefixedSpyLevelNameDecorator: PSpyLevelDecorator { + public init() { + + } + + public func decorate(level: SpyLevel, value: String) -> String { + return level.prefix + " " + value + } + + public typealias Level = SpyLevel +} + +private extension SpyLevel { + var prefix: String { + switch self { + case .finest: return "💬" + case .finer: return "🔊" + case .fine: return "📣" + case .config: return "✅" + case .info: return "ℹ️" + case .warning: return "⚠️" + case .severe: return "⛔" + } + } +} diff --git a/Spy/Common/Formatters/Decorated/PSpyLevelDecorator.swift b/Spy/Common/Formatters/Decorated/PSpyLevelDecorator.swift new file mode 100644 index 0000000..deb67f8 --- /dev/null +++ b/Spy/Common/Formatters/Decorated/PSpyLevelDecorator.swift @@ -0,0 +1,18 @@ +// +// PSpyLevelDecorator.swift +// Spy +// +// Created by Tomasz Lewandowski on 24/01/2020. +// Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. +// + +public protocol PSpyLevelDecorator { + associatedtype Level: PSpyLevel + func decorate(level: Level, value: String) -> String +} + +public extension PSpyLevelDecorator { + func toAnyDecorator() -> AnyLevelDecorator { + return AnyLevelDecorator(self) + } +} diff --git a/Spy/Common/Formatters/Decorated/PlainLevelNameDecorator.swift b/Spy/Common/Formatters/Decorated/PlainLevelNameDecorator.swift new file mode 100644 index 0000000..8219c69 --- /dev/null +++ b/Spy/Common/Formatters/Decorated/PlainLevelNameDecorator.swift @@ -0,0 +1,16 @@ +// +// PlainLevelNameDecorator.swift +// Spy +// +// Created by Tomasz Lewandowski on 24/01/2020. +// Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. +// + +public final class PlainLevelNameDecorator: PSpyLevelDecorator { + public init() { + + } + public func decorate(level: Level, value: String) -> String { + return level.levelName + } +} diff --git a/Spy/Common/RawSpyFormatter.swift b/Spy/Common/Formatters/Raw/RawSpyFormatter.swift similarity index 100% rename from Spy/Common/RawSpyFormatter.swift rename to Spy/Common/Formatters/Raw/RawSpyFormatter.swift diff --git a/Spy/Common/SpyLevel.swift b/Spy/Common/SpyLevel.swift index fb50b9c..0658acf 100644 --- a/Spy/Common/SpyLevel.swift +++ b/Spy/Common/SpyLevel.swift @@ -6,7 +6,7 @@ // Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. // -public enum SpyLevel: Int, PColoredSpyLevel { +public enum SpyLevel: Int, PSpyLevel { case finest = 0 case finer = 1 case fine = 2 @@ -34,16 +34,4 @@ public enum SpyLevel: Int, PColoredSpyLevel { public static func levelsFrom(_ level: SpyLevel) -> Set { return Set([SpyLevel.finest, .finer, .fine, .config, .info, .warning, .severe]).filter { $0.levelPriority >= level.levelPriority } } - - public var color: SpyColor { - switch self { - case .finest: return .white - case .finer: return .cyan - case .fine: return .blue - case .config: return .magenta - case .info: return .green - case .warning: return .yellow - case .severe: return .red - } - } } diff --git a/Spy/Core/PColoredSpyLevel.swift b/Spy/Core/PColoredSpyLevel.swift deleted file mode 100644 index ed194a7..0000000 --- a/Spy/Core/PColoredSpyLevel.swift +++ /dev/null @@ -1,11 +0,0 @@ -// -// PColoredSpyLevel.swift -// Spy -// -// Created by Tomasz Lewandowski on 24/01/2020. -// Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. -// - -public protocol PColoredSpyLevel: PSpyLevel { - var color: SpyColor { get } -} diff --git a/SpyTests/ColoredSpyFormatterTests.swift b/SpyTests/ColoredSpyFormatterTests.swift deleted file mode 100644 index ae3a4bb..0000000 --- a/SpyTests/ColoredSpyFormatterTests.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// ColoredSpyFormatterTests.swift -// Spy -// -// Created by Tomasz Lewandowski on 24/01/2020. -// Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. -// - -import XCTest -import Spy - -final class ColoredSpyFormatterTests: XCTestCase { - func testFormat_WhenCalledWithTimestampLevelChannelAndMessage_ShouldReturnStringInCorrectFormat() { - let sut = ColoredSpyFormatter() - let formattedLog = sut.format(timestamp: 0, level: .info, channel: .defaultChannel, message: "message") - XCTAssertEqual("1970-01-01 00:00:00 +0000 \u{001B}[0;32minfo\u{001B}[0;0m::default_channel::message", formattedLog) - } -} diff --git a/SpyTests/DecoratedSpyFormatterTests.swift b/SpyTests/DecoratedSpyFormatterTests.swift new file mode 100644 index 0000000..f81516f --- /dev/null +++ b/SpyTests/DecoratedSpyFormatterTests.swift @@ -0,0 +1,33 @@ +// +// DecoratedSpyFormatterTests.swift +// Spy +// +// Created by Tomasz Lewandowski on 24/01/2020. +// Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. +// + +import XCTest +import Spy + +final class DecoratedSpyFormatterTests: XCTestCase { + func testFormat_WhenCreatedWithBuilderWithColorDecorator_ShouldReturnStringInCorrectFormat() { + let sut = DecoratedSpyFormatter(levelNameBuilder: DecoratedLevelNameBuilder().add(decorator: ColoredSpyLevelNameDecorator().toAnyDecorator())) + let formattedLog = sut.format(timestamp: 0, level: .info, channel: .defaultChannel, message: "message") + XCTAssertEqual("1970-01-01 00:00:00 +0000 \u{001B}[0;32minfo\u{001B}[0;0m::default_channel::message", formattedLog) + } + + func testFormat_WhenCreatedWithBuilderWithEmijiDecorator_ShouldReturnStringInCorrectFormat() { + let sut = DecoratedSpyFormatter(levelNameBuilder: DecoratedLevelNameBuilder().add(decorator: EmojiPrefixedSpyLevelNameDecorator().toAnyDecorator())) + let formattedLog = sut.format(timestamp: 0, level: .info, channel: .defaultChannel, message: "message") + XCTAssertEqual("1970-01-01 00:00:00 +0000 ℹ️ info::default_channel::message", formattedLog) + } + + func testFormat_WhenCreatedWithBuilderWithTwoDecorators_ShouldReturnStringInCorrectFormat() { + let sut = DecoratedSpyFormatter(levelNameBuilder: DecoratedLevelNameBuilder() + .add(decorator: ColoredSpyLevelNameDecorator().toAnyDecorator()) + .add(decorator: EmojiPrefixedSpyLevelNameDecorator().toAnyDecorator()) + ) + let formattedLog = sut.format(timestamp: 0, level: .info, channel: .defaultChannel, message: "message") + XCTAssertEqual("1970-01-01 00:00:00 +0000 ℹ️ \u{001B}[0;32minfo\u{001B}[0;0m::default_channel::message", formattedLog) + } +} diff --git a/SpyTests/EmojiPrefixedSpyLevelNameDecoratorTests.swift b/SpyTests/EmojiPrefixedSpyLevelNameDecoratorTests.swift new file mode 100644 index 0000000..c77aec0 --- /dev/null +++ b/SpyTests/EmojiPrefixedSpyLevelNameDecoratorTests.swift @@ -0,0 +1,25 @@ +// +// EmojiPrefixedSpyLevelNameDecoratorTests.swift +// Spy +// +// Created by Tomasz Lewandowski on 24/01/2020. +// Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. +// + +import XCTest +import Spy + +public final class EmojiPrefixedSpyLevelNameDecoratorTests: XCTestCase { + func testDecorate_WhenCalledWithLevel_ShouldReturnCorrectString() { + // given + let sut = EmojiPrefixedSpyLevelNameDecorator() + // then + XCTAssertEqual("💬 name", sut.decorate(level: .finest, value: "name")) + XCTAssertEqual("🔊 name", sut.decorate(level: .finer, value: "name")) + XCTAssertEqual("📣 name", sut.decorate(level: .fine, value: "name")) + XCTAssertEqual("✅ name", sut.decorate(level: .config, value: "name")) + XCTAssertEqual("ℹ️ name", sut.decorate(level: .info, value: "name")) + XCTAssertEqual("⚠️ name", sut.decorate(level: .warning, value: "name")) + XCTAssertEqual("⛔ name", sut.decorate(level: .severe, value: "name")) + } +} diff --git a/SpyTests/SpyColorTests.swift b/SpyTests/SpyColorTests.swift index 32ba99f..4969142 100644 --- a/SpyTests/SpyColorTests.swift +++ b/SpyTests/SpyColorTests.swift @@ -11,6 +11,7 @@ import Spy public final class SpyColorTests: XCTestCase { func testModificator_WhenCalledForColor_ShouldReturnCorrectString() { + // then XCTAssertEqual("\u{001B}[0;0m", SpyColor.`default`.modificator) XCTAssertEqual("\u{001B}[0;30m", SpyColor.black.modificator) XCTAssertEqual("\u{001B}[0;31m", SpyColor.red.modificator) diff --git a/SpyTests/TestColoredSpyLevelNameDecorator.swift b/SpyTests/TestColoredSpyLevelNameDecorator.swift new file mode 100644 index 0000000..742ebdb --- /dev/null +++ b/SpyTests/TestColoredSpyLevelNameDecorator.swift @@ -0,0 +1,25 @@ +// +// TestColoredSpyLevelNameDecorator.swift +// Spy +// +// Created by Tomasz Lewandowski on 24/01/2020. +// Copyright © 2020 AppUnite Sp. z o.o. All rights reserved. +// + +import XCTest +import Spy + +public final class ColoredSpyLevelNameDecoratorTests: XCTestCase { + func testDecorate_WhenCalledWithLevel_ShouldReturnCorrectString() { + // given + let sut = ColoredSpyLevelNameDecorator() + // then + XCTAssertEqual("name".colored(with: .white), sut.decorate(level: .finest, value: "name")) + XCTAssertEqual("name".colored(with: .cyan), sut.decorate(level: .finer, value: "name")) + XCTAssertEqual("name".colored(with: .blue), sut.decorate(level: .fine, value: "name")) + XCTAssertEqual("name".colored(with: .magenta), sut.decorate(level: .config, value: "name")) + XCTAssertEqual("name".colored(with: .green), sut.decorate(level: .info, value: "name")) + XCTAssertEqual("name".colored(with: .yellow), sut.decorate(level: .warning, value: "name")) + XCTAssertEqual("name".colored(with: .red), sut.decorate(level: .severe, value: "name")) + } +} From 6cddc1d18c8a78b38aa137634e08a3a19b4e18c1 Mon Sep 17 00:00:00 2001 From: Tomasz Lewandowski Date: Fri, 24 Jan 2020 22:01:58 +0100 Subject: [PATCH 2/3] update readme & changelog with decorators --- CHANGELOG.md | 4 +++- README.md | 19 +++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c23acb7..8f240ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [Unreleased] -- Add colored formatter +- Add decorated formatter +- Add decorator for color changing +- Add decorator for emoji prefixes ## [0.1.0] - Add .travis.yml for CI support diff --git a/README.md b/README.md index b59e1e3..aeac046 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,17 @@ Spy is anything that implements *PSpy* protocol. There are a few spies already d - *CompositeSpy* - spy that groups multiple spies into one - *AnySpy* - type-erased spy - every spy can be converted to AnySpy +#### ConsoleSpy +ConsoleSpy comes with two available output formatters **RawSpyFormatter** and **DecoratedSpyFormatter** with the later being extendable with decorators. You can always define your own output formatter. +Example output for *RawSpyFormatter* will look like: +``` +info::foo::Hello Spy +``` +And example output for *DecoratedSpyFormatter* will look like: +``` +ℹ️ info::foo::Hello Spy +``` + Logging is performed with **log** method as follows: ```swift spy.log(level: .severe, channel: .foo, message: "Something bad happened") @@ -127,8 +138,12 @@ It utilizes *CompositeSpy* to allow you to log onto multiple destinations (*Cons public struct Environment { public static var spy: AnySpy = { return CompositeSpy() - .add(spy: ConsoleSpy( - spyFormatter: RawSpyFormatter(), + .add(spy: ConsoleSpy( + spyFormatter: DecoratedSpyFormatter( + levelNameBuilder: DecoratedLevelNameBuilder() + .add(decorator: PlainLevelNameDecorator().toAnyDecorator()) + .add(decorator: EmojiPrefixedSpyLevelNameDecorator().toAnyDecorator()) + ), timestampProvider: CurrentTimestampProvider(), configuration: SpyConfigurationBuilder() .add(levels: SpyLevel.levelsFrom(loggingLevel)) From 4c3d5aa4393a0c1df3b96d829cbdc322679bd642 Mon Sep 17 00:00:00 2001 From: Tomasz Lewandowski Date: Fri, 24 Jan 2020 23:20:32 +0100 Subject: [PATCH 3/3] DecoratetSpyFormatter - mr changes --- CHANGELOG.md | 4 ++-- Example/Environment.swift | 1 - README.md | 16 +++++++++------- .../ColoredSpyLevelNameDecorator.swift | 10 ++++++---- resources/log.png | Bin 0 -> 167497 bytes 5 files changed, 17 insertions(+), 14 deletions(-) create mode 100644 resources/log.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f240ea..d410cfe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,8 +6,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] - Add decorated formatter -- Add decorator for color changing -- Add decorator for emoji prefixes +- Add decorator for level color changing +- Add decorator for level emoji prefixes ## [0.1.0] - Add .travis.yml for CI support diff --git a/Example/Environment.swift b/Example/Environment.swift index 0bae98f..1485b32 100644 --- a/Example/Environment.swift +++ b/Example/Environment.swift @@ -14,7 +14,6 @@ public struct Environment { .add(spy: ConsoleSpy( spyFormatter: DecoratedSpyFormatter( levelNameBuilder: DecoratedLevelNameBuilder() - .add(decorator: PlainLevelNameDecorator().toAnyDecorator()) .add(decorator: EmojiPrefixedSpyLevelNameDecorator().toAnyDecorator()) ), timestampProvider: CurrentTimestampProvider(), diff --git a/README.md b/README.md index aeac046..5351f3e 100644 --- a/README.md +++ b/README.md @@ -115,21 +115,24 @@ Spy is anything that implements *PSpy* protocol. There are a few spies already d - *CompositeSpy* - spy that groups multiple spies into one - *AnySpy* - type-erased spy - every spy can be converted to AnySpy +Logging is performed with **log** method as follows: +```swift +spy.log(level: .severe, channel: .foo, message: "Something bad happened") +``` + #### ConsoleSpy ConsoleSpy comes with two available output formatters **RawSpyFormatter** and **DecoratedSpyFormatter** with the later being extendable with decorators. You can always define your own output formatter. Example output for *RawSpyFormatter* will look like: ``` info::foo::Hello Spy ``` -And example output for *DecoratedSpyFormatter* will look like: +And example output for *DecoratedSpyFormatter* may look like: ``` ℹ️ info::foo::Hello Spy ``` - -Logging is performed with **log** method as follows: -```swift -spy.log(level: .severe, channel: .foo, message: "Something bad happened") -``` +

+ Log example +

## Example This is an example definition of the spies. @@ -141,7 +144,6 @@ public struct Environment { .add(spy: ConsoleSpy( spyFormatter: DecoratedSpyFormatter( levelNameBuilder: DecoratedLevelNameBuilder() - .add(decorator: PlainLevelNameDecorator().toAnyDecorator()) .add(decorator: EmojiPrefixedSpyLevelNameDecorator().toAnyDecorator()) ), timestampProvider: CurrentTimestampProvider(), diff --git a/Spy/Common/Formatters/Decorated/ColoredSpyLevelNameDecorator.swift b/Spy/Common/Formatters/Decorated/ColoredSpyLevelNameDecorator.swift index 15ef9bc..cc84699 100644 --- a/Spy/Common/Formatters/Decorated/ColoredSpyLevelNameDecorator.swift +++ b/Spy/Common/Formatters/Decorated/ColoredSpyLevelNameDecorator.swift @@ -14,11 +14,13 @@ public final class ColoredSpyLevelNameDecorator: PSpyLevelDecorator { } public func decorate(level: SpyLevel, value: String) -> String { - return value.colored(with: color(forLevel: level)) + return value.colored(with: level.color) } - - private func color(forLevel level: Level) -> SpyColor { - switch level { +} + +private extension SpyLevel { + var color: SpyColor { + switch self { case .finest: return .white case .finer: return .cyan case .fine: return .blue diff --git a/resources/log.png b/resources/log.png new file mode 100644 index 0000000000000000000000000000000000000000..c508ae879963f5326cce36be7541524716744d13 GIT binary patch literal 167497 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�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 Qi~s-t07*qoM6N<$f;8MJ?f?J) literal 0 HcmV?d00001