Слияние кода завершено, страница обновится автоматически
package clop
import "strings"
// gnu风格名字是,下划线(蛇形)或者(驼峰)都换成中横线风格
// LongOpt -> short-opt
// long_opt -> long-opt
func wordStart(b byte) bool {
return b >= 'A' && b <= 'Z' || b == '_'
}
func gnuOptionName(opt string) (string, error) {
var name strings.Builder
for i, b := range []byte(opt) {
if wordStart(b) {
if i != 0 {
name.WriteByte('-')
}
if b != '_' {
b = b - 'A' + 'a'
name.WriteByte(b)
}
continue
}
name.WriteByte(b)
}
return name.String(), nil
}
func envOptionName(opt string) (string, error) {
var name strings.Builder
for i, b := range []byte(opt) {
if wordStart(b) {
if i != 0 {
name.WriteByte('_')
}
if b == '_' {
continue
}
name.WriteByte(b)
continue
}
if b >= 'a' && b <= 'z' {
name.WriteByte(b - 'a' + 'A')
} else {
name.WriteByte('_')
}
}
return name.String(), nil
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )