<commit_before>//
//  IconInfo.swift
//  AppIconSetGenCore
//
//  Created by <NAME> on 11/05/2017.
//
//

import Foundation

public protocol ContentsJSONStringConvertible {
    var contentJSONFormat: String { get }
}

// MARK: - Idiom

public enum Idiom: String {
    case iPhone
    case iPad
    case mac
    case watch
    case iosMarketing = "ios-marketing"
}

extension Idiom: ContentsJSONStringConvertible {
    public var contentJSONFormat: String {
        return rawValue.lowercased()
    }
}

// MARK: - Role

public enum Role: String {
    case any
    case notificationCenter
    case companionSettings
    case appLauncher
    case longLook
    case quickLook
}

extension Role: ContentsJSONStringConvertible {
    public var contentJSONFormat: String {
        return rawValue
    }
}

// MARK: - Subtype

public enum Subtype: String {
    case any
    case mm38
    case mm42
}

extension Subtype: ContentsJSONStringConvertible {
    public var contentJSONFormat: String {
        switch self {
        case .mm38: return "38mm"
        case .mm42: return "42mm"
        default: return rawValue
        }
    }
}

// MARK: - IconInfo

public struct IconInfo {
    let idiom: Idiom
    // size in points
    let size: CGFloat
    let role: Role
    let subtype: Subtype
    let scale: CGFloat

    var sizeInPixels: CGFloat {
        return size * scale
    }
}


public extension IconInfo {
    init(idiom: Idiom, size: CGFloat, scale: CGFloat) {
        self.idiom = idiom
        self.size = size
        self.scale = scale
        self.role = .any
        self.subtype = .any
    }
}

// MARK: - Icon sets for platforms

public let iconInfoItemsIOS = [
    IconInfo(idiom: .iPhone, size: 20, scale: 2),
    IconInfo(idiom: .iPhone, size: 20, scale: 3),
    IconInfo(idiom: .iPhone, size: 29, scale: 2),
    IconInfo(idiom: .iPhone, size: 29, scale: 3),
    IconInfo(idiom: .iPhone, size: 40, scale: 2),
    IconInfo(idiom: .iPhone, size: 40, scale: 3),
    IconInfo(idiom: .iPhone, size: 60, scale: 2),
    IconInfo(idiom: .iPhone, size: 60, scale: 3),
    IconInfo(idiom: .iPad, size: 20, scale: 1),
    IconInfo(idiom: .iPad, size: 20, scale: 2),
    IconInfo(idiom: .iPad, size: 29, scale: 1),
    IconInfo(idiom: .iPad, size: 29, scale: 2),
    IconInfo(idiom: .iPad, size: 40, scale: 1),
    IconInfo(idiom: .iPad, size: 40, scale: 2),
    IconInfo(idiom: .iPad, size: 76, scale: 1),
    IconInfo(idiom: .iPad, size: 76, scale: 2),
    IconInfo(idiom: .iPad, size: 83.5, scale: 2),
    IconInfo(idiom: .iosMarketing, size: 1024, scale: 1),
]

public let iconInfoItemsWatchOS = [
    IconInfo(idiom: .watch, size: 24, role: .notificationCenter, subtype: .mm38, scale: 2),
    IconInfo(idiom: .watch, size: 27.5, role: .notificationCenter, subtype: .mm42, scale: 2),
    IconInfo(idiom: .watch, size: 29, role: .companionSettings, subtype: .any, scale: 2),
    IconInfo(idiom: .watch, size: 29, role: .companionSettings, subtype: .any, scale: 3),
    IconInfo(idiom: .watch, size: 40, role: .appLauncher, subtype: .mm38, scale: 2),
    IconInfo(idiom: .watch, size: 44, role: .longLook, subtype: .mm42, scale: 2),
    IconInfo(idiom: .watch, size: 86, role: .quickLook, subtype: .mm38, scale: 2),
    IconInfo(idiom: .watch, size: 98, role: .quickLook, subtype: .mm42, scale: 2),
]

public let iconInfoItemsMacOS = [
    IconInfo(idiom: .mac, size: 16, scale: 1),
    IconInfo(idiom: .mac, size: 16, scale: 2),
    IconInfo(idiom: .mac, size: 32, scale: 1),
    IconInfo(idiom: .mac, size: 32, scale: 2),
    IconInfo(idiom: .mac, size: 128, scale: 1),
    IconInfo(idiom: .mac, size: 128, scale: 2),
    IconInfo(idiom: .mac, size: 256, scale: 1),
    IconInfo(idiom: .mac, size: 256, scale: 2),
    IconInfo(idiom: .mac, size: 512, scale: 1),
    IconInfo(idiom: .mac, size: 512, scale: 2),
]




<commit_msg>Updated watchOS icons<commit_after>//
//  IconInfo.swift
//  AppIconSetGenCore
//
//  Created by <NAME> on 11/05/2017.
//
//

import Foundation

public protocol ContentsJSONStringConvertible {
    var contentJSONFormat: String { get }
}

// MARK: - Idiom

