From 7a820a7e8d7d55a2fdceb0d2b54dd50d043b2b05 Mon Sep 17 00:00:00 2001 From: Guille Gonzalez Date: Tue, 25 Jul 2017 19:25:40 +0200 Subject: [PATCH 1/4] Create cross-platform frameworks project --- .gitignore | 48 +- Markup/Info.plist => Configs/Markup.plist | 6 +- .../Info.plist => Configs/MarkupTests.plist | 4 +- LICENSE | 22 + Markup.podspec | 19 + Markup.xcodeproj/project.pbxproj | 893 ++++++++++++++---- .../contents.xcworkspacedata | 2 +- .../xcschemes/Markup-iOS.xcscheme | 100 ++ .../xcschemes/Markup-macOS.xcscheme | 100 ++ .../xcschemes/Markup-tvOS.xcscheme | 100 ++ .../xcschemes/Markup-watchOS.xcscheme | 81 ++ .../xcschemes/xcschememanagement.plist | 38 +- Markup/Markup.h | 19 - Markup/MarkupRenderer.swift | 74 -- Package.swift | 5 + {Markup => Sources}/MarkupNode.swift | 8 - {Markup => Sources}/MarkupParser.swift | 14 +- Sources/MarkupRenderer.swift | 92 ++ {Markup => Sources}/MarkupToken.swift | 8 - {Markup => Sources}/MarkupTokenizer.swift | 28 +- .../MarkupTests}/MarkupParserTests.swift | 8 - 21 files changed, 1328 insertions(+), 341 deletions(-) rename Markup/Info.plist => Configs/Markup.plist (79%) rename MarkupTests/Info.plist => Configs/MarkupTests.plist (89%) create mode 100644 LICENSE create mode 100644 Markup.podspec create mode 100644 Markup.xcodeproj/xcshareddata/xcschemes/Markup-iOS.xcscheme create mode 100644 Markup.xcodeproj/xcshareddata/xcschemes/Markup-macOS.xcscheme create mode 100644 Markup.xcodeproj/xcshareddata/xcschemes/Markup-tvOS.xcscheme create mode 100644 Markup.xcodeproj/xcshareddata/xcschemes/Markup-watchOS.xcscheme delete mode 100644 Markup/Markup.h delete mode 100644 Markup/MarkupRenderer.swift create mode 100644 Package.swift rename {Markup => Sources}/MarkupNode.swift (72%) rename {Markup => Sources}/MarkupParser.swift (83%) create mode 100644 Sources/MarkupRenderer.swift rename {Markup => Sources}/MarkupToken.swift (87%) rename {Markup => Sources}/MarkupTokenizer.swift (84%) rename {MarkupTests => Tests/MarkupTests}/MarkupParserTests.swift (95%) diff --git a/.gitignore b/.gitignore index 93eec32..d534044 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,12 @@ -.DS_Store - # Xcode # +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated build/ +DerivedData/ + +## Various settings *.pbxuser !default.pbxuser *.mode1v3 @@ -11,24 +15,38 @@ build/ !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata -*.xccheckout +xcuserdata/ + +## Other *.moved-aside -DerivedData +*.xccheckout +*.xcscmblueprint + +## Obj-C/Swift specific *.hmap *.ipa -*.xcuserstate +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +.build/ # CocoaPods # # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: -# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control # # Pods/ -Pods/CocoaPodsKeys - # Carthage # # Add this line if you want to avoid checking in source code from Carthage dependencies. @@ -36,6 +54,14 @@ Pods/CocoaPodsKeys Carthage/Build -# AppCode +# fastlane # -.idea +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output diff --git a/Markup/Info.plist b/Configs/Markup.plist similarity index 79% rename from Markup/Info.plist rename to Configs/Markup.plist index 1007fd9..aea8ea0 100644 --- a/Markup/Info.plist +++ b/Configs/Markup.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) + en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -16,8 +16,12 @@ FMWK CFBundleShortVersionString 1.0 + CFBundleSignature + ???? CFBundleVersion $(CURRENT_PROJECT_VERSION) + NSHumanReadableCopyright + Copyright © 2017 Guille Gonzalez. All rights reserved. NSPrincipalClass diff --git a/MarkupTests/Info.plist b/Configs/MarkupTests.plist similarity index 89% rename from MarkupTests/Info.plist rename to Configs/MarkupTests.plist index 6c40a6c..ba72822 100644 --- a/MarkupTests/Info.plist +++ b/Configs/MarkupTests.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) + en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -16,6 +16,8 @@ BNDL CFBundleShortVersionString 1.0 + CFBundleSignature + ???? CFBundleVersion 1 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..55c59d5 --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2017 Guille Gonzalez + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/Markup.podspec b/Markup.podspec new file mode 100644 index 0000000..23bafd8 --- /dev/null +++ b/Markup.podspec @@ -0,0 +1,19 @@ +Pod::Spec.new do |s| + s.name = "Markup" + s.version = "0.1" + s.summary = "" + s.description = <<-DESC + Your description here. + DESC + s.homepage = "https://github.com/gonzalezreal/Markup" + s.license = { :type => "MIT", :file => "LICENSE" } + s.author = { "Guille Gonzalez" => "gonzalezreal@icloud.com" } + s.social_media_url = "" + s.ios.deployment_target = "8.0" + s.osx.deployment_target = "10.9" + s.watchos.deployment_target = "2.0" + s.tvos.deployment_target = "9.0" + s.source = { :git => "https://github.com/gonzalezreal/Markup.git", :tag => s.version.to_s } + s.source_files = "Sources/**/*" + s.frameworks = "Foundation" +end diff --git a/Markup.xcodeproj/project.pbxproj b/Markup.xcodeproj/project.pbxproj index 90dea23..3f35281 100644 --- a/Markup.xcodeproj/project.pbxproj +++ b/Markup.xcodeproj/project.pbxproj @@ -3,214 +3,473 @@ archiveVersion = 1; classes = { }; - objectVersion = 48; + objectVersion = 47; objects = { /* Begin PBXBuildFile section */ - 9902DBC71F1643C1004454BE /* MarkupNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9902DBC61F1643C1004454BE /* MarkupNode.swift */; }; - 9902DBCB1F1670E4004454BE /* MarkupParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9902DBCA1F1670E4004454BE /* MarkupParser.swift */; }; - 9902DBCD1F167738004454BE /* MarkupParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9902DBCC1F167738004454BE /* MarkupParserTests.swift */; }; - 9902DBD01F16837A004454BE /* MarkupRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9902DBCF1F16837A004454BE /* MarkupRenderer.swift */; }; - 994A8DEC1F14C2380023C7FF /* Markup.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 994A8DE21F14C2380023C7FF /* Markup.framework */; }; - 994A8DF31F14C2380023C7FF /* Markup.h in Headers */ = {isa = PBXBuildFile; fileRef = 994A8DE51F14C2380023C7FF /* Markup.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 994A8DFD1F14C2680023C7FF /* MarkupToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 994A8DFC1F14C2680023C7FF /* MarkupToken.swift */; }; - 994A8DFF1F14C4680023C7FF /* MarkupTokenizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 994A8DFE1F14C4680023C7FF /* MarkupTokenizer.swift */; }; + 52D6D9871BEFF229002C0205 /* Markup.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D6D97C1BEFF229002C0205 /* Markup.framework */; }; + 99211A5E1F279AAE0039BB88 /* MarkupNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A591F279AAE0039BB88 /* MarkupNode.swift */; }; + 99211A5F1F279AAE0039BB88 /* MarkupNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A591F279AAE0039BB88 /* MarkupNode.swift */; }; + 99211A601F279AAE0039BB88 /* MarkupNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A591F279AAE0039BB88 /* MarkupNode.swift */; }; + 99211A611F279AAE0039BB88 /* MarkupNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A591F279AAE0039BB88 /* MarkupNode.swift */; }; + 99211A621F279AAE0039BB88 /* MarkupParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5A1F279AAE0039BB88 /* MarkupParser.swift */; }; + 99211A631F279AAE0039BB88 /* MarkupParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5A1F279AAE0039BB88 /* MarkupParser.swift */; }; + 99211A641F279AAE0039BB88 /* MarkupParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5A1F279AAE0039BB88 /* MarkupParser.swift */; }; + 99211A651F279AAE0039BB88 /* MarkupParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5A1F279AAE0039BB88 /* MarkupParser.swift */; }; + 99211A661F279AAE0039BB88 /* MarkupRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5B1F279AAE0039BB88 /* MarkupRenderer.swift */; }; + 99211A671F279AAE0039BB88 /* MarkupRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5B1F279AAE0039BB88 /* MarkupRenderer.swift */; }; + 99211A681F279AAE0039BB88 /* MarkupRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5B1F279AAE0039BB88 /* MarkupRenderer.swift */; }; + 99211A691F279AAE0039BB88 /* MarkupRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5B1F279AAE0039BB88 /* MarkupRenderer.swift */; }; + 99211A6A1F279AAE0039BB88 /* MarkupToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5C1F279AAE0039BB88 /* MarkupToken.swift */; }; + 99211A6B1F279AAE0039BB88 /* MarkupToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5C1F279AAE0039BB88 /* MarkupToken.swift */; }; + 99211A6C1F279AAE0039BB88 /* MarkupToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5C1F279AAE0039BB88 /* MarkupToken.swift */; }; + 99211A6D1F279AAE0039BB88 /* MarkupToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5C1F279AAE0039BB88 /* MarkupToken.swift */; }; + 99211A6E1F279AAE0039BB88 /* MarkupTokenizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5D1F279AAE0039BB88 /* MarkupTokenizer.swift */; }; + 99211A6F1F279AAE0039BB88 /* MarkupTokenizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5D1F279AAE0039BB88 /* MarkupTokenizer.swift */; }; + 99211A701F279AAE0039BB88 /* MarkupTokenizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5D1F279AAE0039BB88 /* MarkupTokenizer.swift */; }; + 99211A711F279AAE0039BB88 /* MarkupTokenizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A5D1F279AAE0039BB88 /* MarkupTokenizer.swift */; }; + 99211A771F279C0A0039BB88 /* MarkupParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A721F279BCF0039BB88 /* MarkupParserTests.swift */; }; + 99211A781F279C0D0039BB88 /* MarkupParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A721F279BCF0039BB88 /* MarkupParserTests.swift */; }; + 99211A791F279C0E0039BB88 /* MarkupParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A721F279BCF0039BB88 /* MarkupParserTests.swift */; }; + DD7502881C68FEDE006590AF /* Markup.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D6DA0F1BF000BD002C0205 /* Markup.framework */; }; + DD7502921C690C7A006590AF /* Markup.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D6D9F01BEFFFBE002C0205 /* Markup.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 994A8DED1F14C2380023C7FF /* PBXContainerItemProxy */ = { + 52D6D9881BEFF229002C0205 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 994A8DD91F14C2380023C7FF /* Project object */; + containerPortal = 52D6D9731BEFF229002C0205 /* Project object */; proxyType = 1; - remoteGlobalIDString = 994A8DE11F14C2380023C7FF; + remoteGlobalIDString = 52D6D97B1BEFF229002C0205; remoteInfo = Markup; }; + DD7502801C68FCFC006590AF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 52D6D9731BEFF229002C0205 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 52D6DA0E1BF000BD002C0205; + remoteInfo = "Markup-macOS"; + }; + DD7502931C690C7A006590AF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 52D6D9731BEFF229002C0205 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 52D6D9EF1BEFFFBE002C0205; + remoteInfo = "Markup-tvOS"; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 9902DBC51F1623A6004454BE /* Tokenizer.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = Tokenizer.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; - 9902DBC61F1643C1004454BE /* MarkupNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkupNode.swift; sourceTree = ""; }; - 9902DBCA1F1670E4004454BE /* MarkupParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkupParser.swift; sourceTree = ""; }; - 9902DBCC1F167738004454BE /* MarkupParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkupParserTests.swift; sourceTree = ""; }; - 9902DBCE1F167B6C004454BE /* Parser.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = Parser.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; - 9902DBCF1F16837A004454BE /* MarkupRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkupRenderer.swift; sourceTree = ""; }; - 9902DBD11F1687A7004454BE /* Renderer.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = Renderer.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; - 994A8DE21F14C2380023C7FF /* Markup.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Markup.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 994A8DE51F14C2380023C7FF /* Markup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Markup.h; sourceTree = ""; }; - 994A8DE61F14C2380023C7FF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 994A8DEB1F14C2380023C7FF /* MarkupTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MarkupTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 994A8DF21F14C2380023C7FF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 994A8DFC1F14C2680023C7FF /* MarkupToken.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkupToken.swift; sourceTree = ""; }; - 994A8DFE1F14C4680023C7FF /* MarkupTokenizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkupTokenizer.swift; sourceTree = ""; }; + 52D6D97C1BEFF229002C0205 /* Markup.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Markup.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 52D6D9861BEFF229002C0205 /* Markup-iOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Markup-iOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 52D6D9E21BEFFF6E002C0205 /* Markup.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Markup.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 52D6D9F01BEFFFBE002C0205 /* Markup.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Markup.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 52D6DA0F1BF000BD002C0205 /* Markup.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Markup.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 99211A591F279AAE0039BB88 /* MarkupNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkupNode.swift; sourceTree = ""; }; + 99211A5A1F279AAE0039BB88 /* MarkupParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkupParser.swift; sourceTree = ""; }; + 99211A5B1F279AAE0039BB88 /* MarkupRenderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkupRenderer.swift; sourceTree = ""; }; + 99211A5C1F279AAE0039BB88 /* MarkupToken.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkupToken.swift; sourceTree = ""; }; + 99211A5D1F279AAE0039BB88 /* MarkupTokenizer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkupTokenizer.swift; sourceTree = ""; }; + 99211A721F279BCF0039BB88 /* MarkupParserTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkupParserTests.swift; sourceTree = ""; }; + AD2FAA261CD0B6D800659CF4 /* Markup.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Markup.plist; sourceTree = ""; }; + AD2FAA281CD0B6E100659CF4 /* MarkupTests.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = MarkupTests.plist; sourceTree = ""; }; + DD75027A1C68FCFC006590AF /* Markup-macOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Markup-macOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + DD75028D1C690C7A006590AF /* Markup-tvOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Markup-tvOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 994A8DDE1F14C2380023C7FF /* Frameworks */ = { + 52D6D9781BEFF229002C0205 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 994A8DE81F14C2380023C7FF /* Frameworks */ = { + 52D6D9831BEFF229002C0205 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 994A8DEC1F14C2380023C7FF /* Markup.framework in Frameworks */, + 52D6D9871BEFF229002C0205 /* Markup.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52D6D9DE1BEFFF6E002C0205 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52D6D9EC1BEFFFBE002C0205 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52D6DA0B1BF000BD002C0205 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD7502771C68FCFC006590AF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DD7502881C68FEDE006590AF /* Markup.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD75028A1C690C7A006590AF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DD7502921C690C7A006590AF /* Markup.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 994A8DD81F14C2380023C7FF = { + 52D6D9721BEFF229002C0205 = { isa = PBXGroup; children = ( - 99FE0FFA1F1622A9004A1C6B /* Playgrounds */, - 994A8DE41F14C2380023C7FF /* Markup */, - 994A8DEF1F14C2380023C7FF /* MarkupTests */, - 994A8DE31F14C2380023C7FF /* Products */, + 8933C7811EB5B7E0000D00A4 /* Sources */, + 8933C7831EB5B7EB000D00A4 /* Tests */, + 52D6D99C1BEFF38C002C0205 /* Configs */, + 52D6D97D1BEFF229002C0205 /* Products */, ); sourceTree = ""; }; - 994A8DE31F14C2380023C7FF /* Products */ = { + 52D6D97D1BEFF229002C0205 /* Products */ = { isa = PBXGroup; children = ( - 994A8DE21F14C2380023C7FF /* Markup.framework */, - 994A8DEB1F14C2380023C7FF /* MarkupTests.xctest */, + 52D6D97C1BEFF229002C0205 /* Markup.framework */, + 52D6D9861BEFF229002C0205 /* Markup-iOS Tests.xctest */, + 52D6D9E21BEFFF6E002C0205 /* Markup.framework */, + 52D6D9F01BEFFFBE002C0205 /* Markup.framework */, + 52D6DA0F1BF000BD002C0205 /* Markup.framework */, + DD75027A1C68FCFC006590AF /* Markup-macOS Tests.xctest */, + DD75028D1C690C7A006590AF /* Markup-tvOS Tests.xctest */, ); name = Products; sourceTree = ""; }; - 994A8DE41F14C2380023C7FF /* Markup */ = { + 52D6D99C1BEFF38C002C0205 /* Configs */ = { isa = PBXGroup; children = ( - 994A8DE51F14C2380023C7FF /* Markup.h */, - 994A8DE61F14C2380023C7FF /* Info.plist */, - 994A8DFC1F14C2680023C7FF /* MarkupToken.swift */, - 994A8DFE1F14C4680023C7FF /* MarkupTokenizer.swift */, - 9902DBC61F1643C1004454BE /* MarkupNode.swift */, - 9902DBCA1F1670E4004454BE /* MarkupParser.swift */, - 9902DBCF1F16837A004454BE /* MarkupRenderer.swift */, - ); - path = Markup; + DD7502721C68FC1B006590AF /* Frameworks */, + DD7502731C68FC20006590AF /* Tests */, + ); + path = Configs; sourceTree = ""; }; - 994A8DEF1F14C2380023C7FF /* MarkupTests */ = { + 8933C7811EB5B7E0000D00A4 /* Sources */ = { isa = PBXGroup; children = ( - 9902DBCC1F167738004454BE /* MarkupParserTests.swift */, - 994A8DF21F14C2380023C7FF /* Info.plist */, + 99211A591F279AAE0039BB88 /* MarkupNode.swift */, + 99211A5A1F279AAE0039BB88 /* MarkupParser.swift */, + 99211A5B1F279AAE0039BB88 /* MarkupRenderer.swift */, + 99211A5C1F279AAE0039BB88 /* MarkupToken.swift */, + 99211A5D1F279AAE0039BB88 /* MarkupTokenizer.swift */, ); - path = MarkupTests; + path = Sources; sourceTree = ""; }; - 99FE0FFA1F1622A9004A1C6B /* Playgrounds */ = { + 8933C7831EB5B7EB000D00A4 /* Tests */ = { isa = PBXGroup; children = ( - 9902DBD11F1687A7004454BE /* Renderer.playground */, - 9902DBCE1F167B6C004454BE /* Parser.playground */, - 9902DBC51F1623A6004454BE /* Tokenizer.playground */, + 99211A721F279BCF0039BB88 /* MarkupParserTests.swift */, ); - path = Playgrounds; + name = Tests; + path = Tests/MarkupTests; + sourceTree = ""; + }; + DD7502721C68FC1B006590AF /* Frameworks */ = { + isa = PBXGroup; + children = ( + AD2FAA261CD0B6D800659CF4 /* Markup.plist */, + ); + name = Frameworks; + sourceTree = ""; + }; + DD7502731C68FC20006590AF /* Tests */ = { + isa = PBXGroup; + children = ( + AD2FAA281CD0B6E100659CF4 /* MarkupTests.plist */, + ); + name = Tests; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 994A8DDF1F14C2380023C7FF /* Headers */ = { + 52D6D9791BEFF229002C0205 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52D6D9DF1BEFFF6E002C0205 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52D6D9ED1BEFFFBE002C0205 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52D6DA0C1BF000BD002C0205 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 994A8DF31F14C2380023C7FF /* Markup.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 994A8DE11F14C2380023C7FF /* Markup */ = { + 52D6D97B1BEFF229002C0205 /* Markup-iOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 994A8DF61F14C2380023C7FF /* Build configuration list for PBXNativeTarget "Markup" */; + buildConfigurationList = 52D6D9901BEFF229002C0205 /* Build configuration list for PBXNativeTarget "Markup-iOS" */; buildPhases = ( - 994A8DDD1F14C2380023C7FF /* Sources */, - 994A8DDE1F14C2380023C7FF /* Frameworks */, - 994A8DDF1F14C2380023C7FF /* Headers */, - 994A8DE01F14C2380023C7FF /* Resources */, + 52D6D9771BEFF229002C0205 /* Sources */, + 52D6D9781BEFF229002C0205 /* Frameworks */, + 52D6D9791BEFF229002C0205 /* Headers */, + 52D6D97A1BEFF229002C0205 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = Markup; + name = "Markup-iOS"; productName = Markup; - productReference = 994A8DE21F14C2380023C7FF /* Markup.framework */; + productReference = 52D6D97C1BEFF229002C0205 /* Markup.framework */; productType = "com.apple.product-type.framework"; }; - 994A8DEA1F14C2380023C7FF /* MarkupTests */ = { + 52D6D9851BEFF229002C0205 /* Markup-iOS Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = 994A8DF91F14C2380023C7FF /* Build configuration list for PBXNativeTarget "MarkupTests" */; + buildConfigurationList = 52D6D9931BEFF229002C0205 /* Build configuration list for PBXNativeTarget "Markup-iOS Tests" */; buildPhases = ( - 994A8DE71F14C2380023C7FF /* Sources */, - 994A8DE81F14C2380023C7FF /* Frameworks */, - 994A8DE91F14C2380023C7FF /* Resources */, + 52D6D9821BEFF229002C0205 /* Sources */, + 52D6D9831BEFF229002C0205 /* Frameworks */, + 52D6D9841BEFF229002C0205 /* Resources */, ); buildRules = ( ); dependencies = ( - 994A8DEE1F14C2380023C7FF /* PBXTargetDependency */, + 52D6D9891BEFF229002C0205 /* PBXTargetDependency */, ); - name = MarkupTests; + name = "Markup-iOS Tests"; productName = MarkupTests; - productReference = 994A8DEB1F14C2380023C7FF /* MarkupTests.xctest */; + productReference = 52D6D9861BEFF229002C0205 /* Markup-iOS Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 52D6D9E11BEFFF6E002C0205 /* Markup-watchOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 52D6D9E71BEFFF6E002C0205 /* Build configuration list for PBXNativeTarget "Markup-watchOS" */; + buildPhases = ( + 52D6D9DD1BEFFF6E002C0205 /* Sources */, + 52D6D9DE1BEFFF6E002C0205 /* Frameworks */, + 52D6D9DF1BEFFF6E002C0205 /* Headers */, + 52D6D9E01BEFFF6E002C0205 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Markup-watchOS"; + productName = "Markup-watchOS"; + productReference = 52D6D9E21BEFFF6E002C0205 /* Markup.framework */; + productType = "com.apple.product-type.framework"; + }; + 52D6D9EF1BEFFFBE002C0205 /* Markup-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 52D6DA011BEFFFBE002C0205 /* Build configuration list for PBXNativeTarget "Markup-tvOS" */; + buildPhases = ( + 52D6D9EB1BEFFFBE002C0205 /* Sources */, + 52D6D9EC1BEFFFBE002C0205 /* Frameworks */, + 52D6D9ED1BEFFFBE002C0205 /* Headers */, + 52D6D9EE1BEFFFBE002C0205 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Markup-tvOS"; + productName = "Markup-tvOS"; + productReference = 52D6D9F01BEFFFBE002C0205 /* Markup.framework */; + productType = "com.apple.product-type.framework"; + }; + 52D6DA0E1BF000BD002C0205 /* Markup-macOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 52D6DA201BF000BD002C0205 /* Build configuration list for PBXNativeTarget "Markup-macOS" */; + buildPhases = ( + 52D6DA0A1BF000BD002C0205 /* Sources */, + 52D6DA0B1BF000BD002C0205 /* Frameworks */, + 52D6DA0C1BF000BD002C0205 /* Headers */, + 52D6DA0D1BF000BD002C0205 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Markup-macOS"; + productName = "Markup-macOS"; + productReference = 52D6DA0F1BF000BD002C0205 /* Markup.framework */; + productType = "com.apple.product-type.framework"; + }; + DD7502791C68FCFC006590AF /* Markup-macOS Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = DD7502821C68FCFC006590AF /* Build configuration list for PBXNativeTarget "Markup-macOS Tests" */; + buildPhases = ( + DD7502761C68FCFC006590AF /* Sources */, + DD7502771C68FCFC006590AF /* Frameworks */, + DD7502781C68FCFC006590AF /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DD7502811C68FCFC006590AF /* PBXTargetDependency */, + ); + name = "Markup-macOS Tests"; + productName = "Markup-OS Tests"; + productReference = DD75027A1C68FCFC006590AF /* Markup-macOS Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + DD75028C1C690C7A006590AF /* Markup-tvOS Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = DD7502951C690C7A006590AF /* Build configuration list for PBXNativeTarget "Markup-tvOS Tests" */; + buildPhases = ( + DD7502891C690C7A006590AF /* Sources */, + DD75028A1C690C7A006590AF /* Frameworks */, + DD75028B1C690C7A006590AF /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DD7502941C690C7A006590AF /* PBXTargetDependency */, + ); + name = "Markup-tvOS Tests"; + productName = "Markup-tvOS Tests"; + productReference = DD75028D1C690C7A006590AF /* Markup-tvOS Tests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - 994A8DD91F14C2380023C7FF /* Project object */ = { + 52D6D9731BEFF229002C0205 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0900; - LastUpgradeCheck = 0900; - ORGANIZATIONNAME = "Tuenti Technologies S.L."; + LastSwiftUpdateCheck = 0720; + LastUpgradeCheck = 0810; + ORGANIZATIONNAME = Markup; TargetAttributes = { - 994A8DE11F14C2380023C7FF = { - CreatedOnToolsVersion = 9.0; - LastSwiftMigration = 0900; + 52D6D97B1BEFF229002C0205 = { + CreatedOnToolsVersion = 7.1; + LastSwiftMigration = 0800; + }; + 52D6D9851BEFF229002C0205 = { + CreatedOnToolsVersion = 7.1; + LastSwiftMigration = 0800; }; - 994A8DEA1F14C2380023C7FF = { - CreatedOnToolsVersion = 9.0; + 52D6D9E11BEFFF6E002C0205 = { + CreatedOnToolsVersion = 7.1; + LastSwiftMigration = 0800; + }; + 52D6D9EF1BEFFFBE002C0205 = { + CreatedOnToolsVersion = 7.1; + LastSwiftMigration = 0800; + }; + 52D6DA0E1BF000BD002C0205 = { + CreatedOnToolsVersion = 7.1; + LastSwiftMigration = 0800; + }; + DD7502791C68FCFC006590AF = { + CreatedOnToolsVersion = 7.2.1; + LastSwiftMigration = 0800; + }; + DD75028C1C690C7A006590AF = { + CreatedOnToolsVersion = 7.2.1; + LastSwiftMigration = 0800; }; }; }; - buildConfigurationList = 994A8DDC1F14C2380023C7FF /* Build configuration list for PBXProject "Markup" */; - compatibilityVersion = "Xcode 8.0"; - developmentRegion = en; + buildConfigurationList = 52D6D9761BEFF229002C0205 /* Build configuration list for PBXProject "Markup" */; + compatibilityVersion = "Xcode 6.3"; + developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = 994A8DD81F14C2380023C7FF; - productRefGroup = 994A8DE31F14C2380023C7FF /* Products */; + mainGroup = 52D6D9721BEFF229002C0205; + productRefGroup = 52D6D97D1BEFF229002C0205 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 994A8DE11F14C2380023C7FF /* Markup */, - 994A8DEA1F14C2380023C7FF /* MarkupTests */, + 52D6D97B1BEFF229002C0205 /* Markup-iOS */, + 52D6DA0E1BF000BD002C0205 /* Markup-macOS */, + 52D6D9E11BEFFF6E002C0205 /* Markup-watchOS */, + 52D6D9EF1BEFFFBE002C0205 /* Markup-tvOS */, + 52D6D9851BEFF229002C0205 /* Markup-iOS Tests */, + DD7502791C68FCFC006590AF /* Markup-macOS Tests */, + DD75028C1C690C7A006590AF /* Markup-tvOS Tests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 994A8DE01F14C2380023C7FF /* Resources */ = { + 52D6D97A1BEFF229002C0205 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52D6D9841BEFF229002C0205 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 994A8DE91F14C2380023C7FF /* Resources */ = { + 52D6D9E01BEFFF6E002C0205 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52D6D9EE1BEFFFBE002C0205 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52D6DA0D1BF000BD002C0205 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD7502781C68FCFC006590AF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD75028B1C690C7A006590AF /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -220,73 +479,125 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 994A8DDD1F14C2380023C7FF /* Sources */ = { + 52D6D9771BEFF229002C0205 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 99211A6A1F279AAE0039BB88 /* MarkupToken.swift in Sources */, + 99211A621F279AAE0039BB88 /* MarkupParser.swift in Sources */, + 99211A6E1F279AAE0039BB88 /* MarkupTokenizer.swift in Sources */, + 99211A661F279AAE0039BB88 /* MarkupRenderer.swift in Sources */, + 99211A5E1F279AAE0039BB88 /* MarkupNode.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52D6D9821BEFF229002C0205 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 99211A771F279C0A0039BB88 /* MarkupParserTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52D6D9DD1BEFFF6E002C0205 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 99211A6C1F279AAE0039BB88 /* MarkupToken.swift in Sources */, + 99211A641F279AAE0039BB88 /* MarkupParser.swift in Sources */, + 99211A701F279AAE0039BB88 /* MarkupTokenizer.swift in Sources */, + 99211A681F279AAE0039BB88 /* MarkupRenderer.swift in Sources */, + 99211A601F279AAE0039BB88 /* MarkupNode.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52D6D9EB1BEFFFBE002C0205 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 994A8DFD1F14C2680023C7FF /* MarkupToken.swift in Sources */, - 9902DBC71F1643C1004454BE /* MarkupNode.swift in Sources */, - 9902DBCB1F1670E4004454BE /* MarkupParser.swift in Sources */, - 994A8DFF1F14C4680023C7FF /* MarkupTokenizer.swift in Sources */, - 9902DBD01F16837A004454BE /* MarkupRenderer.swift in Sources */, + 99211A6D1F279AAE0039BB88 /* MarkupToken.swift in Sources */, + 99211A651F279AAE0039BB88 /* MarkupParser.swift in Sources */, + 99211A711F279AAE0039BB88 /* MarkupTokenizer.swift in Sources */, + 99211A691F279AAE0039BB88 /* MarkupRenderer.swift in Sources */, + 99211A611F279AAE0039BB88 /* MarkupNode.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 994A8DE71F14C2380023C7FF /* Sources */ = { + 52D6DA0A1BF000BD002C0205 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9902DBCD1F167738004454BE /* MarkupParserTests.swift in Sources */, + 99211A6B1F279AAE0039BB88 /* MarkupToken.swift in Sources */, + 99211A631F279AAE0039BB88 /* MarkupParser.swift in Sources */, + 99211A6F1F279AAE0039BB88 /* MarkupTokenizer.swift in Sources */, + 99211A671F279AAE0039BB88 /* MarkupRenderer.swift in Sources */, + 99211A5F1F279AAE0039BB88 /* MarkupNode.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD7502761C68FCFC006590AF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 99211A781F279C0D0039BB88 /* MarkupParserTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD7502891C690C7A006590AF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 99211A791F279C0E0039BB88 /* MarkupParserTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 994A8DEE1F14C2380023C7FF /* PBXTargetDependency */ = { + 52D6D9891BEFF229002C0205 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 52D6D97B1BEFF229002C0205 /* Markup-iOS */; + targetProxy = 52D6D9881BEFF229002C0205 /* PBXContainerItemProxy */; + }; + DD7502811C68FCFC006590AF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 994A8DE11F14C2380023C7FF /* Markup */; - targetProxy = 994A8DED1F14C2380023C7FF /* PBXContainerItemProxy */; + target = 52D6DA0E1BF000BD002C0205 /* Markup-macOS */; + targetProxy = DD7502801C68FCFC006590AF /* PBXContainerItemProxy */; + }; + DD7502941C690C7A006590AF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 52D6D9EF1BEFFFBE002C0205 /* Markup-tvOS */; + targetProxy = DD7502931C690C7A006590AF /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 994A8DF41F14C2380023C7FF /* Debug */ = { + 52D6D98E1BEFF229002C0205 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -300,53 +611,44 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 994A8DF51F14C2380023C7FF /* Release */ = { + 52D6D98F1BEFF229002C0205 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -354,118 +656,359 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - 994A8DF71F14C2380023C7FF /* Debug */ = { + 52D6D9911BEFF229002C0205 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = T5TF72MCE6; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Markup/Info.plist; + INFOPLIST_FILE = Configs/Markup.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.gonzalezreal.Markup; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-iOS"; + PRODUCT_NAME = Markup; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_VERSION = 3.0; }; name = Debug; }; - 994A8DF81F14C2380023C7FF /* Release */ = { + 52D6D9921BEFF229002C0205 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = T5TF72MCE6; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Markup/Info.plist; + INFOPLIST_FILE = Configs/Markup.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.gonzalezreal.Markup; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-iOS"; + PRODUCT_NAME = Markup; SKIP_INSTALL = YES; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; }; name = Release; }; - 994A8DFA1F14C2380023C7FF /* Debug */ = { + 52D6D9941BEFF229002C0205 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - DEVELOPMENT_TEAM = T5TF72MCE6; - INFOPLIST_FILE = MarkupTests/Info.plist; + CLANG_ENABLE_MODULES = YES; + INFOPLIST_FILE = Configs/MarkupTests.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.gonzalezreal.MarkupTests; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-iOS-Tests"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; }; name = Debug; }; - 994A8DFB1F14C2380023C7FF /* Release */ = { + 52D6D9951BEFF229002C0205 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - DEVELOPMENT_TEAM = T5TF72MCE6; - INFOPLIST_FILE = MarkupTests/Info.plist; + CLANG_ENABLE_MODULES = YES; + INFOPLIST_FILE = Configs/MarkupTests.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.gonzalezreal.MarkupTests; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-iOS-Tests"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + }; + name = Release; + }; + 52D6D9E81BEFFF6E002C0205 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Configs/Markup.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-watchOS"; + PRODUCT_NAME = Markup; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.0; + }; + name = Debug; + }; + 52D6D9E91BEFFF6E002C0205 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Configs/Markup.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-watchOS"; + PRODUCT_NAME = Markup; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.0; + }; + name = Release; + }; + 52D6DA021BEFFFBE002C0205 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Configs/Markup.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-tvOS"; + PRODUCT_NAME = Markup; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.0; + }; + name = Debug; + }; + 52D6DA031BEFFFBE002C0205 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Configs/Markup.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-tvOS"; + PRODUCT_NAME = Markup; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.0; + }; + name = Release; + }; + 52D6DA211BF000BD002C0205 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = Configs/Markup.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-macOS"; + PRODUCT_NAME = Markup; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; + }; + name = Debug; + }; + 52D6DA221BF000BD002C0205 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = Configs/Markup.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-macOS"; + PRODUCT_NAME = Markup; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + }; + name = Release; + }; + DD7502831C68FCFC006590AF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Configs/MarkupTests.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.11; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-macOS-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_VERSION = 3.0; + }; + name = Debug; + }; + DD7502841C68FCFC006590AF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Configs/MarkupTests.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.11; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-macOS-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + }; + name = Release; + }; + DD7502961C690C7A006590AF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = Configs/MarkupTests.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-tvOS-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SWIFT_VERSION = 3.0; + TVOS_DEPLOYMENT_TARGET = 9.1; + }; + name = Debug; + }; + DD7502971C690C7A006590AF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = Configs/MarkupTests.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.Markup.Markup-tvOS-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + TVOS_DEPLOYMENT_TARGET = 9.1; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 994A8DDC1F14C2380023C7FF /* Build configuration list for PBXProject "Markup" */ = { + 52D6D9761BEFF229002C0205 /* Build configuration list for PBXProject "Markup" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 52D6D98E1BEFF229002C0205 /* Debug */, + 52D6D98F1BEFF229002C0205 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 52D6D9901BEFF229002C0205 /* Build configuration list for PBXNativeTarget "Markup-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 52D6D9911BEFF229002C0205 /* Debug */, + 52D6D9921BEFF229002C0205 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 52D6D9931BEFF229002C0205 /* Build configuration list for PBXNativeTarget "Markup-iOS Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 52D6D9941BEFF229002C0205 /* Debug */, + 52D6D9951BEFF229002C0205 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 52D6D9E71BEFFF6E002C0205 /* Build configuration list for PBXNativeTarget "Markup-watchOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 52D6D9E81BEFFF6E002C0205 /* Debug */, + 52D6D9E91BEFFF6E002C0205 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 52D6DA011BEFFFBE002C0205 /* Build configuration list for PBXNativeTarget "Markup-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 52D6DA021BEFFFBE002C0205 /* Debug */, + 52D6DA031BEFFFBE002C0205 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 52D6DA201BF000BD002C0205 /* Build configuration list for PBXNativeTarget "Markup-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 994A8DF41F14C2380023C7FF /* Debug */, - 994A8DF51F14C2380023C7FF /* Release */, + 52D6DA211BF000BD002C0205 /* Debug */, + 52D6DA221BF000BD002C0205 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 994A8DF61F14C2380023C7FF /* Build configuration list for PBXNativeTarget "Markup" */ = { + DD7502821C68FCFC006590AF /* Build configuration list for PBXNativeTarget "Markup-macOS Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 994A8DF71F14C2380023C7FF /* Debug */, - 994A8DF81F14C2380023C7FF /* Release */, + DD7502831C68FCFC006590AF /* Debug */, + DD7502841C68FCFC006590AF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 994A8DF91F14C2380023C7FF /* Build configuration list for PBXNativeTarget "MarkupTests" */ = { + DD7502951C690C7A006590AF /* Build configuration list for PBXNativeTarget "Markup-tvOS Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 994A8DFA1F14C2380023C7FF /* Debug */, - 994A8DFB1F14C2380023C7FF /* Release */, + DD7502961C690C7A006590AF /* Debug */, + DD7502971C690C7A006590AF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = 994A8DD91F14C2380023C7FF /* Project object */; + rootObject = 52D6D9731BEFF229002C0205 /* Project object */; } diff --git a/Markup.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Markup.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 84c0c29..919434a 100644 --- a/Markup.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Markup.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/Markup.xcodeproj/xcshareddata/xcschemes/Markup-iOS.xcscheme b/Markup.xcodeproj/xcshareddata/xcschemes/Markup-iOS.xcscheme new file mode 100644 index 0000000..f6e126b --- /dev/null +++ b/Markup.xcodeproj/xcshareddata/xcschemes/Markup-iOS.xcscheme @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Markup.xcodeproj/xcshareddata/xcschemes/Markup-macOS.xcscheme b/Markup.xcodeproj/xcshareddata/xcschemes/Markup-macOS.xcscheme new file mode 100644 index 0000000..0a515b8 --- /dev/null +++ b/Markup.xcodeproj/xcshareddata/xcschemes/Markup-macOS.xcscheme @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Markup.xcodeproj/xcshareddata/xcschemes/Markup-tvOS.xcscheme b/Markup.xcodeproj/xcshareddata/xcschemes/Markup-tvOS.xcscheme new file mode 100644 index 0000000..595ba0d --- /dev/null +++ b/Markup.xcodeproj/xcshareddata/xcschemes/Markup-tvOS.xcscheme @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Markup.xcodeproj/xcshareddata/xcschemes/Markup-watchOS.xcscheme b/Markup.xcodeproj/xcshareddata/xcschemes/Markup-watchOS.xcscheme new file mode 100644 index 0000000..9e82894 --- /dev/null +++ b/Markup.xcodeproj/xcshareddata/xcschemes/Markup-watchOS.xcscheme @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Markup.xcodeproj/xcuserdata/guille.xcuserdatad/xcschemes/xcschememanagement.plist b/Markup.xcodeproj/xcuserdata/guille.xcuserdatad/xcschemes/xcschememanagement.plist index 7d8503d..0a821d7 100644 --- a/Markup.xcodeproj/xcuserdata/guille.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Markup.xcodeproj/xcuserdata/guille.xcuserdatad/xcschemes/xcschememanagement.plist @@ -2,12 +2,42 @@ - SchemeUserState + SuppressBuildableAutocreation - Markup.xcscheme + 52D6D97B1BEFF229002C0205 - orderHint - 0 + primary + + + 52D6D9851BEFF229002C0205 + + primary + + + 52D6D9E11BEFFF6E002C0205 + + primary + + + 52D6D9EF1BEFFFBE002C0205 + + primary + + + 52D6DA0E1BF000BD002C0205 + + primary + + + DD7502791C68FCFC006590AF + + primary + + + DD75028C1C690C7A006590AF + + primary + diff --git a/Markup/Markup.h b/Markup/Markup.h deleted file mode 100644 index 7657983..0000000 --- a/Markup/Markup.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Markup.h -// Markup -// -// Created by Guille Gonzalez on 11/07/2017. -// Copyright © 2017 Tuenti Technologies S.L. All rights reserved. -// - -#import - -//! Project version number for Markup. -FOUNDATION_EXPORT double MarkupVersionNumber; - -//! Project version string for Markup. -FOUNDATION_EXPORT const unsigned char MarkupVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/Markup/MarkupRenderer.swift b/Markup/MarkupRenderer.swift deleted file mode 100644 index db58c95..0000000 --- a/Markup/MarkupRenderer.swift +++ /dev/null @@ -1,74 +0,0 @@ -// -// MarkupRenderer.swift -// Markup -// -// Created by Guille Gonzalez on 12/07/2017. -// Copyright © 2017 Tuenti Technologies S.L. All rights reserved. -// - -import UIKit - -public final class MarkupRenderer { - private let baseFont: UIFont - - public init(baseFont: UIFont) { - self.baseFont = baseFont - } - - public func render(text: String) -> NSAttributedString { - let elements = MarkupParser.parse(text: text) - let attributes = [NSAttributedStringKey.font: baseFont] - - return elements.map { $0.render(withAttributes: attributes) }.joined() - } -} - -private extension MarkupNode { - func render(withAttributes attributes: [NSAttributedStringKey: Any]) -> NSAttributedString { - guard let currentFont = attributes[NSAttributedStringKey.font] as? UIFont else { - fatalError("Missing font attribute in \(attributes)") - } - - switch self { - case .text(let text): - return NSAttributedString(string: text, attributes: attributes) - - case .strong(let children): - var newAttributes = attributes - newAttributes[NSAttributedStringKey.font] = currentFont.addingSymbolicTraits(.traitBold) - return children.map { $0.render(withAttributes: newAttributes) }.joined() - - case .emphasis(let children): - var newAttributes = attributes - newAttributes[NSAttributedStringKey.font] = currentFont.addingSymbolicTraits(.traitItalic) - return children.map { $0.render(withAttributes: newAttributes) }.joined() - - case .delete(let children): - var newAttributes = attributes - newAttributes[NSAttributedStringKey.strikethroughStyle] = NSUnderlineStyle.styleSingle.rawValue - newAttributes[NSAttributedStringKey.baselineOffset] = 0 - return children.map { $0.render(withAttributes: newAttributes) }.joined() - } - } -} - -private extension Array where Element: NSAttributedString { - func joined() -> NSAttributedString { - let result = NSMutableAttributedString() - for element in self { - result.append(element) - } - return result - } -} - -private extension UIFont { - func addingSymbolicTraits(_ traits: UIFontDescriptorSymbolicTraits) -> UIFont? { - let newTraits = fontDescriptor.symbolicTraits.union(traits) - guard let descriptor = fontDescriptor.withSymbolicTraits(newTraits) else { - return nil - } - - return UIFont(descriptor: descriptor, size: 0) - } -} diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..3b09de8 --- /dev/null +++ b/Package.swift @@ -0,0 +1,5 @@ +import PackageDescription + +let package = Package( + name: "Markup" +) diff --git a/Markup/MarkupNode.swift b/Sources/MarkupNode.swift similarity index 72% rename from Markup/MarkupNode.swift rename to Sources/MarkupNode.swift index 941fe90..989820f 100644 --- a/Markup/MarkupNode.swift +++ b/Sources/MarkupNode.swift @@ -1,11 +1,3 @@ -// -// MarkupNode.swift -// Markup -// -// Created by Guille Gonzalez on 12/07/2017. -// Copyright © 2017 Tuenti Technologies S.L. All rights reserved. -// - import Foundation public enum MarkupNode { diff --git a/Markup/MarkupParser.swift b/Sources/MarkupParser.swift similarity index 83% rename from Markup/MarkupParser.swift rename to Sources/MarkupParser.swift index cff49b4..e2ac633 100644 --- a/Markup/MarkupParser.swift +++ b/Sources/MarkupParser.swift @@ -1,11 +1,3 @@ -// -// MarkupParser.swift -// Markup -// -// Created by Guille Gonzalez on 12/07/2017. -// Copyright © 2017 Tuenti Technologies S.L. All rights reserved. -// - import Foundation public struct MarkupParser { @@ -20,10 +12,8 @@ public struct MarkupParser { private init(text: String) { tokenizer = MarkupTokenizer(string: text) } -} -private extension MarkupParser { - mutating func parse() -> [MarkupNode] { + private mutating func parse() -> [MarkupNode] { var elements: [MarkupNode] = [] while let token = tokenizer.nextToken() { @@ -55,7 +45,7 @@ private extension MarkupParser { return elements } - mutating func close(delimiter: UnicodeScalar, elements: [MarkupNode]) -> MarkupNode? { + private mutating func close(delimiter: UnicodeScalar, elements: [MarkupNode]) -> MarkupNode? { var newElements = elements // Convert orphaned opening delimiters to plain text diff --git a/Sources/MarkupRenderer.swift b/Sources/MarkupRenderer.swift new file mode 100644 index 0000000..21deecf --- /dev/null +++ b/Sources/MarkupRenderer.swift @@ -0,0 +1,92 @@ +#if os(iOS) || os(tvOS) || os(watchOS) + import UIKit.UIFont + public typealias Font = UIFont +#elseif os(OSX) + import AppKit.NSFont + public typealias Font = NSFont +#endif + +public final class MarkupRenderer { + private let baseFont: Font + + public init(baseFont: Font) { + self.baseFont = baseFont + } + + public func render(text: String) -> NSAttributedString { + let elements = MarkupParser.parse(text: text) + let attributes = [NSFontAttributeName: baseFont] + + return elements.map { $0.render(withAttributes: attributes) }.joined() + } +} + +private extension MarkupNode { + func render(withAttributes attributes: [String: Any]) -> NSAttributedString { + guard let currentFont = attributes[NSFontAttributeName] as? Font else { + fatalError("Missing font attribute in \(attributes)") + } + + switch self { + case .text(let text): + return NSAttributedString(string: text, attributes: attributes) + + case .strong(let children): + var newAttributes = attributes + newAttributes[NSFontAttributeName] = currentFont.boldFont() + return children.map { $0.render(withAttributes: newAttributes) }.joined() + + case .emphasis(let children): + var newAttributes = attributes + newAttributes[NSFontAttributeName] = currentFont.italicFont() + return children.map { $0.render(withAttributes: newAttributes) }.joined() + + case .delete(let children): + var newAttributes = attributes + newAttributes[NSStrikethroughStyleAttributeName] = NSUnderlineStyle.styleSingle.rawValue + newAttributes[NSBaselineOffsetAttributeName] = 0 + return children.map { $0.render(withAttributes: newAttributes) }.joined() + } + } +} + +private extension Array where Element: NSAttributedString { + func joined() -> NSAttributedString { + let result = NSMutableAttributedString() + for element in self { + result.append(element) + } + return result + } +} + +#if os(iOS) || os(tvOS) || os(watchOS) + private extension UIFont { + func boldFont() -> UIFont? { + return addingSymbolicTraits(.traitBold) + } + + func italicFont() -> UIFont? { + return addingSymbolicTraits(.traitItalic) + } + + func addingSymbolicTraits(_ traits: UIFontDescriptorSymbolicTraits) -> UIFont? { + let newTraits = fontDescriptor.symbolicTraits.union(traits) + guard let descriptor = fontDescriptor.withSymbolicTraits(newTraits) else { + return nil + } + + return UIFont(descriptor: descriptor, size: 0) + } + } +#elseif os(OSX) + private extension NSFont { + func boldFont() -> NSFont? { + return NSFontManager.shared().convert(self, toHaveTrait: .boldFontMask) + } + + func italicFont() -> NSFont? { + return NSFontManager.shared().convert(self, toHaveTrait: .italicFontMask) + } + } +#endif diff --git a/Markup/MarkupToken.swift b/Sources/MarkupToken.swift similarity index 87% rename from Markup/MarkupToken.swift rename to Sources/MarkupToken.swift index 8950f4d..504d956 100644 --- a/Markup/MarkupToken.swift +++ b/Sources/MarkupToken.swift @@ -1,11 +1,3 @@ -// -// MarkupToken.swift -// Markup -// -// Created by Guille Gonzalez on 11/07/2017. -// Copyright © 2017 Tuenti Technologies S.L. All rights reserved. -// - import Foundation enum MarkupToken { diff --git a/Markup/MarkupTokenizer.swift b/Sources/MarkupTokenizer.swift similarity index 84% rename from Markup/MarkupTokenizer.swift rename to Sources/MarkupTokenizer.swift index c67e7f9..00c47ba 100644 --- a/Markup/MarkupTokenizer.swift +++ b/Sources/MarkupTokenizer.swift @@ -1,11 +1,3 @@ -// -// MarkupTokenizer.swift -// Markup -// -// Created by Guille Gonzalez on 11/07/2017. -// Copyright © 2017 Tuenti Technologies S.L. All rights reserved. -// - import Foundation private extension CharacterSet { @@ -71,10 +63,8 @@ struct MarkupTokenizer { return token } -} -private extension MarkupTokenizer { - var current: UnicodeScalar? { + private var current: UnicodeScalar? { guard currentIndex < input.endIndex else { return nil } @@ -82,7 +72,7 @@ private extension MarkupTokenizer { return input[currentIndex] } - var previous: UnicodeScalar? { + private var previous: UnicodeScalar? { guard currentIndex > input.startIndex else { return nil } @@ -91,7 +81,7 @@ private extension MarkupTokenizer { return input[index] } - var next: UnicodeScalar? { + private var next: UnicodeScalar? { guard currentIndex < input.endIndex else { return nil } @@ -105,11 +95,11 @@ private extension MarkupTokenizer { return input[index] } - mutating func scan(delimiter d: UnicodeScalar) -> MarkupToken? { + private mutating func scan(delimiter d: UnicodeScalar) -> MarkupToken? { return scanRight(delimiter: d) ?? scanLeft(delimiter: d) } - mutating func scanLeft(delimiter: UnicodeScalar) -> MarkupToken? { + private mutating func scanLeft(delimiter: UnicodeScalar) -> MarkupToken? { let p = previous ?? .space guard let n = next else { @@ -130,7 +120,7 @@ private extension MarkupTokenizer { return .leftDelimiter(delimiter) } - mutating func scanRight(delimiter: UnicodeScalar) -> MarkupToken? { + private mutating func scanRight(delimiter: UnicodeScalar) -> MarkupToken? { guard let p = previous else { return nil } @@ -155,7 +145,7 @@ private extension MarkupTokenizer { return .rightDelimiter(delimiter) } - mutating func scanText() -> MarkupToken? { + private mutating func scanText() -> MarkupToken? { let startIndex = currentIndex scanUntil { CharacterSet.delimiters.contains($0) } @@ -166,13 +156,13 @@ private extension MarkupTokenizer { return .text(String(input[startIndex.. Bool) { + private mutating func scanUntil(_ predicate: (UnicodeScalar) -> Bool) { while currentIndex < input.endIndex && !predicate(input[currentIndex]) { advance() } } - mutating func advance() { + private mutating func advance() { currentIndex = input.index(after: currentIndex) } } diff --git a/MarkupTests/MarkupParserTests.swift b/Tests/MarkupTests/MarkupParserTests.swift similarity index 95% rename from MarkupTests/MarkupParserTests.swift rename to Tests/MarkupTests/MarkupParserTests.swift index 1a675ad..699eaf7 100644 --- a/MarkupTests/MarkupParserTests.swift +++ b/Tests/MarkupTests/MarkupParserTests.swift @@ -1,11 +1,3 @@ -// -// MarkupParserTests.swift -// MarkupTests -// -// Created by Guille Gonzalez on 12/07/2017. -// Copyright © 2017 Tuenti Technologies S.L. All rights reserved. -// - import XCTest import Markup From 805f4d63e01a33e53faacac44ced1aa4b167c0bd Mon Sep 17 00:00:00 2001 From: Guille Gonzalez Date: Wed, 26 Jul 2017 09:42:17 +0200 Subject: [PATCH 2/4] Update playgrounds to run on MacOS --- Markup.xcworkspace/contents.xcworkspacedata | 20 +++++++++++++++++++ Playgrounds/Parser.playground/Contents.swift | 3 +++ .../Parser.playground/contents.xcplayground | 2 +- .../Renderer.playground/Contents.swift | 20 +++++-------------- .../Renderer.playground/contents.xcplayground | 2 +- .../Renderer.playground/timeline.xctimeline | 11 ---------- .../Tokenizer.playground/Contents.swift | 3 +++ .../contents.xcplayground | 2 +- 8 files changed, 34 insertions(+), 29 deletions(-) create mode 100644 Markup.xcworkspace/contents.xcworkspacedata delete mode 100644 Playgrounds/Renderer.playground/timeline.xctimeline diff --git a/Markup.xcworkspace/contents.xcworkspacedata b/Markup.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..62ca97a --- /dev/null +++ b/Markup.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/Playgrounds/Parser.playground/Contents.swift b/Playgrounds/Parser.playground/Contents.swift index 503a184..3ac828f 100644 --- a/Playgrounds/Parser.playground/Contents.swift +++ b/Playgrounds/Parser.playground/Contents.swift @@ -1,5 +1,8 @@ +import Cocoa import Markup +// You must build the Markup-macOS target to run this playground. + var nodes = MarkupParser.parse(text: "The quick, ~red~ brown fox jumps over a _*lazy dog*_.") dump(nodes) print() diff --git a/Playgrounds/Parser.playground/contents.xcplayground b/Playgrounds/Parser.playground/contents.xcplayground index 5da2641..63b6dd8 100644 --- a/Playgrounds/Parser.playground/contents.xcplayground +++ b/Playgrounds/Parser.playground/contents.xcplayground @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Playgrounds/Renderer.playground/Contents.swift b/Playgrounds/Renderer.playground/Contents.swift index 93950ed..254e9b5 100644 --- a/Playgrounds/Renderer.playground/Contents.swift +++ b/Playgrounds/Renderer.playground/Contents.swift @@ -1,19 +1,9 @@ -import UIKit -import PlaygroundSupport +import Cocoa import Markup -let renderer = MarkupRenderer(baseFont: UIFont.systemFont(ofSize: 16)) +// You must build the Markup-macOS target to run this playground. -let label = UILabel() -label.numberOfLines = 0 -label.backgroundColor = UIColor.white -label.textColor = UIColor.black -label.attributedText = renderer.render(text: - """ - The *quick*, ~red~ brown fox jumps over a _*lazy dog*_. - Compute _6*4*8_. _Quick_zephyrs_blow_. - """ -) -label.sizeToFit() +let renderer = MarkupRenderer(baseFont: .systemFont(ofSize: 16)) +var attributedText = renderer.render(text: "The *quick*, ~red~ brown fox jumps over a _*lazy dog*_.") -PlaygroundPage.current.liveView = label +attributedText = renderer.render(text: "Compute _6*4*8_. _Quick_zephyrs_blow_.") diff --git a/Playgrounds/Renderer.playground/contents.xcplayground b/Playgrounds/Renderer.playground/contents.xcplayground index 5da2641..63b6dd8 100644 --- a/Playgrounds/Renderer.playground/contents.xcplayground +++ b/Playgrounds/Renderer.playground/contents.xcplayground @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Playgrounds/Renderer.playground/timeline.xctimeline b/Playgrounds/Renderer.playground/timeline.xctimeline deleted file mode 100644 index 6c7c0f8..0000000 --- a/Playgrounds/Renderer.playground/timeline.xctimeline +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - diff --git a/Playgrounds/Tokenizer.playground/Contents.swift b/Playgrounds/Tokenizer.playground/Contents.swift index a379460..71f7eec 100644 --- a/Playgrounds/Tokenizer.playground/Contents.swift +++ b/Playgrounds/Tokenizer.playground/Contents.swift @@ -1,5 +1,8 @@ +import Cocoa @testable import Markup +// You must build the Markup-macOS target to run this playground. + func dumpTokens(for input: String) { var tokenizer = MarkupTokenizer(string: input) diff --git a/Playgrounds/Tokenizer.playground/contents.xcplayground b/Playgrounds/Tokenizer.playground/contents.xcplayground index 5da2641..63b6dd8 100644 --- a/Playgrounds/Tokenizer.playground/contents.xcplayground +++ b/Playgrounds/Tokenizer.playground/contents.xcplayground @@ -1,4 +1,4 @@ - + \ No newline at end of file From 81f15cb46e9a610fa924b62d8eb02f8453c2ba5b Mon Sep 17 00:00:00 2001 From: Guille Gonzalez Date: Wed, 26 Jul 2017 10:16:29 +0200 Subject: [PATCH 3/4] Add MarkupRenderer tests --- Markup.xcodeproj/project.pbxproj | 8 ++ Sources/MarkupRenderer.swift | 6 +- Tests/MarkupTests/MarkupRendererTests.swift | 105 ++++++++++++++++++++ 3 files changed, 116 insertions(+), 3 deletions(-) create mode 100644 Tests/MarkupTests/MarkupRendererTests.swift diff --git a/Markup.xcodeproj/project.pbxproj b/Markup.xcodeproj/project.pbxproj index 3f35281..5f5e49a 100644 --- a/Markup.xcodeproj/project.pbxproj +++ b/Markup.xcodeproj/project.pbxproj @@ -31,6 +31,9 @@ 99211A771F279C0A0039BB88 /* MarkupParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A721F279BCF0039BB88 /* MarkupParserTests.swift */; }; 99211A781F279C0D0039BB88 /* MarkupParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A721F279BCF0039BB88 /* MarkupParserTests.swift */; }; 99211A791F279C0E0039BB88 /* MarkupParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99211A721F279BCF0039BB88 /* MarkupParserTests.swift */; }; + 99E800001F28814500AAE464 /* MarkupRendererTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8FFFF1F28814500AAE464 /* MarkupRendererTests.swift */; }; + 99E800011F28814500AAE464 /* MarkupRendererTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8FFFF1F28814500AAE464 /* MarkupRendererTests.swift */; }; + 99E800021F28814500AAE464 /* MarkupRendererTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99E8FFFF1F28814500AAE464 /* MarkupRendererTests.swift */; }; DD7502881C68FEDE006590AF /* Markup.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D6DA0F1BF000BD002C0205 /* Markup.framework */; }; DD7502921C690C7A006590AF /* Markup.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D6D9F01BEFFFBE002C0205 /* Markup.framework */; }; /* End PBXBuildFile section */ @@ -71,6 +74,7 @@ 99211A5C1F279AAE0039BB88 /* MarkupToken.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkupToken.swift; sourceTree = ""; }; 99211A5D1F279AAE0039BB88 /* MarkupTokenizer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkupTokenizer.swift; sourceTree = ""; }; 99211A721F279BCF0039BB88 /* MarkupParserTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkupParserTests.swift; sourceTree = ""; }; + 99E8FFFF1F28814500AAE464 /* MarkupRendererTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkupRendererTests.swift; sourceTree = ""; }; AD2FAA261CD0B6D800659CF4 /* Markup.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Markup.plist; sourceTree = ""; }; AD2FAA281CD0B6E100659CF4 /* MarkupTests.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = MarkupTests.plist; sourceTree = ""; }; DD75027A1C68FCFC006590AF /* Markup-macOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Markup-macOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -182,6 +186,7 @@ isa = PBXGroup; children = ( 99211A721F279BCF0039BB88 /* MarkupParserTests.swift */, + 99E8FFFF1F28814500AAE464 /* MarkupRendererTests.swift */, ); name = Tests; path = Tests/MarkupTests; @@ -495,6 +500,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 99E800001F28814500AAE464 /* MarkupRendererTests.swift in Sources */, 99211A771F279C0A0039BB88 /* MarkupParserTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -539,6 +545,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 99E800011F28814500AAE464 /* MarkupRendererTests.swift in Sources */, 99211A781F279C0D0039BB88 /* MarkupParserTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -547,6 +554,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 99E800021F28814500AAE464 /* MarkupRendererTests.swift in Sources */, 99211A791F279C0E0039BB88 /* MarkupParserTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Sources/MarkupRenderer.swift b/Sources/MarkupRenderer.swift index 21deecf..716bf8a 100644 --- a/Sources/MarkupRenderer.swift +++ b/Sources/MarkupRenderer.swift @@ -50,7 +50,7 @@ private extension MarkupNode { } } -private extension Array where Element: NSAttributedString { +extension Array where Element: NSAttributedString { func joined() -> NSAttributedString { let result = NSMutableAttributedString() for element in self { @@ -61,7 +61,7 @@ private extension Array where Element: NSAttributedString { } #if os(iOS) || os(tvOS) || os(watchOS) - private extension UIFont { + extension UIFont { func boldFont() -> UIFont? { return addingSymbolicTraits(.traitBold) } @@ -80,7 +80,7 @@ private extension Array where Element: NSAttributedString { } } #elseif os(OSX) - private extension NSFont { + extension NSFont { func boldFont() -> NSFont? { return NSFontManager.shared().convert(self, toHaveTrait: .boldFontMask) } diff --git a/Tests/MarkupTests/MarkupRendererTests.swift b/Tests/MarkupTests/MarkupRendererTests.swift new file mode 100644 index 0000000..8fba73d --- /dev/null +++ b/Tests/MarkupTests/MarkupRendererTests.swift @@ -0,0 +1,105 @@ +import XCTest +@testable import Markup + +class MarkupRendererTests: XCTestCase { + let baseFont = Font.systemFont(ofSize: 16) + var sut: MarkupRenderer! + + override func setUp() { + super.setUp() + sut = MarkupRenderer(baseFont: baseFont) + } + + func testPlainText_render_rendersPlainText() { + // given + let input = "hello there" + let expected = NSAttributedString(string: "hello there", + attributes: [NSFontAttributeName: baseFont]) + + // when + let result = sut.render(text: input) + + // then + XCTAssertEqual(result, expected) + } + + func testStrongText_render_rendersBoldText() { + // given + let input = "hello *there*" + let boldFont = baseFont.boldFont()! + let expected = [ + NSAttributedString(string: "hello ", + attributes: [NSFontAttributeName: baseFont]), + NSAttributedString(string: "there", + attributes: [NSFontAttributeName: boldFont]) + ].joined() + + // when + let result = sut.render(text: input) + + // then + XCTAssertEqual(result, expected) + } + + func testEmphasizedText_render_rendersItalicText() { + // given + let input = "hello _there_" + let italicFont = baseFont.italicFont()! + let expected = [ + NSAttributedString(string: "hello ", + attributes: [NSFontAttributeName: baseFont]), + NSAttributedString(string: "there", + attributes: [NSFontAttributeName: italicFont]) + ].joined() + + // when + let result = sut.render(text: input) + + // then + XCTAssertEqual(result, expected) + } + + func testDeletedText_render_rendersStrikethroughText() { + // given + let input = "hello ~there~" + let strikethroughAttributes: [String: Any] = [ + NSFontAttributeName: baseFont, + NSStrikethroughStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue, + NSBaselineOffsetAttributeName: 0 + ] + let expected = [ + NSAttributedString(string: "hello ", + attributes: [NSFontAttributeName: baseFont]), + NSAttributedString(string: "there", + attributes: strikethroughAttributes) + ].joined() + + // when + let result = sut.render(text: input) + + // then + XCTAssertEqual(result, expected) + } + + func testStrongEmphasizedText_render_rendersBoldItalicText() { + // given + let input = "hello *_there_* _*there*_" + let boldItalicFont = baseFont.boldFont()!.italicFont()! + let expected = [ + NSAttributedString(string: "hello ", + attributes: [NSFontAttributeName: baseFont]), + NSAttributedString(string: "there", + attributes: [NSFontAttributeName: boldItalicFont]), + NSAttributedString(string: " ", + attributes: [NSFontAttributeName: baseFont]), + NSAttributedString(string: "there", + attributes: [NSFontAttributeName: boldItalicFont]) + ].joined() + + // when + let result = sut.render(text: input) + + // then + XCTAssertEqual(result, expected) + } +} From b8233ff66abd6ecde9a8b5d48e3b5f1a351759f2 Mon Sep 17 00:00:00 2001 From: Guille Gonzalez Date: Wed, 26 Jul 2017 13:23:34 +0200 Subject: [PATCH 4/4] Add sample project --- Markup.xcworkspace/contents.xcworkspacedata | 3 + MarkupExample.xcodeproj/project.pbxproj | 330 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + MarkupExample/AppDelegate.swift | 38 ++ .../AppIcon.appiconset/Contents.json | 38 ++ .../Base.lproj/LaunchScreen.storyboard | 27 ++ MarkupExample/Base.lproj/Main.storyboard | 59 ++++ MarkupExample/Info.plist | 38 ++ MarkupExample/Screenshot.png | Bin 0 -> 165457 bytes MarkupExample/ViewController.swift | 17 + 10 files changed, 557 insertions(+) create mode 100644 MarkupExample.xcodeproj/project.pbxproj create mode 100644 MarkupExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 MarkupExample/AppDelegate.swift create mode 100644 MarkupExample/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 MarkupExample/Base.lproj/LaunchScreen.storyboard create mode 100644 MarkupExample/Base.lproj/Main.storyboard create mode 100644 MarkupExample/Info.plist create mode 100644 MarkupExample/Screenshot.png create mode 100644 MarkupExample/ViewController.swift diff --git a/Markup.xcworkspace/contents.xcworkspacedata b/Markup.xcworkspace/contents.xcworkspacedata index 62ca97a..01bc11c 100644 --- a/Markup.xcworkspace/contents.xcworkspacedata +++ b/Markup.xcworkspace/contents.xcworkspacedata @@ -4,6 +4,9 @@ + + diff --git a/MarkupExample.xcodeproj/project.pbxproj b/MarkupExample.xcodeproj/project.pbxproj new file mode 100644 index 0000000..0128ed0 --- /dev/null +++ b/MarkupExample.xcodeproj/project.pbxproj @@ -0,0 +1,330 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 99C707211F28AE1600EAB4CB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99C707201F28AE1600EAB4CB /* AppDelegate.swift */; }; + 99C707231F28AE1600EAB4CB /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99C707221F28AE1600EAB4CB /* ViewController.swift */; }; + 99C707261F28AE1600EAB4CB /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 99C707241F28AE1600EAB4CB /* Main.storyboard */; }; + 99C707281F28AE1600EAB4CB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 99C707271F28AE1600EAB4CB /* Assets.xcassets */; }; + 99C7072B1F28AE1600EAB4CB /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 99C707291F28AE1600EAB4CB /* LaunchScreen.storyboard */; }; + 99C707331F28AECF00EAB4CB /* Markup.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 99C707321F28AECF00EAB4CB /* Markup.framework */; }; + 99C707341F28AECF00EAB4CB /* Markup.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 99C707321F28AECF00EAB4CB /* Markup.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 99C707351F28AECF00EAB4CB /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 99C707341F28AECF00EAB4CB /* Markup.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 99C7071D1F28AE1600EAB4CB /* MarkupExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MarkupExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 99C707201F28AE1600EAB4CB /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 99C707221F28AE1600EAB4CB /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 99C707251F28AE1600EAB4CB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 99C707271F28AE1600EAB4CB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 99C7072A1F28AE1600EAB4CB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 99C7072C1F28AE1600EAB4CB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 99C707321F28AECF00EAB4CB /* Markup.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Markup.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 99C7071A1F28AE1600EAB4CB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 99C707331F28AECF00EAB4CB /* Markup.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 99C707141F28AE1600EAB4CB = { + isa = PBXGroup; + children = ( + 99C707321F28AECF00EAB4CB /* Markup.framework */, + 99C7071F1F28AE1600EAB4CB /* MarkupExample */, + 99C7071E1F28AE1600EAB4CB /* Products */, + ); + sourceTree = ""; + }; + 99C7071E1F28AE1600EAB4CB /* Products */ = { + isa = PBXGroup; + children = ( + 99C7071D1F28AE1600EAB4CB /* MarkupExample.app */, + ); + name = Products; + sourceTree = ""; + }; + 99C7071F1F28AE1600EAB4CB /* MarkupExample */ = { + isa = PBXGroup; + children = ( + 99C707201F28AE1600EAB4CB /* AppDelegate.swift */, + 99C707221F28AE1600EAB4CB /* ViewController.swift */, + 99C707241F28AE1600EAB4CB /* Main.storyboard */, + 99C707271F28AE1600EAB4CB /* Assets.xcassets */, + 99C707291F28AE1600EAB4CB /* LaunchScreen.storyboard */, + 99C7072C1F28AE1600EAB4CB /* Info.plist */, + ); + path = MarkupExample; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 99C7071C1F28AE1600EAB4CB /* MarkupExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 99C7072F1F28AE1600EAB4CB /* Build configuration list for PBXNativeTarget "MarkupExample" */; + buildPhases = ( + 99C707191F28AE1600EAB4CB /* Sources */, + 99C7071A1F28AE1600EAB4CB /* Frameworks */, + 99C7071B1F28AE1600EAB4CB /* Resources */, + 99C707351F28AECF00EAB4CB /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MarkupExample; + productName = MarkupExample; + productReference = 99C7071D1F28AE1600EAB4CB /* MarkupExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 99C707151F28AE1600EAB4CB /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0830; + LastUpgradeCheck = 0830; + ORGANIZATIONNAME = "Guille Gonzalez"; + TargetAttributes = { + 99C7071C1F28AE1600EAB4CB = { + CreatedOnToolsVersion = 8.3.3; + DevelopmentTeam = T5TF72MCE6; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 99C707181F28AE1600EAB4CB /* Build configuration list for PBXProject "MarkupExample" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 99C707141F28AE1600EAB4CB; + productRefGroup = 99C7071E1F28AE1600EAB4CB /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 99C7071C1F28AE1600EAB4CB /* MarkupExample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 99C7071B1F28AE1600EAB4CB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 99C7072B1F28AE1600EAB4CB /* LaunchScreen.storyboard in Resources */, + 99C707281F28AE1600EAB4CB /* Assets.xcassets in Resources */, + 99C707261F28AE1600EAB4CB /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 99C707191F28AE1600EAB4CB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 99C707231F28AE1600EAB4CB /* ViewController.swift in Sources */, + 99C707211F28AE1600EAB4CB /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 99C707241F28AE1600EAB4CB /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 99C707251F28AE1600EAB4CB /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 99C707291F28AE1600EAB4CB /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 99C7072A1F28AE1600EAB4CB /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 99C7072D1F28AE1600EAB4CB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 99C7072E1F28AE1600EAB4CB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 99C707301F28AE1600EAB4CB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = T5TF72MCE6; + INFOPLIST_FILE = MarkupExample/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.gonzalezreal.MarkupExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + }; + name = Debug; + }; + 99C707311F28AE1600EAB4CB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = T5TF72MCE6; + INFOPLIST_FILE = MarkupExample/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.gonzalezreal.MarkupExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 99C707181F28AE1600EAB4CB /* Build configuration list for PBXProject "MarkupExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 99C7072D1F28AE1600EAB4CB /* Debug */, + 99C7072E1F28AE1600EAB4CB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 99C7072F1F28AE1600EAB4CB /* Build configuration list for PBXNativeTarget "MarkupExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 99C707301F28AE1600EAB4CB /* Debug */, + 99C707311F28AE1600EAB4CB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 99C707151F28AE1600EAB4CB /* Project object */; +} diff --git a/MarkupExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/MarkupExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..cc9cdb1 --- /dev/null +++ b/MarkupExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/MarkupExample/AppDelegate.swift b/MarkupExample/AppDelegate.swift new file mode 100644 index 0000000..356764c --- /dev/null +++ b/MarkupExample/AppDelegate.swift @@ -0,0 +1,38 @@ +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(_ application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(_ application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(_ application: UIApplication) { + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(_ application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/MarkupExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/MarkupExample/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..118c98f --- /dev/null +++ b/MarkupExample/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MarkupExample/Base.lproj/LaunchScreen.storyboard b/MarkupExample/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..fdf3f97 --- /dev/null +++ b/MarkupExample/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MarkupExample/Base.lproj/Main.storyboard b/MarkupExample/Base.lproj/Main.storyboard new file mode 100644 index 0000000..c792d94 --- /dev/null +++ b/MarkupExample/Base.lproj/Main.storyboard @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MarkupExample/Info.plist b/MarkupExample/Info.plist new file mode 100644 index 0000000..38e98af --- /dev/null +++ b/MarkupExample/Info.plist @@ -0,0 +1,38 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/MarkupExample/Screenshot.png b/MarkupExample/Screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..e96c3f6435eaf245618f93a65f8f8efda4577009 GIT binary patch literal 165457 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 z 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

