Skip to content

Commit 1e85cf7

Browse files
author
Roman Glushko
committed
#143 Extracted convertor to a separate reusable component
1 parent 4a0b741 commit 1e85cf7

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/com/magento/idea/magento2plugin/actions/generation/dialog/NewCronjobDialog.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder;
1616
import com.magento.idea.magento2plugin.indexes.CronGroupIndex;
1717
import com.magento.idea.magento2plugin.ui.FilteredComboBox;
18+
import com.magento.idea.magento2plugin.util.CamelCaseToSnakeCase;
1819
import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectory;
1920

2021
import javax.swing.*;
@@ -42,11 +43,13 @@ public class NewCronjobDialog extends AbstractDialog {
4243
private Project project;
4344
private String moduleName;
4445
private NewCronjobValidator validator;
46+
private CamelCaseToSnakeCase camelCaseToSnakeCase;
4547

4648
public NewCronjobDialog(Project project, PsiDirectory directory) {
4749
this.project = project;
4850
this.moduleName = GetModuleNameByDirectory.getInstance(project).execute(directory);
4951
this.validator = NewCronjobValidator.getInstance();
52+
this.camelCaseToSnakeCase = CamelCaseToSnakeCase.getInstance();
5053

5154
setContentPane(contentPane);
5255
setModal(true);
@@ -179,7 +182,7 @@ private String suggestCronjobName(String moduleName, String cronjobClassname) {
179182
return this.moduleName.toLowerCase();
180183
}
181184

182-
String cronjobClassnameToSnakeCase = cronjobClassname.replaceAll("\\B([A-Z])", "_$1").toLowerCase();
185+
String cronjobClassnameToSnakeCase = this.camelCaseToSnakeCase.convert(cronjobClassname);
183186

184187
return this.moduleName.toLowerCase() + "_" + cronjobClassnameToSnakeCase;
185188
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
package com.magento.idea.magento2plugin.util;
6+
7+
public class CamelCaseToSnakeCase {
8+
private static CamelCaseToSnakeCase INSTANCE = null;
9+
10+
public static CamelCaseToSnakeCase getInstance() {
11+
if (null == INSTANCE) {
12+
INSTANCE = new CamelCaseToSnakeCase();
13+
}
14+
return INSTANCE;
15+
}
16+
17+
/**
18+
* Convert camelCaseString to snake_case_string
19+
*
20+
* @param camelCaseString
21+
*
22+
* @return String
23+
*/
24+
public String convert(String camelCaseString) {
25+
return camelCaseString.replaceAll("\\B([A-Z])", "_$1").toLowerCase();
26+
}
27+
}

0 commit comments

Comments
 (0)