fix: Publish functions.

This commit is contained in:
Shibo Lyu 2022-05-20 13:18:06 +08:00
parent 73b8996beb
commit 4343848549
5 changed files with 25 additions and 19 deletions

View file

@ -17,11 +17,11 @@ public enum RACommonMetric {
}
public struct RACommonMetricsCalculator {
typealias Results = [RACommonMetric: Double]
public typealias Results = [RACommonMetric: Double]
private var metrics: Set<RACommonMetric>
init(metrics: Set<RACommonMetric>) {
public init(metrics: Set<RACommonMetric>) {
self.metrics = metrics
}
@ -29,7 +29,7 @@ public struct RACommonMetricsCalculator {
SyllableCounter.shared.count(word: word)
}
func calculate(on text: String) -> Results {
public func calculate(on text: String) -> Results {
let shouldDoSentences = metrics.contains(.sentenceCount) || metrics.contains(.avgWordsPerSentence)
let shouldDoWords = metrics.contains(.wordCount)
|| metrics.contains(.avgWordsPerSentence)

View file

@ -8,18 +8,20 @@
import Foundation
public struct RAFleschKincaidGradeScorer: RAScorer {
static let requiresCommonMetrics: Set<RACommonMetric>? = [
public static let requiresCommonMetrics: Set<RACommonMetric>? = [
.avgWordsPerSentence,
.avgSyllablesPerWord
]
static let meta = RAScorerMeta(
public static let meta = RAScorerMeta(
name: "Flesch-Kincaid Grade",
creator: "John P. Kincaid",
citation: "Kincaid, J. P., Fishburne Jr, R. P., Rogers, R. L., & Chissom, B. S. (1975). Derivation of new readability formulas (automated readability index, fog count and flesch reading ease formula) for navy enlisted personnel. Naval Technical Training Command Millington TN Research Branch."
)
func score(_ text: String, metrics: RACommonMetricsCalculator.Results?) -> Double {
public init() {}
public func score(_ text: String, metrics: RACommonMetricsCalculator.Results?) -> Double {
let asl = metrics![.avgWordsPerSentence]!
let asw = metrics![.avgSyllablesPerWord]!

View file

@ -8,18 +8,20 @@
import Foundation
public struct RAFleschReadingEaseScorer: RAScorer {
static let requiresCommonMetrics: Set<RACommonMetric>? = [
public static let requiresCommonMetrics: Set<RACommonMetric>? = [
.avgWordsPerSentence,
.avgSyllablesPerWord
]
static let meta = RAScorerMeta(
public static let meta = RAScorerMeta(
name: "Flesch Reading Ease",
creator: "Rudolf Flesch",
citation: "Flesch, R. (1948). A new readability yardstick. Journal of applied psychology, 32(3), 221."
)
func score(_ text: String, metrics: RACommonMetricsCalculator.Results?) -> Double {
public init() {}
public func score(_ text: String, metrics: RACommonMetricsCalculator.Results?) -> Double {
let asl = metrics![.avgWordsPerSentence]!
let asw = metrics![.avgSyllablesPerWord]!

View file

@ -8,21 +8,22 @@
import Foundation
public class RAScoringTask {
typealias Results = [Scorer: Double]
public typealias Results = [Scorer: Double]
enum Scorer: Hashable, CaseIterable, Comparable {
public enum Scorer: Hashable, CaseIterable, Comparable {
case fleschReadingEase
case fleschKincaidGrade
}
static let availableScorers: [Scorer: RAScorer.Type] = [
public static let availableScorers: [Scorer: RAScorer.Type] = [
.fleschReadingEase: RAFleschReadingEaseScorer.self,
.fleschKincaidGrade: RAFleschKincaidGradeScorer.self
]
var scorersToRun: Set<Scorer> = Set(Scorer.allCases)
public var scorersToRun: Set<Scorer> = Set(Scorer.allCases)
var scorers: [Scorer: RAScorer.Type] {
/** Derived from `scorersToRun`. */
public var scorers: [Scorer: RAScorer.Type] {
scorersToRun.reduce([:]) { partialResult, scorer in
var d = partialResult
d[scorer] = Self.availableScorers[scorer]!
@ -30,7 +31,8 @@ public class RAScoringTask {
}
}
var commonMetricsToGet: Set<RACommonMetric> {
/** Derived from `scorersToRun`. */
public var commonMetricsToGet: Set<RACommonMetric> {
scorers
.map { $0.1.requiresCommonMetrics }
.reduce([]) { partialResult, scorerMetrics in
@ -39,7 +41,7 @@ public class RAScoringTask {
}
}
func run(on text: String) -> Results {
public func run(on text: String) -> Results {
var commonMetrics: RACommonMetricsCalculator.Results? = nil
if !commonMetricsToGet.isEmpty {

View file

@ -14,7 +14,7 @@ public struct RATokenizer {
private var tokenizer: NLTokenizer
init (_ text: String, unit: NLTokenUnit, language: NLLanguage? = nil) {
public init (_ text: String, unit: NLTokenUnit, language: NLLanguage? = nil) {
self.text = text
self.unit = unit
tokenizer = NLTokenizer(unit: unit)
@ -24,8 +24,8 @@ public struct RATokenizer {
tokenizer.string = text
}
/** Returns token count. */
func enumerateTokens(using callBack: (String) -> Void) -> Int {
/** - Returns: Token count. */
public func enumerateTokens(using callBack: (String) -> Void) -> Int {
var tokenCount = 0
tokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { range, _ in
tokenCount += 1