File tree Expand file tree Collapse file tree 4 files changed +35
-6
lines changed
src/main/kotlin/com/github/xepozz/crontab Expand file tree Collapse file tree 4 files changed +35
-6
lines changed Original file line number Diff line number Diff line change @@ -31,4 +31,28 @@ object CrontabInspectionUtil {
3131 }
3232 )
3333 }
34+
35+ fun registerSimplifyRange (holder : ProblemsHolder , element : CrontabTimeRange ) {
36+ val interval = " ${element.first} "
37+
38+ holder.registerProblem(
39+ element,
40+ " Invalid time range. One of intervals can be eliminated." ,
41+ object : CrontabScheduleQuickFix () {
42+ override fun getName () = " Replace with \" $interval \" "
43+
44+ override fun applyFix (project : Project , descriptor : ProblemDescriptor ) {
45+ val psiElement = descriptor.psiElement as ? CrontabTimeRange ? : return
46+ if (psiElement.isWritable) {
47+ psiElement.replace(
48+ CrontabElementFactory .createCrontabTimeExact(
49+ project,
50+ psiElement.first,
51+ )
52+ )
53+ }
54+ }
55+ }
56+ )
57+ }
3458}
Original file line number Diff line number Diff line change @@ -19,6 +19,9 @@ class CrontabScheduleTimeRangeInspection : LocalInspectionTool() {
1919 if (element.first > element.second) {
2020 CrontabInspectionUtil .registerSwapRange(holder, element)
2121 }
22+ if (element.first == element.second) {
23+ CrontabInspectionUtil .registerSimplifyRange(holder, element)
24+ }
2225 super .visitTimeRange(element)
2326 }
2427 }
Original file line number Diff line number Diff line change @@ -11,6 +11,11 @@ object CrontabElementFactory {
1111
1212 return PsiTreeUtil .findChildOfType(file, CrontabTimeRange ::class .java) as CrontabTimeRange
1313 }
14+ fun createCrontabTimeExact (project : Project , value : Int ): CrontabTimeExact {
15+ val file = createFile(project, " $value " )
16+
17+ return PsiTreeUtil .findChildOfType(file, CrontabTimeExact ::class .java) as CrontabTimeExact
18+ }
1419
1520 fun createFile (project : Project , text : String ): CrontabFile {
1621 val name = " dummy.crontab"
Original file line number Diff line number Diff line change @@ -4,14 +4,11 @@ import com.github.xepozz.crontab.language.psi.CrontabTimeRange
44
55object CrontabImplUtil {
66 @JvmStatic
7- fun getFirst (element : CrontabTimeRange ) = element.node.firstChildNode.text.toInt()
7+ fun getFirst (element : CrontabTimeRange ) = element.node.firstChildNode.text.toIntOrNull() ? : 0
88
99 @JvmStatic
10- fun getSecond (element : CrontabTimeRange ): Int = element.node.lastChildNode.text.toInt()
10+ fun getSecond (element : CrontabTimeRange ): Int = element.node.lastChildNode.text.toIntOrNull() ? : 0
1111
1212 @JvmStatic
13- fun getIntRange (element : CrontabTimeRange ): IntRange = IntRange (
14- element.node.lastChildNode.text.toInt(),
15- element.node.firstChildNode.text.toInt(),
16- )
13+ fun getIntRange (element : CrontabTimeRange ): IntRange = IntRange (element.first, element.second)
1714}
You can’t perform that action at this time.
0 commit comments