//
//  Section.swift
//  
//
//  Created by Thibaut Schmitt on 04/01/2022.
//

import Foundation

class Section {

    // MARK: - Properties

    let name: String // OnBoarding
    var definitions = [Definition]()

    // MARK: - Init

    init(name: String) {
        self.name = name
    }

    // MARK: - Methods

    static func match(_ line: String) -> Section? {
        guard line.range(of: "\\[\\[(.*?)]]$", options: .regularExpression, range: nil, locale: nil) != nil else {
            return nil
        }

        let sectionName = line
            .replacingOccurrences(of: ["[", "]"], with: "")
            .removeLeadingTrailingWhitespace()
        return Section(name: sectionName)
    }

    func hasOneOrMoreMatchingTags(tags: [String]) -> Bool {
        let allTags = definitions.flatMap { $0.tags }
        let allTagsSet = Set(allTags)

        let intersection = Set(tags).intersection(allTagsSet)
        if intersection.isEmpty {
            return false
        }
        return true
    }
}
