Use Option.map instead of pattern matching.

This commit is contained in:
takezoe
2013-06-25 14:44:02 +09:00
parent cfef0b80d5
commit 1ff87ff6b3
6 changed files with 174 additions and 229 deletions

View File

@@ -31,24 +31,23 @@ trait WikiControllerBase extends ControllerBase {
val owner = params("owner")
val repository = params("repository")
getRepository(owner, repository, baseUrl) match {
case Some(repoInfo) => getWikiPage(owner, repository, "Home") match {
case Some(page) => wiki.html.wiki("Home", page, repoInfo, isWritable(owner, repository, context.loginAccount))
case None => redirect("/%s/%s/wiki/Home/_edit".format(owner, repository))
}
case None => NotFound()
}
getRepository(owner, repository, baseUrl).map { repositoryInfo =>
getWikiPage(owner, repository, "Home").map { page =>
wiki.html.wiki("Home", page, repositoryInfo, isWritable(owner, repository, context.loginAccount))
} getOrElse redirect("/%s/%s/wiki/Home/_edit".format(owner, repository))
} getOrElse NotFound()
})
get("/:owner/:repository/wiki/:page")(readableRepository {
val owner = params("owner")
val repository = params("repository")
val pageName = params("page")
getWikiPage(owner, repository, pageName) match {
case Some(page) => wiki.html.wiki(pageName, page, getRepository(owner, repository, baseUrl).get, isWritable(owner, repository, context.loginAccount))
case None => redirect("/%s/%s/wiki/%s/_edit".format(owner, repository, pageName)) // TODO URLEncode
}
getRepository(owner, repository, baseUrl).map { repositoryInfo =>
getWikiPage(owner, repository, pageName).map { page =>
wiki.html.wiki(pageName, page, repositoryInfo, isWritable(owner, repository, context.loginAccount))
} getOrElse redirect("/%s/%s/wiki/%s/_edit".format(owner, repository, pageName)) // TODO URLEncode
} getOrElse NotFound()
})
get("/:owner/:repository/wiki/:page/_history")(readableRepository {
@@ -56,12 +55,11 @@ trait WikiControllerBase extends ControllerBase {
val repository = params("repository")
val page = params("page")
getRepository(owner, repository, baseUrl) match {
case Some(repoInfo) => JGitUtil.withGit(getWikiRepositoryDir(owner, repository)){ git =>
wiki.html.wikihistory(Some(page), JGitUtil.getCommitLog(git, "master", path = page + ".md")._1, repoInfo)
getRepository(owner, repository, baseUrl).map { repositoryInfo =>
JGitUtil.withGit(getWikiRepositoryDir(owner, repository)){ git =>
wiki.html.wikihistory(Some(page), JGitUtil.getCommitLog(git, "master", path = page + ".md")._1, repositoryInfo)
}
case None => NotFound()
}
} getOrElse NotFound()
})
get("/:owner/:repository/wiki/:page/_compare/:commitId")(readableRepository {
@@ -69,11 +67,12 @@ trait WikiControllerBase extends ControllerBase {
val repository = params("repository")
val page = params("page")
val commitId = params("commitId").split("\\.\\.\\.")
JGitUtil.withGit(getWikiRepositoryDir(owner, repository)){ git =>
wiki.html.wikicompare(Some(page),
getWikiDiffs(git, commitId(0), commitId(1)), getRepository(owner, repository, baseUrl).get)
}
getRepository(owner, repository, baseUrl).map { repositoryInfo =>
JGitUtil.withGit(getWikiRepositoryDir(owner, repository)){ git =>
wiki.html.wikicompare(Some(page), getWikiDiffs(git, commitId(0), commitId(1)), repositoryInfo)
}
} getOrElse NotFound()
})
get("/:owner/:repository/wiki/_compare/:commitId")(readableRepository {
@@ -81,12 +80,11 @@ trait WikiControllerBase extends ControllerBase {
val repository = params("repository")
val commitId = params("commitId").split("\\.\\.\\.")
getRepository(owner, repository, baseUrl) match {
case Some(repoInfo) => JGitUtil.withGit(getWikiRepositoryDir(owner, repository)){ git =>
wiki.html.wikicompare(None, getWikiDiffs(git, commitId(0), commitId(1)), repoInfo)
getRepository(owner, repository, baseUrl).map { repositoryInfo =>
JGitUtil.withGit(getWikiRepositoryDir(owner, repository)){ git =>
wiki.html.wikicompare(None, getWikiDiffs(git, commitId(0), commitId(1)), repositoryInfo)
}
case None => NotFound()
}
} getOrElse NotFound()
})
get("/:owner/:repository/wiki/:page/_edit")(writableRepository {
@@ -94,10 +92,8 @@ trait WikiControllerBase extends ControllerBase {
val repository = params("repository")
val page = params("page")
getRepository(owner, repository, baseUrl) match {
case Some(repoInfo) => wiki.html.wikiedit(page, getWikiPage(owner, repository, page), repoInfo)
case None => NotFound()
}
getRepository(owner, repository, baseUrl).map(
wiki.html.wikiedit(page, getWikiPage(owner, repository, page), _)) getOrElse NotFound()
})
post("/:owner/:repository/wiki/_edit", editForm)(writableRepository { form =>
@@ -115,10 +111,7 @@ trait WikiControllerBase extends ControllerBase {
val owner = params("owner")
val repository = params("repository")
getRepository(owner, repository, baseUrl) match {
case Some(repoInfo) => wiki.html.wikiedit("", None, repoInfo)
case None => NotFound()
}
getRepository(owner, repository, baseUrl).map(wiki.html.wikiedit("", None, _)) getOrElse NotFound()
})
post("/:owner/:repository/wiki/_new", newForm)(writableRepository { form =>
@@ -146,22 +139,20 @@ trait WikiControllerBase extends ControllerBase {
val owner = params("owner")
val repository = params("repository")
getRepository(owner, repository, baseUrl) match {
case Some(repoInfo) => wiki.html.wikipages(getWikiPageList(owner, repository), repoInfo, isWritable(owner, repository, context.loginAccount))
case None => NotFound()
}
getRepository(owner, repository, baseUrl).map {
wiki.html.wikipages(getWikiPageList(owner, repository), _, isWritable(owner, repository, context.loginAccount))
} getOrElse NotFound()
})
get("/:owner/:repository/wiki/_history")(readableRepository {
val owner = params("owner")
val repository = params("repository")
getRepository(owner, repository, baseUrl) match {
case Some(repoInfo) => JGitUtil.withGit(getWikiRepositoryDir(owner, repository)){ git =>
wiki.html.wikihistory(None, JGitUtil.getCommitLog(git, "master")._1, repoInfo)
getRepository(owner, repository, baseUrl).map { repositoryInfo =>
JGitUtil.withGit(getWikiRepositoryDir(owner, repository)){ git =>
wiki.html.wikihistory(None, JGitUtil.getCommitLog(git, "master")._1, repositoryInfo)
}
case None => NotFound()
}
} getOrElse NotFound()
})
get("/:owner/:repository/wiki/_blob/*")(readableRepository {
@@ -169,13 +160,10 @@ trait WikiControllerBase extends ControllerBase {
val repository = params("repository")
val path = multiParams("splat").head
getFileContent(owner, repository, path) match {
case Some(content) => {
getFileContent(owner, repository, path).map { content =>
contentType = "application/octet-stream"
content
}
case None => NotFound()
}
} getOrElse NotFound()
})
private def unique: Constraint = new Constraint(){