Markdown Math
Build
I'll assume the myscript version is 2.0.1.
Download MyScriptInteractiveInk-Runtime-iOS and unzip at the project root.
Place ingun.markdown-math.c
that is sent you by email under MyCertificate/ folder.
The version is fixed to 2.0.1 in the ci_scripts/ci_post_clone.sh
script.
Linting
Use SwiftLint.
# install
brew install swiftlint
# run
swiftlint --fix --strict markdown-math/*.swift
How to run MyScript Examples on your iPad
- Change the sample's bundle identifier to
ingun.markdown-math
. - Copy the contents of
/MyCertificate/ingun.markdown-math.c
and paste to.../MyCertificate.c
Implement MyScript Demo
Download sample from myscript/interactive-ink-examples-ios.
Import Demo and Frameworks to project. Choose Create groups when adding the folders.
Make some changes.
Header search path
Add ${SRCROOT}/Frameworks
or wherever the Frameworks
folder is to Header Search Paths as recursive.
Remove conflicting project data
Remove Demo/Supporting Files/
and Demo/Classe/Utils/AppDelegate.swift
and Demo/MyCertificate/
Change Prev and Next to Cancel and Done
In Main.storyboard
, change the Prev and Next at the bottom toolbar to Cancel and Done by setting System Item
. Remove + button.
In MainViewModel
, set default value of previousButtonEnabled
and nextButtonEnabled
to true. It has to remain true and never change so search for all their usages and delete.
Remove + button at the bottom toolbar and addPartBarButtonItem
and their usages from MainViewController
.
Notify Done and Cancel
In EditorWorker.swift
, Call MyScriptSampleObserver.done(tex: String)
and MyScriptSampleObserver.cancel()
from func loadNextPart()
and func loadPreviousPart()
respectively.
func loadNextPart() {
if let editor = self.editor,
let part = editor.part{
let type = part.type
editor.waitForIdle() // Waits until part modification operations are over.
if let aaa = try? editor.export(selection: editor.rootBlock,
mimeType: IINKMimeType.laTeX
) {
MyScriptSampleObserver.shared().delegate?.done(tex: aaa)
}
}
}
func loadPreviousPart() {
MyScriptSampleObserver.shared().delegate?.cancel()
}
Import LaTex to editor
In MainViewModel
, append following code to didLoadPart()
func didLoadPart(title: String, index: Int, partCount: Int) {
// ...
if let editor = self.editor, let tex = MyScriptSampleObserver.shared().latex {
try? editor.import(mimeType: IINKMimeType.laTeX, data: tex, selection: editor.rootBlock)
}
}
Bundle Resources
Go to project setting > Build Phases > Copy Bundle Resources and add .../recognition-assets
as folder.
Remove all the individual files under recognition-assets added by adding Demo
folder before.
Import Swift into ObjC
In SmartGuideViewController.mm
, change Swift module import header to #import "markdown_math-Swift.h"
Remevo redundant UI components
In Demo/Clasess/Scenes/Main.storyboard
, remove Navigation Item > Right Bar Button Items > More Bar Button Item.
In Demo/Classes/Scenes/Toolbar/Toolbar.storyboard
, remove Highlighter, Style, and Lasso button.
Diagram
classDiagram
EditorDelegate <|-- MainViewModel
MainViewModelEditorLogic <|-- MainViewModel
MainViewModelEditorLogic : didLoadPart()
MainViewController o-- MainViewModel
MainViewController o-- MainCoordinator : coordinator
MainCoordinator : displayEditor()
MainViewModel <-- EditorViewModel : editorDelegate
EditorViewModel : initEditor()
EditorViewModel : setupModel()
EditorDelegate : didCreateEditor()
EditorWorker --> MyScriptSampleObserver
MainViewModel o-- EditorWorker
MainCoordinator --> EditorViewModel : (create)
SwiftDown
iOS
classDiagram
UIViewRepresentable <|-- SwiftDownEditor
SwiftDownEditor o-- Coordinator
UITextViewDelegate <|-- Coordinator
SwiftDown --> Coordinator : delegate
UITextView <|-- SwiftDown
Coordinator --> SwiftDownEditor : parent
SwiftDown o-- Storage
MacOS
classDiagram
NSTextView <|-- CustomTextView
CustomTextView o-- Storage
NSView <|-- SwiftDown
SwiftDown o-- CustomTextView
SwiftDownEditor o-- SwiftDown
NSViewRepresentable <|-- SwiftDownEditor
SwiftDownEditor o-- Coordinator
NSTextViewDelegate <|-- Coordinator
Coordinator --> SwiftDownEditor : parent
Storage : +MarkdownNode[] markdownNodes
Coordinator <-- CustomTextView : delegate