fuVe+w;TrAdQ+s)d% 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˥kEpZ^e8GRnK zHi|nl(fpkphFch}TH{P*ZF7GoS|}H~jYTR6|E4__^US9Xw1!f@?p49rG#f;H|0o~o zezM49d;X({Q5EG+N!3B1(z?ewA=~aOA5-*-2by%ZRBMgy#!%>&bn!gJViTW8K)=X_ zzD#fSbvu9JHE#Z``$jWY-8Q&WBwULa$O(8@V^^=9taR(%9lh+mflslc zcdpGaD-9j$h;#_B<9H#dvzfa!+hcDdy1d>Y<|#6?4Sv-6%(1~++W4i*>|yy0f)(nKRR!YcCB$@f2;;+nVW4_?bt3H3iu&Ke!v>6idyKVJZY5m8} z!h)k$D2O=wVy}1~3WV7dlNf^D`QuV~8Nd6&~(KC-ylIRCmpo=2G|c|V)zae_sv!{aIm7$Y@> zTDMnbH#V81&??-*#pMrQuRImD z@_d~~epJcPQPW1*k;|OMxenXM5gVs#o5L~1l69s~G(*s^$lST<${$rKhnS3)`qSN@ zH4lmvilAuDuj1&+0rl63Hs%TipwL42MXAjPL0C36n5=aY>|oaw1%Q8|Cw$%ao2AZ-E9x?U5Lb0ZE#}h+7Q#eUQvnM(>f*Q$*1Ds>JSF^=|$V#X|9TI%sD%pB6cczCMD?F<1BnJ@)O+N%+ygI5=% zS>(xJ0Ykcs7RJf%rX zeTb>Xj-BCI2Cr6J>qVQHOK1gIr}{0g#4rym82v_=Z4%wrbCDxi*jVS(lm}EK&sWhy zuQp$Uw5x$Wv2Bz3Y|d{Ov=|dV_yi!rt6cY^W)OzltH7g%X6@N_X)qxY;qD?)G8J z5Br;eu!(O9DTHCaf5xS_WP1xBJ4W)3ax~2NvtcQN3_;n&VaWFoEl(KdC{QgHny6uP z)+tdS`2P8N+TCk55xpQN=T1#xX|<`xq?-*%HV7cj>x!Z`q(6cOkh+R4#XrXdeocol z`|bTQ#VD)*kcRbfsi@dDdOhzsZ*FY)wO{=8+Tc&w;PvYz`O4rgp`liTYh|J8k;_Uw zcMnKuIy3j170e}@Jq#eqzU4#{fwOF(^T@b-JszIHZs1~RYoig))HUrMg-B=zhFkN( z$?bxtIXaxv$XV-$9=G5zpK`=8Z35;PkY1ovuqxRGft zAI7Wb*qrcrGn+xCu0&ftVUTCYu%lI#f#?9=$ika*e-h(@r#}d(k4(%E@A)YyQ#6@1 z-XZ$rYb@icL2(NvBed#iQc$knT2c@knwSsk&$jU#W%$eGE#&f_6$kYM#gBc`JA4`r zplmfkA%t(@YSYWUXSQJf8ba(F>{pl1m6G<$u^s|Z*QKV_)nc}~!Ct4OjTuo@EeQtR z`a{ib&2^R_$Pm z3!PC7rCZ9?aWqZ4qSKZfiiO$Jdf8kir?Xq2sQDywbQ$iJbsO!Gu#hCoyA*U&-Yq&- z`ur{2Qpq>2YfsSdy0l_21*tV40V~HE*2Qgo(NL^TnxaqdrVXunA1?Kv{<3r{<*>xn zT4pPI_9PQrVA8+1Dbs-XWiGf05fTP3!0 z-#%M{fWD{QPg~ciwa24d4O?%)3Vq$3bIg~#)}*NMCs�@+@E`&(_ZwPNb1>E7wq+ zBsz7w+8eD*wNeL_dq=J~*I^9J!-ws4?p{%2@Sc=L;jmBio7A7)Zx+0)WtzG?8Ualt zc}1LhKfUKAMK90uyjWP|grxTTy&%#OcsZ$tMO;zpu&OOSiBQwy*t5C?5Vx~j%R`R> z`)0=f84I}QFnA2Sp)z0(Dlt*vct8<8AU-0lFHKeWP-j#X)Hr#q{gf@Zs-12d=8ql|RWx%D=^|LEwM0^v+YFL3EylS;ak4Vh%?Y;$ zu6~j*vw)B;r@Fc~A5toV`){jUpqH`6KgEE0^1SZ6j}3fXoBBEHyWe2COF5ZdZ5y(- z+>06fbYVv3$g9;rZa4FAv{QVCq!DdudAv;}o`rUg6>Ebp#?FhBre5FL{4Rp9m==#} z@jB@=5Yp~ao~>UlEYH6}ol(aIY`%v_$djVBDZ{+m?q`dvGk+2I1A>t6L-(mvONf>Y zdzLd!9_B#_W3v%X2OdhCSVtQ1AO*iK0dw6xxW%>a=#oHG71-Tly#XKr(jqF}z=_!Z z?ghZHU(on+*4T2FIYGQVfV|LU5qsha?vv@6ZTSy`(QFMA)rWE|LK7!Gr|yJzmt)MoXY+`K=G#wrq_WD^DxlN0M#5h6YpURogW|UwDO`3 zGtv>Tmm@Y^1TazW8+tPWIVqWk#!ouaY`T9X45uT9gYaK3vpn7NmWok02qFBL)&YK+t18c+?&)Y{S7>$KN_&ZR5VF^MAea*b%?oXu?0`~#?h|ShR!Gu zM6qo8$kh6T{Pyel^HA=bk)>ky=;+j#a=o`}JWDHOb3uAQ`-y2ar;f}#6a$O9gYwY4YH8u7+PAp7&9`o-H@U=PN*VY?4Cdx=9%Mk|F@sql zXD;3v7aT5QvNrXFoMbfG7LURfJ2Jt1JQm`ee3ZP0Kt~m<2z2~r?u&7^!)HBFcZ{MJ&{d8Th?bZyF}1oYheB5{>lYMWsLqIGWQ70a#Ig> zmSxPa_b_ry_i!pUGDMVKngnQ(GusEOj5|8se1ep|4oXQKL+CF3Sjs?BTAOn{@%jDV z-uo^AYZ3!6_%#)i(uA@mu-QRUK;MS^jOJP=?n}7wQq<)1H$aqayHX|PIXx0w8xr+w z_~ePzZWXMcgRw5r_O#mGxzLnUHG0fMdU$5@k6J@h1#g==irVAqY07rnb?GFWA>kRq z7w0oNlT#Gj$mdK&FrYawrS#Ck4be3h2$0cTE4p&j(_+2`=oVE_GC|CDhrom9_DsBi$&^A{u?CLCC^xAAHpKmEp>* z25GyM-1Pf*x&5swS9$1WV+gNYb8%!ZTBu7t;SE06s=>Xdt5SMYp8O`9a>T-!$IS|Y zZ^_b7vpllpTx|a{?(U#gooPq=NP+nE?`(n)M9ddhR8eB8+rn}NafE*DhHT~T26_Ai z+KWfs)oZwP0bn5;#iCbj2XbBJ02Q0+1~mxi7+D>6Dbl3tAE!#nQ|8Z~rzZ%do%oaO z-3G`>BWiCmQk#BqyEGkIB#dgAH~6{{Ka`|gzn$^QMLzbHiDh4B!KLJ2Wrk{f;g(la zIBw!kDz|^$=XxS*IzQ}GlCvSe?qwxb>*)h$p-l~j5bNrEFUxh_c?0-yO(9pMv}z4O zoc?DVWF=e+H^xaQSLs=G^o;a9(Y+V(AJ`Tu{r%Gs)wACYt({6w*B)&?^Slc8MQec` zslu)9czl*-L&?yFPxcxxJ87zYdE!XXYB5qBEVN}{E9UA#-&q56!Kx;H-DmWTpY_wP z^^fh*B;aq4AR{JhBkGH) zQm@-}2|w8Q>9!0`lCt<%i(?O+sNs+Dzkj4MyPu}RNt{|$(OGpk#63I4*KG7y4Zl=$ zIm>l5coC@ud_8+q=i*BwoY}3W1Uj+4rp0~iEJ&gxjnbQKV!jXn^hkZm3mVq_Z78^o zMs>rCYeu9|JZw0VC#Hd^4#*twe_o&`EIWf)OPJy7`ZEO)XzZkekPeOrIB)qV*d?^J z%&rgu?@5zT-URyLX3V0W28pmb65QvRzkL;E&0MIiYjvBaHtUD>4{|Hq3TreL-*-;} zZeF8-6l9%<9x&^NyBB&DQqS}aKKVSA?+cJ)pKvMi07Y`|9^t5>PZ=v`O%quzr~P zn4>29Ok5C_ytcnsipEpg3$LJis6G9@UdRYbxt{?@LyA0i{1)`D)f~4-pps)(Q3n=vedFTTNbzg$oHd z-PNJe)S0@^E!V9f5XL=0c(v-Qs;u}0{I-~TSW6&7zZu+8-OKm>gJ+IU7EiBPu=qF8tGpte|-Ou!5Hzmnvp$mxuBeI`eg` zPrM5d*x{kzRG}_FI;mW`+%%-qehD~|LA{^#-hnrLKJ@h5_fI-HBd>Fgd%9n@`F^DI zIEc@GESCArw6D1%?=Pz2q~3V~xgq60{b>L2+by|H*RFMEK$#ji7w~md zb>@wsCXLk0RUOjGb*}T9OYxnvL(6@$uoVzWyEFPQ|qt)~` ziIBqlsjp^vMkhyRE)RsRy{_W_DA1Kxo0Um?u5ClAikHXSBkgq8YG@_+*Bs2n;vd zmKYK*g~|NptV5EbiX`yxlnJ};AC;OWG}7Guufmj?@Lyj#I(Z&vLCdW^(Fj!TTIXd5 zBBgmY%!iWu$CKFUT;=ppN6_id>?_hCZ^AC{x0kx=o(Mmn;sVlL-!e;q;jI)^Pe+x{ zV%N*mVJ&eZ0HY5|HDo&)v1Y+-eU@D>#Em+mY<^lkH{401cG|t?(^rP(8uRKI0Gz_sYP<{3L;l6Qu2*8!2OeuEEaD^v zrJ|sPSLQK3gsa8EcJ%wYF_mVTsli{GhJ46N@3h;5Afay00hL8yiZeicsTB;E301~x zQR;0*DNb7%MChDQpuF@xc%*0ggEsgsQNm4XnEv#pxIcy=h=M#h3{_(XN(~1nx%&;D z+bo6*Cq}*XQ0$QS&Wfk&SA=M$F&)N_ZO@h_4%x3y+m-(!@RkUw(Xm6ZIVy)XrV*|@ zPK-h1>@{MBKKnXw{-?jJ_%7mCk7`ttPwXF9%aPI-lYri>0`461F!yjdvd@e1K~{DD zqG_@`8r3w`8j=~W0gDB$eGsXbvKpq{9Tl~-0a!}B_gnBbOZVuwDcgcLlaa?7Zl>J) z)aXlVknx)b2j;Zrj7P6+E+pQ_Mj-4L07MpLxoVCmIlM2f71}bDrJ`-A%ITC(^f(=e z7@z`vmfP<#!1UV_eQ87WoqN2`nQoY$j>hAzCWa(Nd|6~ay*oRAo-5DKhG=hBKV2=$ za{J>%yC53h`V*J!%|l%PMNK_cQ{u=Ey}v&b>JH{v@CIm^U%$|sC9iL}IM^#SNQX9C zVCbbmx$Dw`H06Rj;q_Ba#*7AXdbV6Zydju1eRJ`0BYz+Xo2C@@0?fs1rv;EiZni@SONmM{uzf zy%+dKm8=^LadrUPk8Zo-H@=)_p8$@-@?W)t@M4io8d$l0Pe9+sBcga3ovXTsX5N5p zA#Z@~vF!jaYvZ&|b|vP44xLI{1}L-g)`4=q+kEN7W-K+7rSm=IcH3e)C)HS3(#^Y- z@~5nZ@=82qjy2|s!1pcC%|aJDo^cJ!;?Aix61WT|ZY!)EI-_iKq0ahk_3a6;5(#3I z;n&x;1w@84G6o04Ro4^&4cM635lTs|D|@~Ds6XH+eLJpCPSM{pl2jJ@F>Y-8U5>zN zOk%?}4BfLX?LXihJN06qMxqKkHsufSbTPilYuWW}KdP`B9m{k=BFf7^+vdVA0@@Jo zh;B61R>M4)J5>JGQJweAD{k(^lxZMGh%}Ce+>%G~0r7Mo@^eD5oHHg4D`|X&Ec0FA z5P$tzsuC6>&zEyH*sb1P@q4E%)Ca4z*AJLky9im%f@eA&wQG)`YF^k&JhXV7TFhSzg9kyW&-P%DomslTg;_?TishDe{ z`>P4W_O(S8I1$Oxj6Acx(c9}0(z@tZsXrJM$_tx7Um0WA54Pp8Xx3G?CPGR7RZ^zEvIAFI4*Z7BbEY?F8H2Oe$|fbv|FaQQ?(Jfc(G#yoT5s zZSxMsze^6@%u}d06_+HhfyU%f+nKu@?Hh1cw2b&2h+)76GMabv<3lqcIMiO|3Sc^# z3%pg5Prf&X>GPCvR_zUtg{?s5O1hKCmv|!BNHmir*oNz^=oKmk%$oRCXOpxPazV)# z!X|A2*#Jdkp&Gjft7i%;G$`2dw5|h#bhneYH2Sg2?eKD>KoJ8E;<4JJ4Ogyi5)0*><{sQ_SDoIoMAJciR%0-u2x1)D#pQl3$*icePslD!o0#^epiR1?+S`t; z_8M(`Y6(@3;>I66y)YTw3GR~g-_rD4kG;*ck?3cgx=v!q66~%eF+YXEj7uF8hKvy} z1TD|KG=bVnc;4ZgR^FSd3Nt^H(vdAF7xTJxm)4;G3t*f4P6lfdvFX5(zRqheRXp^`zqr{qABD>zO-s8u2%=*@8+6Zi9u3WZ`7ost38{!{Pc$m8d*p=115+Dvi39c_YkKa{Z(HQ65 zl+@v*?%rP_4^zSc!3zp@Z}o=c;mw~VBLhBZ2jVykU*{8D{Z)Pb8m})r01k^VKxoLH z+eI|8$EVh2+@CJMt(#0-?qiQR7mJI(Ls<5ZC?^kXNVNX6AG5=+#qmJE662E<9Jwha zzsw(5{lts#D}anxV3UCgKwvewUx((B#7o04G+{2prY~sxW2fmcuCKZL2*X8JSQk)8 zi6PGhr?nUAJ8LT`tdfCw-;9l$?%SjRA%P$7dx6YdOtbb=VwStGh5y+R^;Xn}j8~GS zOcyO;E>2Xjh!qa9=3oiGo-{c&vp{(evNp;0n$p|I`tjO!RB)15NwS0ho1H!{lS5M1 zMjK|rRG)zLj zf3f4eR8*4!=5ao@(Tzy-7EHjwCUYf@m&S_5ClXl^Cll`#5S*VS&ZTXO{V}+RS?(DF z)XvoSts5B<=So^th*5){WNd|RX}Y$Wtr4$g4D+G-*OQqSM{fjlsp>G7=19FuS?=t= zmh|qaNk8*58BDr#-!C-%nyffHT}o^E1ByMS@no79xB!G15iPk1MoD zm}#3;SCj+UhZE@ok-^2d28V^U?2F)ES`zExs7)#xT2p$l*==HLYh5~Khldmnh&UFH zn{(DD>}q?La^BrN6fl;l`Dbcdl79hY_13e-PHp1DHzW)?&qw!tL3#78m8Zqt*Fu^} zadW?n60%;IdrwLvmt2stL3;we=0u+A)79VG=@~+kd^|(YZQ*?gg)gV^_kR9yn&dN|*n7Imetpi&>_w{%zW!$B04z5z4Id^a0(HxmJ z=fgo~FSL2L*k+XJ-DwJZ7x^N&?LEo!WZ1<+iUm19j^=Frul%KK!gC#b>|9y)XIz#o zkk>U$qsW!Iw?C;P-MyjkcSgtNo(0X(@0}9cMxuA$&m7O+d7J%8_f!la@>d=n7yI9M z5AbUN#~WWlMFoQ%jQ{7-zY{$#pEOth`fs-9{J|&9{#UPD{x<-04B{;KZ>;Cmv15?l zmrox2oBg>sUMu|1=N|m);>GczOUL*98~eH2?kW4<+d6pc$-TSnp!=5(Df~Bfv}<=V zPVb+z(Zyo|yOZPhK2$RK_qGo~qy7mR-MzRMh$HR)-Qw}Tx2(iw{F5=-b#FhAM3Ox6 z^x(hG;>sxH-w*pm^0zCa8mE+wANuE>fCnJ(?|<8Q06QaKXA11pfSn?^vkL4igFAh| zP9yYBbGFk7?zF-?SYQVX?V!Pb@a_&A-r)mw2$3B|XonKp;RJU`(H&NJhZg^bs^8HC zc7%}~WoSnl`v)uSXoEZA=#DzPBaiR+19l7&I}VW@i_DHkXvZY=k8x|qCAMRe`~Sr! z$X4E6v1`}vBny*E4u22u{|8l~twdauwZN`jch7zyFy~yZ3%`;9saG@tZFD{!^2G%@hCkE