material-motion-archive / runtime-objc Goto Github PK
View Code? Open in Web Editor NEWArchived February 16, 2017 :: Material Motion Runtime for Apple devices
License: Apache License 2.0
Archived February 16, 2017 :: Material Motion Runtime for Apple devices
License: Apache License 2.0
We're presently at 58%.
Can use arc lint --everything
to identify missing API docs.
An ideal proof of concept will be a unit test that is able to encode a plan to disk, read the plan from disk, and ultimately execute the plan in a runtime.
For the purposes of this proof of concept we can use simple plist serialization.
This proof of concept would be best realized as a unit test.
Create two types: TestPlan
and TestPerformer
.
TestPlan
performerClass
is always TestPerformer
.TestPerformer
Executes plan blocks at relevant stages.
E.g. addPlan
might look like:
- addPlan:plan {
plan.addPlan();
}
The unit test code would look like:
plan.addPlan = ^{
// Run some logic.
};
// commit
// XCTAssert statements
NamedPlan protocol must be conformed to by plans that support being named.
Test should confirm that a runtime eventually causes a plan to be fulfilled.
Serialization will allow us to transmit plans and transactions over the wire. This allows a variety of tools โ for creative and for inspecting โ to exist.
The owner of this task must first come up with an API that can be used to enumerate all plans and performers in the scheduler.
The API should be proposed as an addition to the Spec by sending an email to [email protected].
Specifically: propose as an addition to the Scheduler spec as "Feature: inspection".
Once the spec is approved, the API should be submitted for review and committed.
SpriteKit family? Director?
Needs research. How to proceed.
This test must make the scheduler to change its activity state and inform a delegate of the change.
The scheduler's activity state can be changed by adding a plan that does some remote form of execution. For the purposes of the test this remote execution could be instantaneous.
Ideally there's an objective-c and swift-specific variant of this documentation as well.
The .md
file should go in docs/
as per our conventions.
Latest coverage results as of 3b1ddba:
52% src/private/MDMPerformerGroup.m
Untested methods:
- (void)setUpFeaturesForPerformerInfo:(MDMPerformerInfo *)performerInfo
delegated performance.- (id<MDMPerforming>)performerForPlan:(id<MDMPlan>)plan
for a plan being registered to an existing performer.Following our objective-c library conventions, create an examples/
directory with various view controllers.
https://github.com/google/arc-jazzy-linter
This will give us documentation linter warnings for undocumented APIs.
Test assertions:
Should lazily create an MDMTransitionController instance and assign it to the transitioningDelegate
delegatedExecutionWillStartNamed
and delegatedExecutionDidEndNamed
should be named delegatedPerformanceWillStartNamed
and delegatedPerformanceDidFinishNamed
As alternative to FB POP.
Requires research. Should we build?
How can we use state machines for complex multi-state systems with plans that are associated to each state?
Should it be a family?
All of the headers that are meant to be public must be imported by MaterialMotionRuntime.h
.
Send between devices and/or platforms.
s.homepage = "https://github.com/material-motion"
should be
s.homepage = "https://github.com/material-motion/material-motion-runtime-objc"
Need to define our iOS release process.
https://material-motion.gitbooks.io/material-motion-team/content/release_process/
UIGestureRecognizer support.
https://github.com/material-motion/material-motion-family-gestures-swift
How do we allow tweens to be automatically reversible?
Should those be a family?
How do we describe plans on a timeline? Should this be a family?
Test assertions:
When a UIView* is set as a target, should it have a strong or weak pointer?
Add a plan to the scheduler that kicks off some remote execution. Verify that the scheduler reports its activity state as "active". Similarly, verify that upon completion of the remote execution that the scheduler reports its activity state as "inactive".
This should be tested for zero, one, and many plans.
The repo's root readme needs:
Current API:
[strongSelf.delegate performerGroup:strongSelf activeStateDidChange:NO];
New API:
[strongSelf.delegate performerGroup:strongSelf didChangeActivityStateTo:.idle];
Facebook POP SDK support.
May be similar to CoreAnimation family.
Make POP objects conform to MDMPlan?
This test should create a performer that requires delegated execution.
Likely just a basic application that shows the relevant example controllers in a two-level drill down interface.
Test assertions:
Latest report as of e7fb7fd.
62% src/MDMScheduler.m
Untested methods:
- (void)performerGroup:(MDMPerformerGroup *)performerGroup activeStateDidChange:(BOOL)isActive
- (MDMSchedulerActivityState)activityState
Add NS_DESIGNATED_INITIALIZER
to the end of its declaration in Tween.h
.
-init
should also be marked as NS_UNAVAILABLE
.
Output:
arc unit --everything
BROKEN UnitTests
/Users/featherless/workbench/odeon/material-motion-runtime-objc/tests/unit/TestSchedulerDelegate.swift:20:46: error: 'MDMSchedulerDelegate' has been renamed to 'SchedulerDelegate'
BROKEN UnitTests
/Users/featherless/workbench/odeon/material-motion-runtime-objc/tests/unit/TestSchedulerDelegate.swift:23:53: error: 'MDMScheduler' has been renamed to 'Scheduler'
BROKEN UnitTests
/Users/featherless/workbench/odeon/material-motion-runtime-objc/tests/unit/DelegatedPerformanceTests.swift:37:38: error: 'MDMPlan' has been renamed to 'Plan'
BROKEN UnitTests
/Users/featherless/workbench/odeon/material-motion-runtime-objc/tests/unit/DelegatedPerformanceTests.swift:43:43: error: 'MDMPlanPerforming' has been renamed to 'PlanPerforming'
BROKEN UnitTests
/Users/featherless/workbench/odeon/material-motion-runtime-objc/tests/unit/DelegatedPerformanceTests.swift:43:62: error: 'MDMDelegatedPerforming' has been renamed to 'DelegatedPerforming'
BROKEN UnitTests
/Users/featherless/workbench/odeon/material-motion-runtime-objc/tests/unit/DelegatedPerformanceTests.swift:52:20: error: 'MDMPlan' has been renamed to 'Plan'
BROKEN UnitTests
/Users/featherless/workbench/odeon/material-motion-runtime-objc/tests/unit/DelegatedPerformanceTests.swift:23:23: error: 'MDMTransaction' has been renamed to 'Transaction'
BROKEN UnitTests
/Users/featherless/workbench/odeon/material-motion-runtime-objc/tests/unit/DelegatedPerformanceTests.swift:26:21: error: 'MDMScheduler' has been renamed to 'Scheduler'
BROKEN UnitTests
/Users/featherless/workbench/odeon/material-motion-runtime-objc/tests/unit/TestSchedulerDelegate.swift:20:46: error: 'MDMSchedulerDelegate' has been renamed to 'SchedulerDelegate'
Need to hook up jazzy.
Place the following file in the root of the repo:
.jazzy.yaml
module: MaterialMotionRuntime
umbrella_header: src/MaterialMotionRuntime.h
objc: true
sdk: iphonesimulator
arc/github issue tooling.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.