public enum Idiom: String {
    case iPhone
    case iPad
    case mac
    case watch
    case iosMarketing = "ios-marketing"
    case watchMarketing = "watch-marketing"
}

extension Idiom: ContentsJSONStringConvertible {
    public var contentJSONFormat: String {
        return rawValue.lowercased()
    }
}

// MARK: - Role

public enum Role: String {
    case any
    case notificationCenter
    case companionSettings
    case appLauncher
    case quickLook
}

extension Role: ContentsJSONStringConvertible {
    public var contentJSONFormat: String {
        return rawValue
    }
}

// MARK: - Subtype

public enum Subtype: String {
    case any
    case mm38
    case mm42
    case mm40
    case mm44
}

extension Subtype: ContentsJSONStringConvertible {
    public var contentJSONFormat: String {
        switch self {
        case .mm38: return "38mm"
        case .mm42: return "42mm"
        case .mm40: return "40mm"
        case .mm44: return "44mm"
        default: return rawValue
        }
    }
}

// MARK: - IconInfo

public struct IconInfo {
    let idiom: Idiom
    // size in points
    let size: CGFloat
    let role: Role
    let subtype: Subtype
    let scale: CGFloat

    var sizeInPixels: CGFloat {
        return size * scale
    }
}


public extension IconInfo {
    init(idiom: Idiom, size: CGFloat, scale: CGFloat) {
        self.idiom = idiom
        self.size = size
        self.scale = scale
        self.role = .any
        self.subtype = .any
    }
}

// MARK: - Icon sets for platforms

public let iconInfoItemsIOS = [
    IconInfo(idiom: .iPhone, size: 20, scale: 2),
    IconInfo(idiom: .iPhone, size: 20, scale: 3),
    IconInfo(idiom: .iPhone, size: 29, scale: 2),
    IconInfo(idiom: .iPhone, size: 29, scale: 3),
    IconInfo(idiom: .iPhone, size: 40, scale: 2),
    IconInfo(idiom: .iPhone, size: 40, scale: 3),
    IconInfo(idiom: .iPhone, size: 60, scale: 2),
    IconInfo(idiom: .iPhone, size: 60, scale: 3),
    IconInfo(idiom: .iPad, size: 20, scale: 1),
    IconInfo(idiom: .iPad, size: 20, scale: 2),
    IconInfo(idiom: .iPad, size: 29, scale: 1),
    IconInfo(idiom: .iPad, size: 29, scale: 2),
    IconInfo(idiom: .iPad, size: 40, scale: 1),
    IconInfo(idiom: .iPad, size: 40, scale: 2),
    IconInfo(idiom: .iPad, size: 76, scale: 1),
    IconInfo(idiom: .iPad, size: 76, scale: 2),
    IconInfo(idiom: .iPad, size: 83.5, scale: 2),
    IconInfo(idiom: .iosMarketing, size: 1024, scale: 1),
]

public let iconInfoItemsWatchOS = [
    IconInfo(idiom: .watch, size: 24, role: .notificationCenter, subtype: .mm38, scale: 2),
    IconInfo(idiom: .watch, size: 27.5, role: .notificationCenter, subtype: .mm42, scale: 2),
    IconInfo(idiom: .watch, size: 29, role: .companionSettings, subtype: .any, scale: 2),
    IconInfo(idiom: .watch, size: 29, role: .companionSettings, subtype: .any, scale: 3),
    IconInfo(idiom: .watch, size: 40, role: .appLauncher, subtype: .mm38, scale: 2),
    IconInfo(idiom: .watch, size: 44, role: .appLauncher, subtype: .mm40, scale: 2),
    IconInfo(idiom: .watch, size: 50, role: .appLauncher, subtype: .mm44, scale: 2),
    IconInfo(idiom: .watch, size: 86, role: .quickLook, subtype: .mm38, scale: 2),
    IconInfo(idiom: .watch, size: 98, role: .quickLook, subtype: .mm42, scale: 2),
    IconInfo(idiom: .watch, size: 108, role: .quickLook, subtype: .mm44, scale: 2),
    IconInfo(idiom: .watchMarketing, size: 1024, scale: 1),
]

public let iconInfoItemsMacOS = [
    IconInfo(idiom: .mac, size: 16, scale: 1),
    IconInfo(idiom: .mac, size: 16, scale: 2),
    IconInfo(idiom: .mac, size: 32, scale: 1),
    IconInfo(idiom: .mac, size: 32, scale: 2),
    IconInfo(idiom: .mac, size: 128, scale: 1),
    IconInfo(idiom: .mac, size: 128, scale: 2),
    IconInfo(idiom: .mac, size: 256, scale: 1),
    IconInfo(idiom: .mac, size: 256, scale: 2),
    IconInfo(idiom: .mac, size: 512, scale: 1),
    IconInfo(idiom: .mac, size: 512, scale: 2),
]





{'fraction_non_alphanumeric': 0.1339063278525162, 'fraction_numerical': 0.0408570004982561, 'mean_word_length': 2.933855952964233, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2352504', 'n_tokens_mistral': 3176, 'n_tokens_neox': 2805, 'n_words': 865}