├── .gitignore ├── .travis.yml ├── Cartfile ├── Cartfile.resolved ├── LICENSE ├── README.md ├── ReSwift-Todo.xcodeproj ├── project.pbxproj └── xcshareddata │ └── xcschemes │ └── ReSwift-Todo-macOS.xcscheme ├── ReSwift-Todo ├── AppDelegate.swift ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── Base.lproj │ ├── MainMenu.xib │ └── ToDoListWindowController.xib ├── CheckBox.swift ├── Clock.swift ├── CollectionType+ReSwiftTodo.swift ├── DateConverter.swift ├── ErrorHandling.swift ├── Info.plist ├── KeyboardEventHandler.swift ├── LoggingMiddleware.swift ├── NotUndoable.swift ├── PatchingResponder.swift ├── RemoveIdempotentActionsMiddleware.swift ├── SelectionActions.swift ├── SelectionReducer.swift ├── SelectionState.swift ├── StreamReader.swift ├── String+ReSwiftTodo.swift ├── ToDo.swift ├── ToDoActions.swift ├── ToDoCellView.swift ├── ToDoDocument.swift ├── ToDoID.swift ├── ToDoLineTokenizer.swift ├── ToDoList.swift ├── ToDoListActions.swift ├── ToDoListImporter.swift ├── ToDoListPresenter.swift ├── ToDoListReducer.swift ├── ToDoListSerializer.swift ├── ToDoListState.swift ├── ToDoListStore.swift ├── ToDoListViewModel.swift ├── ToDoListWindowController.swift ├── ToDoReducer.swift ├── ToDoTableDataSource.swift ├── ToDoTableView.swift ├── ToDoViewModel.swift ├── UndoActionContext.swift ├── UndoCommand.swift ├── UndoMiddleware.swift └── Undoable.swift ├── ReSwift-TodoTests ├── ClockStub.swift ├── DateConverterTests.swift ├── ErrorHelpers.swift ├── Helpers.swift ├── Info.plist ├── NullToDoTableDataSource.swift ├── SelectionReducerTests.swift ├── ToDoCellViewTests.swift ├── ToDoLineTokenizerTests.swift ├── ToDoListImporterTests.swift ├── ToDoListReducerTests.swift ├── ToDoListSerializerTests.swift ├── ToDoListTests.swift ├── ToDoListWindowControllerTests.swift ├── ToDoReducerTests.swift ├── ToDoTableDataSourceTests.swift ├── ToDoTests.swift ├── complex.txt └── short.txt └── screenshots └── macos.png /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/.gitignore -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/.travis.yml -------------------------------------------------------------------------------- /Cartfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/Cartfile -------------------------------------------------------------------------------- /Cartfile.resolved: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/Cartfile.resolved -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/README.md -------------------------------------------------------------------------------- /ReSwift-Todo.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /ReSwift-Todo.xcodeproj/xcshareddata/xcschemes/ReSwift-Todo-macOS.xcscheme: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo.xcodeproj/xcshareddata/xcschemes/ReSwift-Todo-macOS.xcscheme -------------------------------------------------------------------------------- /ReSwift-Todo/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/AppDelegate.swift -------------------------------------------------------------------------------- /ReSwift-Todo/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /ReSwift-Todo/Base.lproj/MainMenu.xib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/Base.lproj/MainMenu.xib -------------------------------------------------------------------------------- /ReSwift-Todo/Base.lproj/ToDoListWindowController.xib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/Base.lproj/ToDoListWindowController.xib -------------------------------------------------------------------------------- /ReSwift-Todo/CheckBox.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/CheckBox.swift -------------------------------------------------------------------------------- /ReSwift-Todo/Clock.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/Clock.swift -------------------------------------------------------------------------------- /ReSwift-Todo/CollectionType+ReSwiftTodo.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/CollectionType+ReSwiftTodo.swift -------------------------------------------------------------------------------- /ReSwift-Todo/DateConverter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/DateConverter.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ErrorHandling.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ErrorHandling.swift -------------------------------------------------------------------------------- /ReSwift-Todo/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/Info.plist -------------------------------------------------------------------------------- /ReSwift-Todo/KeyboardEventHandler.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/KeyboardEventHandler.swift -------------------------------------------------------------------------------- /ReSwift-Todo/LoggingMiddleware.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/LoggingMiddleware.swift -------------------------------------------------------------------------------- /ReSwift-Todo/NotUndoable.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/NotUndoable.swift -------------------------------------------------------------------------------- /ReSwift-Todo/PatchingResponder.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/PatchingResponder.swift -------------------------------------------------------------------------------- /ReSwift-Todo/RemoveIdempotentActionsMiddleware.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/RemoveIdempotentActionsMiddleware.swift -------------------------------------------------------------------------------- /ReSwift-Todo/SelectionActions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/SelectionActions.swift -------------------------------------------------------------------------------- /ReSwift-Todo/SelectionReducer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/SelectionReducer.swift -------------------------------------------------------------------------------- /ReSwift-Todo/SelectionState.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/SelectionState.swift -------------------------------------------------------------------------------- /ReSwift-Todo/StreamReader.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/StreamReader.swift -------------------------------------------------------------------------------- /ReSwift-Todo/String+ReSwiftTodo.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/String+ReSwiftTodo.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDo.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDo.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoActions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoActions.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoCellView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoCellView.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoDocument.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoDocument.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoID.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoID.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoLineTokenizer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoLineTokenizer.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoList.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoList.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoListActions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoListActions.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoListImporter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoListImporter.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoListPresenter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoListPresenter.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoListReducer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoListReducer.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoListSerializer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoListSerializer.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoListState.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoListState.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoListStore.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoListStore.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoListViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoListViewModel.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoListWindowController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoListWindowController.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoReducer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoReducer.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoTableDataSource.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoTableDataSource.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoTableView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoTableView.swift -------------------------------------------------------------------------------- /ReSwift-Todo/ToDoViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/ToDoViewModel.swift -------------------------------------------------------------------------------- /ReSwift-Todo/UndoActionContext.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/UndoActionContext.swift -------------------------------------------------------------------------------- /ReSwift-Todo/UndoCommand.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/UndoCommand.swift -------------------------------------------------------------------------------- /ReSwift-Todo/UndoMiddleware.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/UndoMiddleware.swift -------------------------------------------------------------------------------- /ReSwift-Todo/Undoable.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-Todo/Undoable.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/ClockStub.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/ClockStub.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/DateConverterTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/DateConverterTests.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/ErrorHelpers.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/ErrorHelpers.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/Helpers.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/Helpers.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/Info.plist -------------------------------------------------------------------------------- /ReSwift-TodoTests/NullToDoTableDataSource.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/NullToDoTableDataSource.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/SelectionReducerTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/SelectionReducerTests.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/ToDoCellViewTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/ToDoCellViewTests.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/ToDoLineTokenizerTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/ToDoLineTokenizerTests.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/ToDoListImporterTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/ToDoListImporterTests.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/ToDoListReducerTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/ToDoListReducerTests.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/ToDoListSerializerTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/ToDoListSerializerTests.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/ToDoListTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/ToDoListTests.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/ToDoListWindowControllerTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/ToDoListWindowControllerTests.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/ToDoReducerTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/ToDoReducerTests.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/ToDoTableDataSourceTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/ToDoTableDataSourceTests.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/ToDoTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/ToDoTests.swift -------------------------------------------------------------------------------- /ReSwift-TodoTests/complex.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/complex.txt -------------------------------------------------------------------------------- /ReSwift-TodoTests/short.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/ReSwift-TodoTests/short.txt -------------------------------------------------------------------------------- /screenshots/macos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReSwift/ReSwift-Todo-Example/HEAD/screenshots/macos.png --------------------------------------------------------------------------------