Skip to content

Commit

Permalink
Released 3.1
Browse files Browse the repository at this point in the history
  • Loading branch information
wuyr committed May 22, 2020
1 parent 2687d8c commit a43377d
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 30 deletions.
Binary file modified GoogleLibraryVersionQuerier.zip
Binary file not shown.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@

### 更新日志:

- **3.1** 修复键入任何字符和在任何文件下也会弹提示的Bug,加入限制:只有在.gradle文件中的dependencies作用域内才会搜索仓库。

- **3.0** 支持Maven、Jcenter仓库搜索,支持所有.gradle文件,英文提示改成中文(想想都是国人用,就不整英文了)。

- **2.1** 修复请求多次接口Bug。
Expand Down
29 changes: 17 additions & 12 deletions src/com/wuyr/google_library_query/GradleContributor.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,25 @@ class GradleContributor : CompletionContributor() {
override fun beforeCompletion(context: CompletionInitializationContext) {
needShow = acceptFilesType.any { context.file.name.endsWith(it) }
if (needShow) {
val lines = StringReader(context.editor.document.text).readLines()
var currentLineNumber = context.editor.run { document.getLineNumber(caretModel.offset) }
run {
//TODO: 用Stack存放{},成对取出
while (currentLineNumber >= 0 && currentLineNumber < lines.size) {
val currentLine = lines[currentLineNumber]
if (currentLine.let { it.contains("dependencies") && it.contains('{') }) {
return@run
}
currentLineNumber--
}
needShow = false
needShow = isInDependenciesBlock(context)
}
}

private fun isInDependenciesBlock(context: CompletionInitializationContext): Boolean {
val lines = StringReader(context.editor.document.text).readLines()
var currentLineNumber = context.editor.run { document.getLineNumber(caretModel.offset) }
var braceStartCount = 0
var braceEndCount = 0
while (currentLineNumber >= 0 && currentLineNumber < lines.size) {
val currentLine = lines[currentLineNumber]
braceStartCount += currentLine.count { it == '{' }
braceEndCount += currentLine.count { it == '}' }
if (currentLine.let { it.contains("dependencies") && it.contains('{') }) {
return braceStartCount - braceEndCount == 1
}
currentLineNumber--
}
return false
}

override fun fillCompletionVariants(parameters: CompletionParameters, result: CompletionResultSet) {
Expand Down
41 changes: 23 additions & 18 deletions src/com/wuyr/google_library_query/NetworkRequstter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -64,18 +64,8 @@ fun matchingLibraries2(keyword: String) = ArrayList<Pair<String, String>>().appl
runSafely {
keyword.split(":").let { libraryInfo ->
if (libraryInfo.size > 1) {
val libraryGroup = when {
libraryInfo.size > 2 && libraryInfo[0].isEmpty() -> libraryInfo[1]
libraryInfo[0].isEmpty() -> "*"
else -> "*${libraryInfo[0]}*"
}.run { if (isEmpty()) "*" else this }
val libraryName = when {
libraryInfo.size > 3 && libraryInfo[3].isEmpty() -> libraryInfo[2]
libraryInfo.size > 2 && libraryInfo[2].isEmpty() -> libraryInfo[1]
libraryInfo.size > 2 && libraryInfo[0].isEmpty() -> if (libraryInfo[2].isEmpty()) "*" else "*${libraryInfo[2]}*"
else -> if (libraryInfo[1].isEmpty()) "*" else "*${libraryInfo[1]}*"
}.run { if (isEmpty()) "*" else this }

val libraryGroup = libraryInfo.libraryGroup
val libraryName = libraryInfo.libraryName
if (libraryGroup.length >= 5 || libraryName.length >= 5) {
getSearchLibrariesUrl(libraryGroup, libraryName).request { result ->
result.filter {
Expand All @@ -98,6 +88,27 @@ fun matchingLibraries2(keyword: String) = ArrayList<Pair<String, String>>().appl
}
}

val List<String>.libraryGroup
get() = when {
size > 2 && this[0].isEmpty() -> this[1]
this[0].isEmpty() -> "*"
else -> "*${this[0]}*"
}.run { if (isEmpty()) "*" else this }

val List<String>.libraryName
get() = when {
this.size > 3 && this[3].isEmpty() -> this[2]
size > 2 && this[2].isEmpty() -> this[1]
size > 2 && this[0].isEmpty() -> if (this[2].isEmpty()) "*" else "*${this[2]}*"
else -> if (this[1].isEmpty()) "*" else "*${this[1]}*"
}.run { if (isEmpty()) "*" else this }

fun getSearchLibrariesUrl(libraryGroup: String, libraryName: String) =
BASE_URL2 + "artifact/aliyunMaven/searchArtifactByGav?_input_charset=utf-8&groupId=$libraryGroup&repoId=jcenter&artifactId=$libraryName&version=*"

fun getSearchAvailableVersionsUrl(libraryGroup: String, libraryName: String) =
BASE_URL2 + "browse/tree?_input_charset=utf-8&repoId=jcenter&path=${libraryGroup.replace('.', '/')}/$libraryName/"

@Throws(java.lang.Exception::class)
inline fun <O> search(keyword: String, block: (List<Map<String, Any>>) -> O): O? =
(BASE_URL + "search/json?k=$keyword").getAPIResponse(1)?.let { json ->
Expand All @@ -106,12 +117,6 @@ inline fun <O> search(keyword: String, block: (List<Map<String, Any>>) -> O): O?
}
}

fun getSearchLibrariesUrl(libraryGroup: String, libraryName: String) =
BASE_URL2 + "artifact/aliyunMaven/searchArtifactByGav?_input_charset=utf-8&groupId=$libraryGroup&repoId=jcenter&artifactId=$libraryName&version=*"

fun getSearchAvailableVersionsUrl(libraryGroup: String, libraryName: String) =
BASE_URL2 + "browse/tree?_input_charset=utf-8&repoId=jcenter&path=${libraryGroup.replace('.', '/')}/$libraryName/"

@Throws(java.lang.Exception::class)
inline fun <O> String.request(block: (List<MutableMap<String, Any>>) -> O): O? = getAPIResponse(1)?.let { json ->
(Gson().fromJson(json, Map::class.java) as? Map<String, Any>)?.run {
Expand Down

0 comments on commit a43377d

Please sign in to comment.