mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2024-10-01 17:30:50 +00:00
move MetaTagsParser to common module
This commit is contained in:
parent
539433014e
commit
442cdfdf2a
@ -20,6 +20,8 @@
|
|||||||
*/
|
*/
|
||||||
package com.vitorpamplona.amethyst.service.previews
|
package com.vitorpamplona.amethyst.service.previews
|
||||||
|
|
||||||
|
import com.vitorpamplona.amethyst.commons.preview.MetaTag
|
||||||
|
import com.vitorpamplona.amethyst.commons.preview.MetaTagsParser
|
||||||
import com.vitorpamplona.amethyst.service.HttpClientManager
|
import com.vitorpamplona.amethyst.service.HttpClientManager
|
||||||
import com.vitorpamplona.amethyst.service.checkNotInMainThread
|
import com.vitorpamplona.amethyst.service.checkNotInMainThread
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
package com.vitorpamplona.amethyst.service.previews
|
package com.vitorpamplona.amethyst.commons.preview
|
||||||
|
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Test
|
import org.junit.Test
|
@ -18,20 +18,25 @@
|
|||||||
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
package com.vitorpamplona.amethyst.service.previews
|
package com.vitorpamplona.amethyst.commons.preview
|
||||||
|
|
||||||
import kotlinx.collections.immutable.toImmutableMap
|
import kotlinx.collections.immutable.toImmutableMap
|
||||||
import java.lang.StringBuilder
|
import java.lang.StringBuilder
|
||||||
|
|
||||||
internal data class MetaTag(private val attrs: Map<String, String>) {
|
data class MetaTag(private val attrs: Map<String, String>) {
|
||||||
|
/**
|
||||||
|
* Returns a value of an attribute specified by its name (case insensitive), or empty string if it doesn't exist.
|
||||||
|
*/
|
||||||
fun attr(name: String): String = attrs[name.lowercase()] ?: ""
|
fun attr(name: String): String = attrs[name.lowercase()] ?: ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// parse a partial HTML document and extract meta tags
|
object MetaTagsParser {
|
||||||
internal object MetaTagsParser {
|
|
||||||
private val NON_ATTR_NAME_CHARS = setOf(Char(0x0), '"', '\'', '>', '/')
|
private val NON_ATTR_NAME_CHARS = setOf(Char(0x0), '"', '\'', '>', '/')
|
||||||
private val NON_UNQUOTED_ATTR_VALUE_CHARS = setOf('"', '\'', '=', '>', '<', '`')
|
private val NON_UNQUOTED_ATTR_VALUE_CHARS = setOf('"', '\'', '=', '>', '<', '`')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lazily parse a partial HTML document and extract meta tags.
|
||||||
|
*/
|
||||||
fun parse(input: String): Sequence<MetaTag> =
|
fun parse(input: String): Sequence<MetaTag> =
|
||||||
sequence {
|
sequence {
|
||||||
val s = TagScanner(input)
|
val s = TagScanner(input)
|
Loading…
Reference in New Issue
Block a user