Skip to content

Commit

Permalink
tslint: import more missing rules (WEB-35917)
Browse files Browse the repository at this point in the history
  • Loading branch information
undeadcat committed Nov 22, 2018
1 parent 09439ec commit a48a088
Showing 1 changed file with 73 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,10 @@ val TslintRulesSet: Set<TsLintSimpleRule<out Any>> = setOf(ImportDestructuringSp
AlignFunctionCallParametersRule(),
MaxBlankLinesRule(),
WhitespaceAtEndOfLineRule(),
SpaceAtLineCommentStartRule()
SpaceAtLineCommentStartRule(),
MergeImportsFromSameModuleRule(),
FilenameConventionRule(),
ForceCurlyBracesRule()
)

class ImportDestructuringSpacingRule : TsLintSimpleRule<Boolean>("import-destructuring-spacing") {
Expand Down Expand Up @@ -624,3 +627,72 @@ class SpaceAtLineCommentStartRule : TsLintSimpleRule<Boolean>("comment-format")
languageSettings.LINE_COMMENT_AT_FIRST_COLUMN = false
}
}

class MergeImportsFromSameModuleRule : TsLintSimpleRule<Boolean>("no-duplicate-imports") {
override fun getConfigValue(option: TslintJsonOption): Boolean? = true
override fun getSettingsValue(languageSettings: CommonCodeStyleSettings, codeStyleSettings: JSCodeStyleSettings): Boolean {
return codeStyleSettings.isMergeImports
}

override fun setValue(languageSettings: CommonCodeStyleSettings, codeStyleSettings: JSCodeStyleSettings, value: Boolean) {
codeStyleSettings.isMergeImports = value
}
}

class FilenameConventionRule : TsLintSimpleRule<JSCodeStyleSettings.JSFileNameStyle>("file-name-casing") {
override fun getConfigValue(option: TslintJsonOption): JSCodeStyleSettings.JSFileNameStyle? {
val string = option.getStringValues().elementAtOrNull(0)
if (string == "camel-case") {
return JSCodeStyleSettings.JSFileNameStyle.CAMEL_CASE
}
if (string == "pascal-case") {
return JSCodeStyleSettings.JSFileNameStyle.PASCAL_CASE
}
if (string == "kebab-case") {
return JSCodeStyleSettings.JSFileNameStyle.LISP_CASE
}
return null

}

override fun getSettingsValue(languageSettings: CommonCodeStyleSettings,
codeStyleSettings: JSCodeStyleSettings): JSCodeStyleSettings.JSFileNameStyle {
return codeStyleSettings.FILE_NAME_STYLE
}

override fun setValue(languageSettings: CommonCodeStyleSettings,
codeStyleSettings: JSCodeStyleSettings,
value: JSCodeStyleSettings.JSFileNameStyle) {
codeStyleSettings.FILE_NAME_STYLE = value
}
}

class ForceCurlyBracesRule : TsLintSimpleRule<Int>("curly") {
override fun getSettingsValue(languageSettings: CommonCodeStyleSettings, codeStyleSettings: JSCodeStyleSettings): Int {
val ifBraceForce = languageSettings.IF_BRACE_FORCE
if (languageSettings.FOR_BRACE_FORCE == ifBraceForce &&
languageSettings.WHILE_BRACE_FORCE == ifBraceForce &&
languageSettings.DOWHILE_BRACE_FORCE == ifBraceForce) {
return ifBraceForce
}
return -1;
}

override fun setValue(languageSettings: CommonCodeStyleSettings, codeStyleSettings: JSCodeStyleSettings, value: Int) {
languageSettings.IF_BRACE_FORCE = value
languageSettings.FOR_BRACE_FORCE = value
languageSettings.WHILE_BRACE_FORCE = value
languageSettings.DOWHILE_BRACE_FORCE = value
}

override fun getConfigValue(option: TslintJsonOption): Int? {
val values = option.getStringValues()
if (values.contains("as-needed")) {
return CommonCodeStyleSettings.DO_NOT_FORCE
}
if (values.contains("ignore-same-line")){
return CommonCodeStyleSettings.FORCE_BRACES_IF_MULTILINE
}
return CommonCodeStyleSettings.FORCE_BRACES_ALWAYS
}
}

0 comments on commit a48a088

Please sign in to comment.