diff --git a/README.md b/README.md
index 1505d3a..b886f67 100644
--- a/README.md
+++ b/README.md
@@ -116,7 +116,7 @@ None of the attributes are required.
In addition to setters, a configuration builder is also available:
```java
-final ReadingTime rt = new ReadingTime(Files.readString(text));
+final ReadingTime rt = new ReadingTime(text);
rt.setPostfix("minute to read");
rt.setPlural("minutes to read");
```
@@ -125,8 +125,7 @@ or
```java
final Config config =
- new Config.Builder()
- .text(Files.readString(text))
+ new Config.Builder(text)
.postfix("minute to read")
.plural("minutes to read")
.build();
diff --git a/config/detekt/baseline.xml b/config/detekt/baseline.xml
index 0a090bf..fc2da78 100644
--- a/config/detekt/baseline.xml
+++ b/config/detekt/baseline.xml
@@ -3,8 +3,8 @@
LongMethod:ReadingTimeTest.kt$ReadingTimeTest$@Test fun testReadingTimeInSec()
- LongParameterList:Config.kt$Config$( val text: String, val wpm: Int, val postfix: String, val plural: String, val excludeImages: Boolean, val extra: Int, val roundingMode: RoundingMode )
LongParameterList:ReadingTime.kt$ReadingTime$( text: String, wpm: Int = 275, var postfix: String = "min read", var plural: String = "min read", excludeImages: Boolean = false, extra: Int = 0, var roundingMode: RoundingMode = RoundingMode.HALF_EVEN )
+ MagicNumber:Config.kt$Config.Builder$275
MagicNumber:ReadingTime.kt$ReadingTime$10
MagicNumber:ReadingTime.kt$ReadingTime$12
MagicNumber:ReadingTime.kt$ReadingTime$3
diff --git a/examples/bld/.idea/misc.xml b/examples/bld/.idea/misc.xml
index d286b3d..5bfc6ba 100644
--- a/examples/bld/.idea/misc.xml
+++ b/examples/bld/.idea/misc.xml
@@ -13,6 +13,13 @@
+
+
+
+
+
+
+
diff --git a/examples/bld/src/main/java/com/example/ReadingTimeSample.java b/examples/bld/src/main/java/com/example/ReadingTimeSample.java
index b7e78f1..5f73ac9 100644
--- a/examples/bld/src/main/java/com/example/ReadingTimeSample.java
+++ b/examples/bld/src/main/java/com/example/ReadingTimeSample.java
@@ -16,8 +16,7 @@ public class ReadingTimeSample {
rt.setPlural("minutes to read");
// final Config config =
-// new Config.Builder()
-// .text(Files.readString(text))
+// new Config.Builder(Files.readString(text))
// .postfix("minute to read")
// .plural("minutes to read")
// .build();
diff --git a/examples/gradle/.idea/misc.xml b/examples/gradle/.idea/misc.xml
index 0d106a1..b2ff8cd 100644
--- a/examples/gradle/.idea/misc.xml
+++ b/examples/gradle/.idea/misc.xml
@@ -5,6 +5,23 @@
+
diff --git a/examples/gradle/src/main/java/com/example/ReadingTimeSample.java b/examples/gradle/src/main/java/com/example/ReadingTimeSample.java
index b7e78f1..5f73ac9 100644
--- a/examples/gradle/src/main/java/com/example/ReadingTimeSample.java
+++ b/examples/gradle/src/main/java/com/example/ReadingTimeSample.java
@@ -16,8 +16,7 @@ public class ReadingTimeSample {
rt.setPlural("minutes to read");
// final Config config =
-// new Config.Builder()
-// .text(Files.readString(text))
+// new Config.Builder(Files.readString(text))
// .postfix("minute to read")
// .plural("minutes to read")
// .build();
diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties
index 2895a28..7561627 100644
--- a/lib/bld/bld-wrapper.properties
+++ b/lib/bld/bld-wrapper.properties
@@ -1,8 +1,8 @@
bld.downloadExtensionJavadoc=false
bld.downloadExtensionSources=true
-bld.extension-detekt=com.uwyn.rife2:bld-detekt:0.9.2
bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.5
bld.extensions=com.uwyn.rife2:bld-kotlin:0.9.4
+bld.extension-detekt=com.uwyn.rife2:bld-detekt:0.9.4
bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.downloadLocation=
bld.sourceDirectories=
diff --git a/src/main/kotlin/net/thauvin/erik/readingtime/Config.kt b/src/main/kotlin/net/thauvin/erik/readingtime/Config.kt
index b4cad54..3eb3bc2 100644
--- a/src/main/kotlin/net/thauvin/erik/readingtime/Config.kt
+++ b/src/main/kotlin/net/thauvin/erik/readingtime/Config.kt
@@ -35,35 +35,76 @@ import java.math.RoundingMode
/**
* Provides a configuration builder.
*/
-class Config private constructor(
- val text: String,
- val wpm: Int,
- val postfix: String,
- val plural: String,
- val excludeImages: Boolean,
- val extra: Int,
+class Config private constructor(builder: Builder) {
+ val text: String
+ val wpm: Int
+ val postfix: String
+ val plural: String
+ val excludeImages: Boolean
+ val extra: Int
val roundingMode: RoundingMode
-) {
+
+ init {
+ text = builder.text
+ wpm = builder.wpm
+ postfix = builder.postfix
+ plural = builder.plural
+ excludeImages = builder.excludeImages
+ extra = builder.extra
+ roundingMode = builder.roundingMode
+ }
+
/**
* Configures the parameters.
+ *
+ * @param text The text to be evaluated.
*/
- data class Builder(
- private var text: String = "",
- private var wpm: Int = 275,
- private var postfix: String = "min read",
- private var plural: String = "min read",
- private var excludeImages: Boolean = false,
- private var extra: Int = 0,
- private var roundingMode: RoundingMode = RoundingMode.HALF_EVEN
- ) {
+ data class Builder(var text: String) {
+ var wpm: Int = 275
+ var postfix: String = "min read"
+ var plural: String = "min read"
+ var excludeImages: Boolean = false
+ var extra: Int = 0
+ var roundingMode: RoundingMode = RoundingMode.HALF_EVEN
+
+ /**
+ * The text to be evaluated.
+ */
fun text(text: String) = apply { this.text = text }
+
+ /**
+ * The words per minute reading average.
+ */
fun wpm(wpm: Int) = apply { this.wpm = wpm }
+
+ /**
+ * The value to be appended to the reading time.
+ */
fun postfix(postfix: String) = apply { this.postfix = postfix }
+
+ /**
+ * The value to be appended if the reading time is more than 1 minute.
+ */
fun plural(plural: String) = apply { this.plural = plural }
+
+ /**
+ * Images are excluded from the reading time when set.
+ */
fun excludeImages(excludeImages: Boolean) = apply { this.excludeImages = excludeImages }
+
+ /**
+ * Additional seconds to be added to the total reading time.
+ */
fun extra(extra: Int) = apply { this.extra = extra }
+
+ /**
+ * The [RoundingMode] to apply. Default is [RoundingMode.HALF_DOWN].
+ */
fun roundingMode(roundingMode: RoundingMode) = apply { this.roundingMode = roundingMode }
- fun build() = Config(text, wpm, postfix, plural, excludeImages, extra, roundingMode)
+ /**
+ * Builds the configuration.
+ */
+ fun build() = Config(this)
}
}
diff --git a/src/test/kotlin/net/thauvin/erik/readingtime/ReadingTimeTest.kt b/src/test/kotlin/net/thauvin/erik/readingtime/ReadingTimeTest.kt
index 2242ca8..4f38a36 100644
--- a/src/test/kotlin/net/thauvin/erik/readingtime/ReadingTimeTest.kt
+++ b/src/test/kotlin/net/thauvin/erik/readingtime/ReadingTimeTest.kt
@@ -188,7 +188,7 @@ class ReadingTimeTest {
@Test
fun testReadingTimeConfig() {
- var config = Config.Builder().text(blogPost)
+ var config = Config.Builder(blogPost)
assertEquals("2 min read", ReadingTime(config.build()).calcReadingTime(),
"calcReadingTime(blogPost)")