Add Text replace using regex to placeholders
This commit is contained in:
parent
6b6239f2fd
commit
89cc7ec047
|
@ -0,0 +1,34 @@
|
||||||
|
package com.artemchep.keyguard.common.service.placeholder.impl
|
||||||
|
|
||||||
|
import com.artemchep.keyguard.common.io.IO
|
||||||
|
import com.artemchep.keyguard.common.io.ioEffect
|
||||||
|
import com.artemchep.keyguard.common.service.placeholder.Placeholder
|
||||||
|
import com.artemchep.keyguard.common.service.placeholder.util.Parser
|
||||||
|
|
||||||
|
class TextReplaceRegexPlaceholder(
|
||||||
|
) : Placeholder {
|
||||||
|
private val parser = Parser(
|
||||||
|
name = "t-replace-rx",
|
||||||
|
count = 3,
|
||||||
|
)
|
||||||
|
|
||||||
|
override fun get(
|
||||||
|
key: String,
|
||||||
|
): IO<String?>? {
|
||||||
|
val params = parser.parse(key)
|
||||||
|
?: return null
|
||||||
|
val regex = params.params.getOrNull(0)
|
||||||
|
val replacement = params.params.getOrNull(1)
|
||||||
|
if (
|
||||||
|
regex == null ||
|
||||||
|
replacement == null
|
||||||
|
) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
return ioEffect {
|
||||||
|
val rg = regex.toRegex()
|
||||||
|
rg.replace(params.value, replacement)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -73,6 +73,7 @@ import com.artemchep.keyguard.common.service.placeholder.impl.CommentPlaceholder
|
||||||
import com.artemchep.keyguard.common.service.placeholder.impl.CustomPlaceholder
|
import com.artemchep.keyguard.common.service.placeholder.impl.CustomPlaceholder
|
||||||
import com.artemchep.keyguard.common.service.placeholder.impl.DateTimePlaceholder
|
import com.artemchep.keyguard.common.service.placeholder.impl.DateTimePlaceholder
|
||||||
import com.artemchep.keyguard.common.service.placeholder.impl.EnvironmentPlaceholder
|
import com.artemchep.keyguard.common.service.placeholder.impl.EnvironmentPlaceholder
|
||||||
|
import com.artemchep.keyguard.common.service.placeholder.impl.TextReplaceRegexPlaceholder
|
||||||
import com.artemchep.keyguard.common.service.placeholder.impl.TextTransformPlaceholder
|
import com.artemchep.keyguard.common.service.placeholder.impl.TextTransformPlaceholder
|
||||||
import com.artemchep.keyguard.common.service.placeholder.impl.UrlPlaceholder
|
import com.artemchep.keyguard.common.service.placeholder.impl.UrlPlaceholder
|
||||||
import com.artemchep.keyguard.common.service.placeholder.placeholderFormat
|
import com.artemchep.keyguard.common.service.placeholder.placeholderFormat
|
||||||
|
@ -474,6 +475,7 @@ fun vaultViewScreenState(
|
||||||
CommentPlaceholder(),
|
CommentPlaceholder(),
|
||||||
CustomPlaceholder(secretOrNull),
|
CustomPlaceholder(secretOrNull),
|
||||||
DateTimePlaceholder(),
|
DateTimePlaceholder(),
|
||||||
|
TextReplaceRegexPlaceholder(),
|
||||||
TextTransformPlaceholder(),
|
TextTransformPlaceholder(),
|
||||||
EnvironmentPlaceholder(),
|
EnvironmentPlaceholder(),
|
||||||
)
|
)
|
||||||
|
|
|
@ -68,7 +68,24 @@ Note: `{base}` supports exactly the same parts as `{url}` and is identical to it
|
||||||
|
|
||||||
#### Text transformation
|
#### Text transformation
|
||||||
|
|
||||||
Convert text to the other representation.
|
##### Replace text using regular expression
|
||||||
|
|
||||||
|
```
|
||||||
|
t-replace-rx:/text/search/replace/
|
||||||
|
```
|
||||||
|
the first symbol after `:` defines the separator. It may be any symbol except `{` and `}`. Trailing separator symbol is required.
|
||||||
|
|
||||||
|
_Example_:
|
||||||
|
|
||||||
|
Let the username field contain the email address 'username@example.com', then:
|
||||||
|
```
|
||||||
|
> {t-replace-rx:/{username}/.*@(.*)/$1/}
|
||||||
|
example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
for more info how it works, see the [underlying implementation's documentation](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/-regex/replace.html)
|
||||||
|
|
||||||
|
##### Convert text to the other representation
|
||||||
|
|
||||||
```
|
```
|
||||||
t-conv:/value/type/
|
t-conv:/value/type/
|
||||||
|
|
Loading…
Reference in New Issue