Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.mohamedrejeb.ksoup.annotation

import kotlin.annotation.AnnotationTarget.ANNOTATION_CLASS
import kotlin.annotation.AnnotationTarget.CLASS
import kotlin.annotation.AnnotationTarget.CONSTRUCTOR
import kotlin.annotation.AnnotationTarget.FIELD
import kotlin.annotation.AnnotationTarget.FUNCTION
import kotlin.annotation.AnnotationTarget.LOCAL_VARIABLE
import kotlin.annotation.AnnotationTarget.PROPERTY
import kotlin.annotation.AnnotationTarget.PROPERTY_GETTER
import kotlin.annotation.AnnotationTarget.PROPERTY_SETTER
import kotlin.annotation.AnnotationTarget.TYPEALIAS
import kotlin.annotation.AnnotationTarget.VALUE_PARAMETER

@RequiresOptIn(level = RequiresOptIn.Level.ERROR)
@Retention(AnnotationRetention.BINARY)
@Target(
CLASS,
ANNOTATION_CLASS,
PROPERTY,
FIELD,
LOCAL_VARIABLE,
VALUE_PARAMETER,
CONSTRUCTOR,
FUNCTION,
PROPERTY_GETTER,
PROPERTY_SETTER,
TYPEALIAS
)
public annotation class ExperimentalKsoupApi()
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
package com.mohamedrejeb.ksoup.html.parser

import com.mohamedrejeb.ksoup.annotation.ExperimentalKsoupApi
import com.mohamedrejeb.ksoup.html.tokenizer.KsoupTokenizer
import com.mohamedrejeb.ksoup.html.tokenizer.KsoupTokenizerCallbacks

public class KsoupHtmlParser(
public class KsoupHtmlParser @ExperimentalKsoupApi constructor(
public val handler: KsoupHtmlHandler = KsoupHtmlHandler.Default,
public val options: KsoupHtmlOptions = KsoupHtmlOptions.Default,
public val callbacks: KsoupTokenizerCallbacks = KsoupTokenizerCallbacks.Default,
public val callbacks: KsoupTokenizerCallbacks,
) {

public constructor(
handler: KsoupHtmlHandler = KsoupHtmlHandler.Default,
options: KsoupHtmlOptions = KsoupHtmlOptions.Default,
): this(
handler = handler,
options = options,
callbacks = KsoupTokenizerCallbacks.Default,
)

/** The start index of the last event. */
private var startIndex: Int = 0
/** The end index of the last event. */
Expand Down Expand Up @@ -37,6 +47,7 @@ public class KsoupHtmlParser(
private val lowerCaseAttributeNames get() = options.lowerCaseAttributeNames

// Tokenizer events
@OptIn(ExperimentalKsoupApi::class)
private val ksoupTokenizerCallbacks = object : KsoupTokenizerCallbacks {

override fun onText(start: Int, endIndex: Int) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.mohamedrejeb.ksoup.html.tokenizer

import com.mohamedrejeb.ksoup.annotation.ExperimentalKsoupApi
import com.mohamedrejeb.ksoup.html.parser.KsoupHtmlParser

@SubclassOptInRequired(ExperimentalKsoupApi::class)
public interface KsoupTokenizerCallbacks {

public fun onAttribData(start: Int, endIndex: Int) {}
Expand Down Expand Up @@ -36,6 +38,7 @@ public interface KsoupTokenizerCallbacks {

public object Default : KsoupTokenizerCallbacks

@ExperimentalKsoupApi
public class Builder: KsoupTokenizerCallbacks {

private var callbacks: KsoupTokenizerCallbacks = KsoupTokenizerCallbacks.Default
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class KsoupHtmlParserTest {

val ksoupHtmlParser = KsoupHtmlParser(
handler = handler,
options = options
options = options,
)
ksoupHtmlParser.write(input)
ksoupHtmlParser.end()
Expand Down
Loading