Skip to content

Commit

Permalink
📛 Rename Transition to Procedure [#64]
Browse files Browse the repository at this point in the history
** UPDATE **
 - Scenario's protocol is named `Transition`, but scenario does not transition, but handle transtion.
 - So, scenario close to procedure rather than transition
 - `Transition` keyword will be used other class
  • Loading branch information
crexista committed Jun 19, 2017
1 parent 03f1a2e commit f293a48
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 29 deletions.
4 changes: 2 additions & 2 deletions KabuKit/Classes/core/Swift/Scenario.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import Foundation
一つのSceneごとにつくられる
*/
public class Scenario<Current: Screen, Stage> : Transition {
public class Scenario<Current: Screen, Stage> : Procedure {

internal typealias Transitioning = (Current, Stage, Any?) -> Void

Expand Down Expand Up @@ -35,7 +35,7 @@ public class Scenario<Current: Screen, Stage> : Transition {
name = String(reflecting: fromType)
}

internal func setup<S>(at: Screen, on stage: S, with: SceneContainer, when rewind: Transition.Rewind?) {
internal func setup<S>(at: Screen, on stage: S, with: SceneContainer, when rewind: Procedure.Rewind?) {
self.setup(at: at, on: stage, with: with, when: rewind, {})
}

Expand Down
28 changes: 14 additions & 14 deletions KabuKit/Classes/core/Swift/SceneOperation.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ import Foundation
*/
public class SceneOperation<Stage> {

private var scenedTransition = [String : Transition]()
private var scenedProcedure = [String : Procedure]()

private var anyTransition: Transition?
private var anyProcedure: Procedure?

private let anyTransitionName: String
private let anyProcedureName: String

/**
指定したSceneでのScenarioのフローを定義します
Expand All @@ -37,7 +37,7 @@ public class SceneOperation<Stage> {
*/
public func at<From: Scene>(_ fromType: From.Type, _ run: (Scenario<From, Stage>) -> Void) {
let scenario = Scenario<From, Stage>(fromType)
scenedTransition[scenario.name] = scenario
scenedProcedure[scenario.name] = scenario
run(scenario)
}

Expand All @@ -60,28 +60,28 @@ public class SceneOperation<Stage> {
- Parameters:
- run: Scenarioを使ったフロー
*/
public func atAnyScene(run: (Scenario<AnyTransition, Stage>) -> Void){
anyTransition = anyTransition ?? Scenario<AnyTransition, Stage>(AnyTransition.self)
guard let scenario = anyTransition as? Scenario<AnyTransition, Stage> else { return }
scenedTransition[anyTransitionName] = scenario
public func atAnyScene(run: (Scenario<AnyProcedure, Stage>) -> Void){
anyProcedure = anyProcedure ?? Scenario<AnyProcedure, Stage>(AnyProcedure.self)
guard let scenario = anyProcedure as? Scenario<AnyProcedure, Stage> else { return }
scenedProcedure[anyProcedureName] = scenario
run(scenario)
}

internal func resolve(from: Screen) -> Transition? {
internal func resolve(from: Screen) -> Procedure? {
let name = String(reflecting: type(of: from))
print(name)
return scenedTransition[name]
return scenedProcedure[name]
}

internal func resolve() -> Transition? {
return scenedTransition[anyTransitionName]
internal func resolve() -> Procedure? {
return scenedProcedure[anyProcedureName]
}

internal init() {
anyTransitionName = String(reflecting: AnyTransition.self)
anyProcedureName = String(reflecting: AnyProcedure.self)
}
}

public class AnyTransition: Screen {
public class AnyProcedure: Screen {
internal init() {}
}
8 changes: 4 additions & 4 deletions KabuKit/Classes/core/Swift/SceneSequence.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Foundation

internal var transitionByScene = [ScreenHashWrapper : Transition]()
internal var ProcedureByScene = [ScreenHashWrapper : Procedure]()

/**
複数のSceneを管理し、それぞれからの遷移リクエストを受け付け画面切り替えを行うクラス
Expand All @@ -17,7 +17,7 @@ public class SceneSequence<C, G: Guide> : Scene, SceneContainer {

private var scenes: [Screen]

private var currentTransition: Transition?
private var currentProcedure: Procedure?

private let isRecordable: Bool

Expand All @@ -33,15 +33,15 @@ public class SceneSequence<C, G: Guide> : Scene, SceneContainer {
guard let scenario = self.operation?.resolve(from: screen) else { return }
let hashwrap = ScreenHashWrapper(screen)
self.scenes.append(screen)
transitionByScene[hashwrap] = scenario
ProcedureByScene[hashwrap] = scenario
contextByScreen[hashwrap] = context
scenario.setup(at: screen, on: self.stage!, with: self, when: rewind)
}

internal func remove(screen: Screen, completion: () -> Void) {
let hashwrap = ScreenHashWrapper(screen)
_ = self.scenes.popLast()
transitionByScene.removeValue(forKey: hashwrap)
ProcedureByScene.removeValue(forKey: hashwrap)
contextByScreen.removeValue(forKey: hashwrap)
}

Expand Down
8 changes: 4 additions & 4 deletions KabuKit/Classes/core/Swift/Screen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ public protocol Screen : class {
extension Screen {


internal var transition: Transition? {
return transitionByScene[ScreenHashWrapper(self)]
internal var Procedure: Procedure? {
return ProcedureByScene[ScreenHashWrapper(self)]
}


Expand All @@ -45,7 +45,7 @@ extension Screen {


public func leave(_ completion: @escaping (Bool) -> Void) -> Void {
self.transition?.back(completion)
self.Procedure?.back(completion)
}

public func send<T>(_ request: Request<T>) -> Void {
Expand All @@ -54,7 +54,7 @@ extension Screen {


public func send<T>(_ request: Request<T>, _ completion: @escaping (Bool) -> Void) -> Void {
transition?.start(at: request, completion)
Procedure?.start(at: request, completion)
}

}
Expand Down
10 changes: 5 additions & 5 deletions KabuKit/Classes/core/Swift/Transition.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@
import Foundation

/**
画面遷移を示したプロトコル
画面を切り替える手順を示したプロトコル
*/
protocol Transition {
protocol Procedure {

typealias Rewind = () -> Void

/**
Trnasitionを実行するために必要なパラメータをセットする
Procedureを実行するために必要なパラメータをセットする
- Parameters:
- at: どこの画面のTransitionか指定するため
- at: どこの画面のProcedureか指定するため
- stage: Transionを行うベースとなるメソッド
- rewind: 前の画面に戻る為の処理
*/
Expand All @@ -25,7 +25,7 @@ protocol Transition {
func setup<S>(at: Screen, on stage: S, with: SceneContainer, when rewind: Rewind?, _ completion: @escaping () -> Void)

/**
Transitionを実行する
Procedureを実行する
- Parameters:
- request: aa
Expand Down

0 comments on commit f293a48

Please sign in to comment.