<commit_before>// =============================================================================
// NerobluCore
// Copyright (C) NeroBlu. All rights reserved.
// =============================================================================
import UIKit

// MARK: - Array拡張 -
extension Array {
    
    /// 最初の要素のインデックス
    public var firstIndex: Int? {
        return self.indices.first
    }
    
    /// 最後の要素のインデックス
    public var lastIndex: Int? {
        return self.indices.last
    }
    
    /// 配列内からランダムに要素を取り出す
    ///
    /// 要素が空の場合はnilを返す
    public var random: Element? {
        guard let min = self.firstIndex, let max = self.lastIndex else { return nil }
        let index = Int.random(min: min, max: max)
        return self[index]
    }
}

// MARK: - Dictionary拡張 -
public extension Dictionary {
    
    /// 渡された辞書を自身にマージする(自身を書き換えます)
    /// - parameter dictionary: マージする辞書
    mutating func merge(dictionary dic: Dictionary) {
        dic.forEach { self.updateValue($1, forKey: $0) }
    }
    
    /// 渡された辞書を自身にマージした新しい辞書を取得する(自身は書き換わりません)
    /// - parameter dictionary: マージする辞書
    /// - returns: 新しい辞書オブジェクト
    func merged(dictionary dic: Dictionary) -> Dictionary {
        var ret = self
        dic.forEach { ret.updateValue($1, forKey: $0) }
        return ret
    }
}<commit_msg>スコープが抜けていたので追加<commit_after>// =============================================================================
// NerobluCore
// Copyright (C) NeroBlu. All rights reserved.
// =============================================================================
import UIKit

// MARK: - Array拡張 -
extension Array {
    
    /// 最初の要素のインデックス
    public var firstIndex: Int? {
        return self.indices.first
    }
    
    /// 最後の要素のインデックス
    public var lastIndex: Int? {
        return self.indices.last
    }
    
    /// 配列内からランダムに要素を取り出す
    ///
    /// 要素が空の場合はnilを返す
    public var random: Element? {
        guard let min = self.firstIndex, let max = self.lastIndex else { return nil }
        let index = Int.random(min: min, max: max)
        return self[index]
    }
}

// MARK: - Dictionary拡張 -
public extension Dictionary {
    
    /// 渡された辞書を自身にマージする(自身を書き換えます)
    /// - parameter dictionary: マージする辞書
    public mutating func merge(dictionary dic: Dictionary) {
        dic.forEach { self.updateValue($1, forKey: $0) }
    }
    
    /// 渡された辞書を自身にマージした新しい辞書を取得する(自身は書き換わりません)
    /// - parameter dictionary: マージする辞書
    /// - returns: 新しい辞書オブジェクト
    public func merged(dictionary dic: Dictionary) -> Dictionary {
        var ret = self
        dic.forEach { ret.updateValue($1, forKey: $0) }
        return ret
    }
}
{'fraction_non_alphanumeric': 0.2182644941265631, 'fraction_numerical': 0.0030314513073133762, 'mean_word_length': 2.4600262123197902, 'pattern_counts': {'":': 0, '<': 3, '<?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': '3072056', 'n_tokens_mistral': 992, 'n_tokens_neox': 921, 'n_words': 182}