Skip to content

Commit

Permalink
Revert to old parser style, for better readability
Browse files Browse the repository at this point in the history
  • Loading branch information
mpgirro committed Feb 26, 2021
1 parent 9dc2e5e commit df4663e
Show file tree
Hide file tree
Showing 8 changed files with 156 additions and 49 deletions.
24 changes: 18 additions & 6 deletions src/main/kotlin/dev/stalla/parser/namespace/AtomParser.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,24 @@ internal object AtomParser : NamespaceParser() {
atomBuilder: AtomBuilder
) {
when (localName) {
"contributor" -> ifCanBeParsed { toPersonBuilder(personBuilderProvider.createPersonBuilder(), namespace) }
?.let(atomBuilder::addContributorBuilder)
"author" -> ifCanBeParsed { toPersonBuilder(personBuilderProvider.createPersonBuilder(), namespace) }
?.let(atomBuilder::addAuthorBuilder)
"link" -> ifCanBeParsed { toLinkBuilder(linkBuilderProvider.createLinkBuilder()) }
?.let(atomBuilder::addLinkBuilder)
"contributor" -> {
val personBuilder = ifCanBeParsed {
toPersonBuilder(personBuilderProvider.createPersonBuilder(), namespace)
} ?: return
atomBuilder.addContributorBuilder(personBuilder)
}
"author" -> {
val personBuilder = ifCanBeParsed {
toPersonBuilder(personBuilderProvider.createPersonBuilder(), namespace)
} ?: return
atomBuilder.addAuthorBuilder(personBuilder)
}
"link" -> {
val linkBuilder = ifCanBeParsed {
toLinkBuilder(linkBuilderProvider.createLinkBuilder())
} ?: return
atomBuilder.addLinkBuilder(linkBuilder)
}
else -> pass
}
}
Expand Down
5 changes: 4 additions & 1 deletion src/main/kotlin/dev/stalla/parser/namespace/ContentParser.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,10 @@ internal object ContentParser : NamespaceParser() {

override fun Node.parseItemData(builder: ProvidingEpisodeBuilder) {
when (localName) {
"encoded" -> ifCanBeParsed { textOrNull() }?.let(builder.contentBuilder::encoded)
"encoded" -> {
val encoded = ifCanBeParsed { textOrNull() } ?: return
builder.contentBuilder.encoded(encoded)
}
else -> pass
}
}
Expand Down
5 changes: 4 additions & 1 deletion src/main/kotlin/dev/stalla/parser/namespace/FyydParser.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ internal object FyydParser : NamespaceParser() {

override fun Node.parseChannelData(builder: ProvidingPodcastBuilder) {
when (localName) {
"verify" -> ifCanBeParsed { textOrNull() }?.let(builder.fyydBuilder::verify)
"verify" -> {
val verify = ifCanBeParsed { textOrNull() } ?: return
builder.fyydBuilder.verify(verify)
}
else -> pass
}
}
Expand Down
32 changes: 24 additions & 8 deletions src/main/kotlin/dev/stalla/parser/namespace/GoogleplayParser.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,23 @@ internal object GoogleplayParser : NamespaceParser() {
when (localName) {
"author" -> builder.googleplayBuilder.author(ifCanBeParsed { textOrNull() })
"owner" -> builder.googleplayBuilder.owner(ifCanBeParsed { textOrNull() })
"category" -> ifCanBeParsed { toGoogleplayCategory() }?.let(builder.googleplayBuilder::addCategory)
"category" -> {
val category = ifCanBeParsed { toGoogleplayCategory() } ?: return
builder.googleplayBuilder.addCategory(category)
}
"description" -> builder.googleplayBuilder.description(ifCanBeParsed { textOrNull() })
"explicit" -> ifCanBeParsed { textAsBooleanOrNull() }?.let(builder.googleplayBuilder::explicit)
"block" -> ifCanBeParsed { textAsBooleanOrNull() }?.let(builder.googleplayBuilder::block)
"image" -> ifCanBeParsed { toHrefOnlyImageBuilder(builder.createHrefOnlyImageBuilder()) }
?.let(builder.googleplayBuilder::imageBuilder)
"explicit" -> {
val explicit = ifCanBeParsed { textAsBooleanOrNull() } ?: return
builder.googleplayBuilder.explicit(explicit)
}
"block" -> {
val block = ifCanBeParsed { textAsBooleanOrNull() } ?: return
builder.googleplayBuilder.block(block)
}
"image" -> {
val imageBuilder = ifCanBeParsed { toHrefOnlyImageBuilder(builder.createHrefOnlyImageBuilder()) }
builder.googleplayBuilder.imageBuilder(imageBuilder)
}
"new-feed-url" -> builder.googleplayBuilder.newFeedUrl(ifCanBeParsed { textOrNull() })
else -> pass
}
Expand All @@ -41,9 +52,14 @@ internal object GoogleplayParser : NamespaceParser() {
"author" -> builder.googleplayBuilder.author(ifCanBeParsed { textOrNull() })
"description" -> builder.googleplayBuilder.description(ifCanBeParsed { textOrNull() })
"explicit" -> builder.googleplayBuilder.explicit(ifCanBeParsed { textOrNull() })
"block" -> ifCanBeParsed { textAsBooleanOrNull() }?.let(builder.googleplayBuilder::block)
"image" -> ifCanBeParsed { toHrefOnlyImageBuilder(builder.createHrefOnlyImageBuilder()) }
?.let(builder.googleplayBuilder::imageBuilder)
"block" -> {
val block = ifCanBeParsed { textAsBooleanOrNull() } ?: return
builder.googleplayBuilder.block(block)
}
"image" -> {
val imageBuilder = ifCanBeParsed { toHrefOnlyImageBuilder(builder.createHrefOnlyImageBuilder()) }
builder.googleplayBuilder.imageBuilder(imageBuilder)
}
else -> pass
}
}
Expand Down
44 changes: 34 additions & 10 deletions src/main/kotlin/dev/stalla/parser/namespace/ItunesParser.kt
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,33 @@ internal object ItunesParser : NamespaceParser() {
override fun Node.parseChannelData(builder: ProvidingPodcastBuilder) {
when (localName) {
"author" -> builder.itunesBuilder.author(ifCanBeParsed { textOrNull() })
"block" -> ifCanBeParsed { textAsBooleanOrNull() }?.let(builder.itunesBuilder::block)
"category" -> ifCanBeParsed { toItunesCategory(namespace) }?.let(builder.itunesBuilder::addCategory)
"complete" -> ifCanBeParsed { textAsBooleanOrNull() }?.let(builder.itunesBuilder::complete)
"explicit" -> ifCanBeParsed { textAsBooleanOrNull() }?.let(builder.itunesBuilder::explicit)
"image" -> ifCanBeParsed { toHrefOnlyImageBuilder(builder.createHrefOnlyImageBuilder()) }
?.let(builder.itunesBuilder::imageBuilder)
"block" -> {
val block = ifCanBeParsed { textAsBooleanOrNull() } ?: return
builder.itunesBuilder.block(block)
}
"category" -> {
val category = ifCanBeParsed { toItunesCategory(namespace) } ?: return
builder.itunesBuilder.addCategory(category)
}
"complete" -> {
val complete = ifCanBeParsed { textAsBooleanOrNull() } ?: return
builder.itunesBuilder.complete(complete)
}
"explicit" -> {
val explicit = ifCanBeParsed { textAsBooleanOrNull() } ?: return
builder.itunesBuilder.explicit(explicit)
}
"image" -> {
val image = ifCanBeParsed {
toHrefOnlyImageBuilder(builder.createHrefOnlyImageBuilder())
} ?: return
builder.itunesBuilder.imageBuilder(image)
}
"keywords" -> builder.itunesBuilder.keywords(ifCanBeParsed { textOrNull() })
"owner" -> ifCanBeParsed { toOwnerBuilder(builder.createPersonBuilder()) }
?.let(builder.itunesBuilder::ownerBuilder)
"owner" -> {
val ownerBuilder = ifCanBeParsed { toOwnerBuilder(builder.createPersonBuilder()) }
builder.itunesBuilder.ownerBuilder(ownerBuilder)
}
"subtitle" -> builder.itunesBuilder.subtitle(ifCanBeParsed { textOrNull() })
"summary" -> builder.itunesBuilder.summary(ifCanBeParsed { textOrNull() })
"type" -> builder.itunesBuilder.type(ifCanBeParsed { textOrNull() })
Expand All @@ -56,11 +74,17 @@ internal object ItunesParser : NamespaceParser() {
@Suppress("ComplexMethod")
override fun Node.parseItemData(builder: ProvidingEpisodeBuilder) {
when (localName) {
"block" -> ifCanBeParsed { textAsBooleanOrNull() }?.let(builder.itunesBuilder::block)
"block" -> {
val block = ifCanBeParsed { textAsBooleanOrNull() } ?: return
builder.itunesBuilder.block(block)
}
"duration" -> builder.itunesBuilder.duration(ifCanBeParsed { StyledDuration.of(textOrNull()) })
"episode" -> builder.itunesBuilder.episode(ifCanBeParsed { parseAsInt() })
"episodeType" -> builder.itunesBuilder.episodeType(ifCanBeParsed { textOrNull() })
"explicit" -> ifCanBeParsed { textAsBooleanOrNull() }?.let(builder.itunesBuilder::explicit)
"explicit" -> {
val explicit = ifCanBeParsed { textAsBooleanOrNull() } ?: return
builder.itunesBuilder.explicit(explicit)
}
"image" -> {
val imageBuilder = toHrefOnlyImageBuilder(builder.createHrefOnlyImageBuilder())
builder.itunesBuilder.imageBuilder(imageBuilder)
Expand Down
40 changes: 30 additions & 10 deletions src/main/kotlin/dev/stalla/parser/namespace/PodcastindexParser.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,18 @@ internal object PodcastindexParser : NamespaceParser() {

override fun Node.parseChannelData(builder: ProvidingPodcastBuilder) {
when (localName) {
"locked" -> ifCanBeParsed { toLockedBuilder(builder.createPodcastPodcastLockedBuilder()) }
?.let(builder.podcastPodcastindexBuilder::lockedBuilder)
"funding" -> ifCanBeParsed { toFundingBuilder(builder.createPodcastPodcastFundingBuilder()) }
?.let(builder.podcastPodcastindexBuilder::addFundingBuilder)
"locked" -> {
val lockedBuilder = ifCanBeParsed {
toLockedBuilder(builder.createPodcastPodcastLockedBuilder())
} ?: return
builder.podcastPodcastindexBuilder.lockedBuilder(lockedBuilder)
}
"funding" -> {
val fundingBuilder = ifCanBeParsed {
toFundingBuilder(builder.createPodcastPodcastFundingBuilder())
} ?: return
builder.podcastPodcastindexBuilder.addFundingBuilder(fundingBuilder)
}
else -> pass
}
}
Expand Down Expand Up @@ -62,12 +70,24 @@ internal object PodcastindexParser : NamespaceParser() {

override fun Node.parseItemData(builder: ProvidingEpisodeBuilder) {
when (localName) {
"chapters" -> ifCanBeParsed { toChaptersBuilder(builder.createEpisodePodcastChaptersBuilder()) }
?.let(builder.podcastindexBuilder::chaptersBuilder)
"soundbite" -> ifCanBeParsed { toSoundbiteBuilder(builder.createEpisodePodcastSoundbiteBuilder()) }
?.let(builder.podcastindexBuilder::addSoundbiteBuilder)
"transcript" -> ifCanBeParsed { toTranscriptBuilder(builder.createEpisodePodcastTranscriptBuilder()) }
?.let(builder.podcastindexBuilder::addTranscriptBuilder)
"chapters" -> {
val chaptersBuilder = ifCanBeParsed {
toChaptersBuilder(builder.createEpisodePodcastChaptersBuilder())
} ?: return
builder.podcastindexBuilder.chaptersBuilder(chaptersBuilder)
}
"soundbite" -> {
val soundbiteBuilder = ifCanBeParsed {
toSoundbiteBuilder(builder.createEpisodePodcastSoundbiteBuilder())
} ?: return
builder.podcastindexBuilder.addSoundbiteBuilder(soundbiteBuilder)
}
"transcript" -> {
val transcriptBuilder = ifCanBeParsed {
toTranscriptBuilder(builder.createEpisodePodcastTranscriptBuilder())
} ?: return
builder.podcastindexBuilder.addTranscriptBuilder(transcriptBuilder)
}
else -> pass
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ internal object PodloveSimpleChapterParser : NamespaceParser() {

override fun Node.parseItemData(builder: ProvidingEpisodeBuilder) {
when (localName) {
"chapters" -> ifCanBeParsed { toPodloveSimpleChapterBuilders(builder) }
?.let(builder.podloveBuilder::addAllSimpleChapterBuilder)
"chapters" -> {
val chapters = ifCanBeParsed { toPodloveSimpleChapterBuilders(builder) } ?: return
builder.podloveBuilder.addAllSimpleChapterBuilder(chapters)
}
else -> pass
}
}
Expand Down
49 changes: 38 additions & 11 deletions src/main/kotlin/dev/stalla/parser/namespace/RssParser.kt
Original file line number Diff line number Diff line change
Expand Up @@ -36,20 +36,36 @@ internal object RssParser : NamespaceParser() {

when (localName) {
"copyright" -> builder.copyright(ifCanBeParsed { textOrNull() })
"description" -> ifCanBeParsed { textOrNull() }?.let(builder::description)
"description" -> {
val description = ifCanBeParsed { textOrNull() } ?: return
builder.description(description)
}
"docs" -> builder.docs(ifCanBeParsed { textOrNull() })
"generator" -> builder.generator(ifCanBeParsed { textOrNull() })
"image" -> builder.imageBuilder(ifCanBeParsed { toRssImageBuilder(builder.createRssImageBuilder()) })
"language" -> ifCanBeParsed { textOrNull() }?.let(builder::language)
"language" -> {
val language = ifCanBeParsed { textOrNull() } ?: return
builder.language(language)
}
"lastBuildDate" -> builder.lastBuildDate(ifCanBeParsed { parseAsTemporalAccessor() })
"link" -> ifCanBeParsed { textOrNull() }?.let(builder::link)
"link" -> {
val link = ifCanBeParsed { textOrNull() } ?: return
builder.link(link)
}
"managingEditor" -> builder.managingEditor(ifCanBeParsed { textOrNull() })
"pubDate" -> builder.pubDate(ifCanBeParsed { parseAsTemporalAccessor() })
"title" -> ifCanBeParsed { textOrNull() }?.let(builder::title)
"title" -> {
val title = ifCanBeParsed { textOrNull() } ?: return
builder.title(title)
}
"webMaster" -> builder.webMaster(ifCanBeParsed { textOrNull() })
"ttl" -> builder.ttl(ifCanBeParsed { parseAsInt() })
"category" -> ifCanBeParsed { toRssCategoryBuilder(builder.createRssCategoryBuilder()) }
?.let(builder::addCategoryBuilder)
"category" -> {
val categoryBuilder = ifCanBeParsed {
toRssCategoryBuilder(builder.createRssCategoryBuilder())
} ?: return
builder.addCategoryBuilder(categoryBuilder)
}
"item" -> pass // Items are parsed by the root parser direcly
}
}
Expand All @@ -60,17 +76,28 @@ internal object RssParser : NamespaceParser() {

when (localName) {
"author" -> builder.author(ifCanBeParsed { textOrNull() })
"category" -> ifCanBeParsed { toRssCategoryBuilder(builder.createRssCategoryBuilder()) }
?.let(builder::addCategoryBuilder)
"category" -> {
val categoryBuilder = ifCanBeParsed {
toRssCategoryBuilder(builder.createRssCategoryBuilder())
} ?: return
builder.addCategoryBuilder(categoryBuilder)
}
"comments" -> builder.comments(ifCanBeParsed { textOrNull() })
"description" -> builder.description(ifCanBeParsed { textOrNull() })
"enclosure" -> ifCanBeParsed { toEnclosureBuilder(builder.createEnclosureBuilder()) }
?.let(builder::enclosureBuilder)
"enclosure" -> {
val enclosure = ifCanBeParsed {
toEnclosureBuilder(builder.createEnclosureBuilder())
} ?: return
builder.enclosureBuilder(enclosure)
}
"guid" -> builder.guidBuilder(ifCanBeParsed { toGuidBuilder(builder.createGuidBuilder()) })
"link" -> builder.link(ifCanBeParsed { textOrNull() })
"pubDate" -> builder.pubDate(ifCanBeParsed { parseAsTemporalAccessor() })
"source" -> builder.source(ifCanBeParsed { textOrNull() })
"title" -> ifCanBeParsed { textOrNull() }?.let(builder::title)
"title" -> {
val title = ifCanBeParsed { textOrNull() } ?: return
builder.title(title)
}
}
}

Expand Down

0 comments on commit df4663e

Please sign in to comment.