Add sequence placeholder
This commit is contained in:
parent
72956bfd58
commit
d72198746f
|
|
@ -12,6 +12,7 @@ import de.idetools.filename_template.placeholders.EpochPlaceholder
|
|||
import de.idetools.filename_template.placeholders.HostPlaceholder
|
||||
import de.idetools.filename_template.placeholders.PlaceholderProcessor
|
||||
import de.idetools.filename_template.placeholders.ProjectPlaceholder
|
||||
import de.idetools.filename_template.placeholders.SequencePlaceholder
|
||||
import de.idetools.filename_template.placeholders.UserPlaceholder
|
||||
import de.idetools.filename_template.settings.FilenameTemplateSettingsState
|
||||
|
||||
|
|
@ -28,6 +29,7 @@ class InitializeFilenameTemplateActivity : StartupActivity {
|
|||
DatePlaceholder(),
|
||||
ProjectPlaceholder(),
|
||||
HostPlaceholder(),
|
||||
SequencePlaceholder(),
|
||||
UserPlaceholder(),
|
||||
DefaultPlaceholder()
|
||||
)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
package de.idetools.filename_template.placeholders
|
||||
|
||||
import com.intellij.psi.PsiFile
|
||||
|
||||
class SequencePlaceholder : Placeholder {
|
||||
override fun supports(placeholder: String): Boolean = placeholder.matches("^\\d+$".toRegex())
|
||||
|
||||
override fun process(placeholder: String, context: PlaceholderContext): String {
|
||||
var value = Integer.parseInt(placeholder)
|
||||
while (sequenceValueExists(context.directory.files, context.filename + formatSequence(value, placeholder.length))) {
|
||||
value++
|
||||
}
|
||||
return formatSequence(value, placeholder.length)
|
||||
}
|
||||
|
||||
private fun sequenceValueExists(files: Array<PsiFile>, sequence: String): Boolean {
|
||||
return files.any { it.name.startsWith(sequence) }
|
||||
}
|
||||
|
||||
private fun formatSequence(value: Int, length: Int) =
|
||||
value.toString().padStart(length, '0')
|
||||
}
|
||||
|
|
@ -58,6 +58,12 @@
|
|||
<dd>
|
||||
The username of the user running the IDE.
|
||||
</dd>
|
||||
|
||||
<dt>{###}</dt>
|
||||
<dd>
|
||||
The first available sequential number. Define the initial value and desired leading zeros in the template.
|
||||
Example: notes({042}).md => notes(042).md, notes(043).md, ...
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user