Skip to content

Commit

Permalink
Introducing Stagehand
Browse files Browse the repository at this point in the history
  • Loading branch information
NickEntin committed Jan 16, 2020
0 parents commit 0949c98
Show file tree
Hide file tree
Showing 101 changed files with 11,358 additions and 0 deletions.
32 changes: 32 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# OS X
.DS_Store

# Xcode
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
*.xccheckout
profile
*.moved-aside
DerivedData
*.hmap
*.ipa

# Bundler
.bundle

# Carthage
Carthage/Build

# CocoaPods
Pods/

# Swift Playgrounds
timeline.xctimeline
8 changes: 8 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
osx_image: xcode10.3
language: objective-c
install:
- bundle install --gemfile=Example/Gemfile
- bundle exec --gemfile=Example/Gemfile pod install --project-directory=Example
script:
- set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/Stagehand.xcworkspace -scheme "Stagehand Demo App" -sdk iphonesimulator12.4 ONLY_ACTIVE_ARCH=NO | xcpretty
- bundle exec --gemfile=Example/Gemfile pod lib lint
23 changes: 23 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
### Sign the CLA

All contributors to your PR must sign our [Individual Contributor License Agreement (CLA)](https://spreadsheets.google.com/spreadsheet/viewform?formkey=dDViT2xzUHAwRkI3X3k5Z0lQM091OGc6MQ&ndplr=1). The CLA is a short form that ensures that you are eligible to contribute.

### One Issue per Pull Request

Keep your Pull Requests small. Small PRs are easier to reason about which makes them significantly more likely to get merged.

### Issues Before Features

If you want to add a feature, please file an [Issue](https://github.com/CashApp/Stagehand/issues) first. An Issue gives us the opportunity to discuss the requirements and implications of a feature with you before you start writing code.

### Backwards Compatibility

Respect the minimum deployment target. If you are adding code that uses new APIs, make sure to prevent older clients from crashing or misbehaving. Our CI runs against our minimum deployment targets, so you will not get a green build unless your code is backwards compatible.

### Forwards Compatibility

Please do not write new code using deprecated APIs.

### Keep the Demo App and Documentation Updated

When adding new features or making changes to existing features, make sure to update the included demo app and tutorial playground so new users can understand what's available.
3 changes: 3 additions & 0 deletions Example/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source 'https://rubygems.org' do
gem 'cocoapods', '~> 1.8'
end
83 changes: 83 additions & 0 deletions Example/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.1)
activesupport (4.2.11.1)
i18n (~> 0.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
algoliasearch (1.27.1)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
atomos (0.1.3)
claide (1.0.3)
cocoapods (1.8.4)
activesupport (>= 4.0.2, < 5)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.8.4)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 1.2.2, < 2.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
cocoapods-search (>= 1.0.0, < 2.0)
cocoapods-stats (>= 1.0.0, < 2.0)
cocoapods-trunk (>= 1.4.0, < 2.0)
cocoapods-try (>= 1.1.0, < 2.0)
colored2 (~> 3.1)
escape (~> 0.0.4)
fourflusher (>= 2.3.0, < 3.0)
gh_inspector (~> 1.0)
molinillo (~> 0.6.6)
nap (~> 1.0)
ruby-macho (~> 1.4)
xcodeproj (>= 1.11.1, < 2.0)
cocoapods-core (1.8.4)
activesupport (>= 4.0.2, < 6)
algoliasearch (~> 1.0)
concurrent-ruby (~> 1.1)
fuzzy_match (~> 2.0.4)
nap (~> 1.0)
cocoapods-deintegrate (1.0.4)
cocoapods-downloader (1.2.2)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.0)
cocoapods-stats (1.1.0)
cocoapods-trunk (1.4.1)
nap (>= 0.8, < 2.0)
netrc (~> 0.11)
cocoapods-try (1.1.0)
colored2 (3.1.2)
concurrent-ruby (1.1.5)
escape (0.0.4)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
httpclient (2.8.3)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
json (2.2.0)
minitest (5.12.2)
molinillo (0.6.6)
nanaimo (0.2.6)
nap (1.1.0)
netrc (0.11.0)
ruby-macho (1.4.0)
thread_safe (0.3.6)
tzinfo (1.2.5)
thread_safe (~> 0.1)
xcodeproj (1.13.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.2.6)

PLATFORMS
ruby

DEPENDENCIES
cocoapods (~> 1.8)!

BUNDLED WITH
1.17.3
68 changes: 68 additions & 0 deletions Example/Performance Tests/AnimationCurvePerformanceTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
//
// Copyright 2019 Square Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

import Stagehand
import XCTest

final class AnimationCurvePerformanceTests: XCTestCase {

func testParabolicEaseInPerformance() {
let curve = ParabolicEaseInAnimationCurve()
measure {
for _ in 0...100 {
for i in 0...10000 {
let progress = Double(i) / 10000
_ = curve.adjustedProgress(for: progress)
}
}
}
}

func testParabolicEaseOutPerformance() {
let curve = ParabolicEaseOutAnimationCurve()
measure {
for _ in 0...100 {
for i in 0...10000 {
let progress = Double(i) / 10000
_ = curve.adjustedProgress(for: progress)
}
}
}
}

func testSinusoidalEaseInEaseOutPerformance() {
let curve = SinusoidalEaseInEaseOutAnimationCurve()
measure {
for _ in 0...100 {
for i in 0...10000 {
let progress = Double(i) / 10000
_ = curve.adjustedProgress(for: progress)
}
}
}
}

func testCubicBezierEaseInPerformance() {
let curve = CubicBezierAnimationCurve.easeIn
measure {
for i in 0...10000 {
let progress = Double(i) / 10000
_ = curve.adjustedProgress(for: progress)
}
}
}

}
22 changes: 22 additions & 0 deletions Example/Performance Tests/Info.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
21 changes: 21 additions & 0 deletions Example/Podfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
use_frameworks!

platform :ios, '10.0'

target 'Stagehand_Example' do
pod 'Stagehand', :path => '../'

target 'Stagehand-UnitTests' do
inherit! :search_paths

pod 'StagehandTesting', :path => '../'
end

target 'Stagehand-PerformanceTests' do
inherit! :search_paths

pod 'Stagehand', :path => '../'
end
end

install! 'cocoapods', disable_input_output_paths: true
33 changes: 33 additions & 0 deletions Example/Podfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
PODS:
- iOSSnapshotTestCase (6.2.0):
- iOSSnapshotTestCase/SwiftSupport (= 6.2.0)
- iOSSnapshotTestCase/Core (6.2.0)
- iOSSnapshotTestCase/SwiftSupport (6.2.0):
- iOSSnapshotTestCase/Core
- Stagehand (1.0)
- StagehandTesting (1.0):
- iOSSnapshotTestCase (~> 6.1)
- Stagehand (= 1.0)

DEPENDENCIES:
- Stagehand (from `../`)
- StagehandTesting (from `../`)

SPEC REPOS:
trunk:
- iOSSnapshotTestCase

EXTERNAL SOURCES:
Stagehand:
:path: "../"
StagehandTesting:
:path: "../"

SPEC CHECKSUMS:
iOSSnapshotTestCase: 9ab44cb5aa62b84d31847f40680112e15ec579a6
Stagehand: 98d49307100b8f506e18a101d87d3a7079f8e80b
StagehandTesting: 62f623e597e5935c91bd78b735b60351bf607f64

PODFILE CHECKSUM: e2058eb578e4d6fb432b015c43b4e221c1b70e87

COCOAPODS: 1.8.4
Loading

0 comments on commit 0949c98

Please sign in to comment.