Skip to content

Commit 485c6f1

Browse files
committed
Added basic SubStation Alpha ass/ssa import
1 parent 9f1503b commit 485c6f1

File tree

17 files changed

+630
-66
lines changed

17 files changed

+630
-66
lines changed

Demos/Subtitle Viewer/Subtitle Viewer.xcodeproj/project.pbxproj

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@
172172
attributes = {
173173
BuildIndependentTargetsInParallel = 1;
174174
LastSwiftUpdateCheck = 1430;
175-
LastUpgradeCheck = 1430;
175+
LastUpgradeCheck = 1640;
176176
TargetAttributes = {
177177
234950E02A09AE90006A33D4 = {
178178
CreatedOnToolsVersion = 14.3;
@@ -284,9 +284,12 @@
284284
CLANG_WARN_UNREACHABLE_CODE = YES;
285285
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
286286
COPY_PHASE_STRIP = NO;
287+
DEAD_CODE_STRIPPING = YES;
287288
DEBUG_INFORMATION_FORMAT = dwarf;
289+
DEVELOPMENT_TEAM = 3L6RK3LGGW;
288290
ENABLE_STRICT_OBJC_MSGSEND = YES;
289291
ENABLE_TESTABILITY = YES;
292+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
290293
GCC_C_LANGUAGE_STANDARD = gnu11;
291294
GCC_DYNAMIC_NO_PIC = NO;
292295
GCC_NO_COMMON_BLOCKS = YES;
@@ -344,9 +347,12 @@
344347
CLANG_WARN_UNREACHABLE_CODE = YES;
345348
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
346349
COPY_PHASE_STRIP = NO;
350+
DEAD_CODE_STRIPPING = YES;
347351
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
352+
DEVELOPMENT_TEAM = 3L6RK3LGGW;
348353
ENABLE_NS_ASSERTIONS = NO;
349354
ENABLE_STRICT_OBJC_MSGSEND = YES;
355+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
350356
GCC_C_LANGUAGE_STANDARD = gnu11;
351357
GCC_NO_COMMON_BLOCKS = YES;
352358
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -373,7 +379,7 @@
373379
CODE_SIGN_STYLE = Automatic;
374380
COMBINE_HIDPI_IMAGES = YES;
375381
CURRENT_PROJECT_VERSION = 1;
376-
DEVELOPMENT_TEAM = 3L6RK3LGGW;
382+
DEAD_CODE_STRIPPING = YES;
377383
ENABLE_HARDENED_RUNTIME = YES;
378384
GENERATE_INFOPLIST_FILE = YES;
379385
INFOPLIST_FILE = "Subtitle Viewer/Info.plist";
@@ -386,7 +392,7 @@
386392
"@executable_path/../Frameworks",
387393
);
388394
MACOSX_DEPLOYMENT_TARGET = 13.0;
389-
MARKETING_VERSION = 2.1;
395+
MARKETING_VERSION = 3.1;
390396
PRODUCT_BUNDLE_IDENTIFIER = "org.dagronf.swiftsubtitles.Subtitle-Viewer";
391397
PRODUCT_NAME = "$(TARGET_NAME)";
392398
SWIFT_EMIT_LOC_STRINGS = YES;
@@ -403,7 +409,7 @@
403409
CODE_SIGN_STYLE = Automatic;
404410
COMBINE_HIDPI_IMAGES = YES;
405411
CURRENT_PROJECT_VERSION = 1;
406-
DEVELOPMENT_TEAM = 3L6RK3LGGW;
412+
DEAD_CODE_STRIPPING = YES;
407413
ENABLE_HARDENED_RUNTIME = YES;
408414
GENERATE_INFOPLIST_FILE = YES;
409415
INFOPLIST_FILE = "Subtitle Viewer/Info.plist";
@@ -416,7 +422,7 @@
416422
"@executable_path/../Frameworks",
417423
);
418424
MACOSX_DEPLOYMENT_TARGET = 13.0;
419-
MARKETING_VERSION = 2.1;
425+
MARKETING_VERSION = 3.1;
420426
PRODUCT_BUNDLE_IDENTIFIER = "org.dagronf.swiftsubtitles.Subtitle-Viewer";
421427
PRODUCT_NAME = "$(TARGET_NAME)";
422428
SWIFT_EMIT_LOC_STRINGS = YES;

Demos/Subtitle Viewer/Subtitle Viewer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Demos/Subtitle Viewer/Subtitle Viewer.xcodeproj/xcshareddata/xcschemes/Subtitle Viewer.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1430"
3+
LastUpgradeVersion = "1640"
44
version = "1.7">
55
<BuildAction
66
parallelizeBuildables = "YES"

Demos/Subtitle Viewer/Subtitle Viewer/DocumentController.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ import SwiftSubtitles
3232
/// Note that this is instantiated in the Storyboard
3333
class DocumentController: NSDocumentController {
3434

35+
override func documentClass(forType typeName: String) -> AnyClass? {
36+
return Document.self
37+
}
38+
3539
static var selected: String.Encoding? = nil
3640
var openAccessory: TextEncodingAccessoryView? = nil
3741

@@ -53,10 +57,10 @@ class DocumentController: NSDocumentController {
5357
UTType.json,
5458
UTType.lrc,
5559
UTType.ttml,
60+
UTType.advancedsubstationalpha,
61+
UTType.substationalpha,
5662
]
5763

58-
//openPanel.allowedFileTypes = ["srt", "sub", "vtt", "sbv", "csv", "json", "lrc"]
59-
6064
openPanel.accessoryView = a.view
6165
openPanel.delegate = openAccessory
6266
openPanel.begin { [weak self] response in

Demos/Subtitle Viewer/Subtitle Viewer/Info.plist

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,83 @@
116116
<key>NSDocumentClass</key>
117117
<string>$(PRODUCT_MODULE_NAME).Document</string>
118118
</dict>
119+
<dict>
120+
<key>CFBundleTypeName</key>
121+
<string>SubStation Alpha subtitles</string>
122+
<key>CFBundleTypeRole</key>
123+
<string>Viewer</string>
124+
<key>LSHandlerRank</key>
125+
<string>Default</string>
126+
<key>LSItemContentTypes</key>
127+
<array>
128+
<string>public.substationalpha.fileformat.ssa</string>
129+
</array>
130+
<key>NSDocumentClass</key>
131+
<string>$(PRODUCT_MODULE_NAME).Document</string>
132+
</dict>
133+
<dict>
134+
<key>CFBundleTypeName</key>
135+
<string>Advanced SubStation Alpha subtitles</string>
136+
<key>CFBundleTypeRole</key>
137+
<string>Viewer</string>
138+
<key>LSHandlerRank</key>
139+
<string>Default</string>
140+
<key>LSItemContentTypes</key>
141+
<array>
142+
<string>public.substationalpha.fileformat.ass</string>
143+
</array>
144+
<key>NSDocumentClass</key>
145+
<string>$(PRODUCT_MODULE_NAME).Document</string>
146+
</dict>
119147
</array>
120148
<key>UTImportedTypeDeclarations</key>
121149
<array>
150+
<dict>
151+
<key>UTTypeConformsTo</key>
152+
<array>
153+
<string>public.plain-text</string>
154+
</array>
155+
<key>UTTypeDescription</key>
156+
<string>Advanced SubStation Alpha subtitles</string>
157+
<key>UTTypeIcons</key>
158+
<dict/>
159+
<key>UTTypeIdentifier</key>
160+
<string>public.substationalpha.fileformat.ass</string>
161+
<key>UTTypeTagSpecification</key>
162+
<dict>
163+
<key>public.filename-extension</key>
164+
<array>
165+
<string>ass</string>
166+
</array>
167+
<key>public.mime-type</key>
168+
<array>
169+
<string>text/plain</string>
170+
</array>
171+
</dict>
172+
</dict>
173+
<dict>
174+
<key>UTTypeConformsTo</key>
175+
<array>
176+
<string>public.plain-text</string>
177+
</array>
178+
<key>UTTypeDescription</key>
179+
<string>SubStation Alpha subtitles</string>
180+
<key>UTTypeIcons</key>
181+
<dict/>
182+
<key>UTTypeIdentifier</key>
183+
<string>public.substationalpha.fileformat.ssa</string>
184+
<key>UTTypeTagSpecification</key>
185+
<dict>
186+
<key>public.filename-extension</key>
187+
<array>
188+
<string>ssa</string>
189+
</array>
190+
<key>public.mime-type</key>
191+
<array>
192+
<string>text/plain</string>
193+
</array>
194+
</dict>
195+
</dict>
122196
<dict>
123197
<key>UTTypeConformsTo</key>
124198
<array>

Package.resolved

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@ let package = Package(
1717
],
1818
dependencies: [
1919
.package(url: "https://github.com/dagronf/DSFRegex", from: "4.0.0"),
20-
.package(url: "https://github.com/dagronf/TinyCSV", .upToNextMinor(from: "1.0.0"))
20+
.package(url: "https://github.com/dagronf/TinyCSV", .upToNextMinor(from: "1.0.0")),
21+
.package(url: "https://github.com/dagronf/BytesParser", from: "3.2.1"),
2122
],
2223
targets: [
2324
.target(
2425
name: "SwiftSubtitles",
25-
dependencies: ["DSFRegex", "TinyCSV"],
26+
dependencies: ["DSFRegex", "TinyCSV", "BytesParser"],
2627
resources: [
2728
.copy("PrivacyInfo.xcprivacy"),
2829
]

README.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,18 @@ A Swift package for reading/writing some common subtitle formats.
1717

1818
## Available coders
1919

20-
| Format | Coder | File extension |
21-
|:----------------------|:---------------------------------|:----------------|
22-
| SBV (SubViewer) | `Subtitles.Coder.SBV` | `.sbv` |
23-
| SUB (MicroDVD)* | `Subtitles.Coder.SUB` | `.sub` |
24-
| SRT (SubRip) | `Subtitles.Coder.SRT` | `.srt` |
25-
| VTT (WebVTT) | `Subtitles.Coder.VTT` | `.vtt` |
26-
| CSV | `Subtitles.Coder.CSV` | `.csv` |
27-
| JSON (Podcasts Index) | `Subtitles.Coder.PodcastsIndex` | `.json` |
28-
| LRC (Lyrics file) | `Subtitles.Coder.LRC` | `.lrc` |
29-
| TTML (Timed text) | `Subtitles.Coder.TTML` | `.ttml` |
20+
| Format | Coder | File extension |
21+
|:------------------------|:-----------------------------------|:----------------|
22+
| SBV (SubViewer) | `Subtitles.Coder.SBV` | `.sbv` |
23+
| SUB (MicroDVD)* | `Subtitles.Coder.SUB` | `.sub` |
24+
| SRT (SubRip) | `Subtitles.Coder.SRT` | `.srt` |
25+
| VTT (WebVTT) | `Subtitles.Coder.VTT` | `.vtt` |
26+
| CSV | `Subtitles.Coder.CSV` | `.csv` |
27+
| JSON (Podcasts Index) | `Subtitles.Coder.PodcastsIndex` | `.json` |
28+
| LRC (Lyrics file) | `Subtitles.Coder.LRC` | `.lrc` |
29+
| TTML (Timed text) | `Subtitles.Coder.TTML` | `.ttml` |
30+
| Substation Alpha (v4)* | `Subtitles.Coder.SubstationAlpha` | `.ssa` |
31+
| Advanced SSA (v4+)* | `Subtitles.Coder.AdvancedSSA` | `.ass` |
3032

3133
* Read-only
3234

Sources/SwiftSubtitles/Subtitles+codable.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,5 +114,7 @@ extension Subtitles.Coder {
114114
Subtitles.Coder.PodcastsIndex.self,
115115
Subtitles.Coder.LRC.self,
116116
Subtitles.Coder.TTML.self,
117+
Subtitles.Coder.AdvancedSSA.self,
118+
Subtitles.Coder.SubStationAlpha.self,
117119
]
118120
}

0 commit comments

Comments
 (0)