diff --git a/Sources/Readability/Scorers/AutomatedReadabilityIndex.swift b/Sources/Readability/Scorers/AutomatedReadabilityIndex.swift new file mode 100644 index 0000000..e92cf90 --- /dev/null +++ b/Sources/Readability/Scorers/AutomatedReadabilityIndex.swift @@ -0,0 +1,33 @@ +// +// AutomatedReadabilityIndex.swift +// +// +// Created by Shibo Lyu on 2022/5/21. +// + + +import Foundation + +public struct RAAutomatedReadabilityIndexScorer: RAScorer { + public static let requiresCommonMetrics: Set? = [ + .wordCount, + .characterCount, + .sentenceCount + ] + + public static let meta = RAScorerMeta( + name: "Automated Readability Index", + creator: "RJ Senter & EA Smith", + citation: "Senter, R. J., & Smith, E. A. (1967). Automated readability index. Cincinnati Univ OH." + ) + + public init() {} + + public func score(_ text: String, metrics: RACommonMetricsCalculator.Results?) -> Double { + let wordCount = metrics![.wordCount]! + let characterCount = metrics![.characterCount]! + let sentenceCount = metrics![.sentenceCount]! + + return 4.71 * (characterCount / wordCount) + 0.5 * (wordCount / sentenceCount) - 21.43 + } +} diff --git a/Sources/Readability/Scorers/ColemanLiauIndex.swift b/Sources/Readability/Scorers/ColemanLiauIndex.swift index 278b439..1bdd4c3 100644 --- a/Sources/Readability/Scorers/ColemanLiauIndex.swift +++ b/Sources/Readability/Scorers/ColemanLiauIndex.swift @@ -1,5 +1,5 @@ // -// File.swift +// ColemanLiauIndex.swift // // // Created by Shibo Lyu on 2022/5/20. @@ -15,7 +15,7 @@ public struct RAColemanLiauIndexScorer: RAScorer { ] public static let meta = RAScorerMeta( - name: "Coleman–Liau Index", + name: "Coleman-Liau Index", creator: "Meri Coleman & T. L. Liau", citation: "Coleman, M., & Liau, T. L. (1975). A computer readability formula designed for machine scoring. Journal of Applied Psychology, 60(2), 283." ) diff --git a/Sources/Readability/ScoringTask.swift b/Sources/Readability/ScoringTask.swift index 5566e64..ed3c7f7 100644 --- a/Sources/Readability/ScoringTask.swift +++ b/Sources/Readability/ScoringTask.swift @@ -14,12 +14,14 @@ public class RAScoringTask { case fleschReadingEase case fleschKincaidGrade case colemanLiauIndex + case automatedReadabilityIndex } public static let availableScorers: [Scorer: RAScorer.Type] = [ .fleschReadingEase: RAFleschReadingEaseScorer.self, .fleschKincaidGrade: RAFleschKincaidGradeScorer.self, - .colemanLiauIndex: RAColemanLiauIndexScorer.self + .colemanLiauIndex: RAColemanLiauIndexScorer.self, + .automatedReadabilityIndex: RAAutomatedReadabilityIndexScorer.self ] public var scorersToRun: Set