refactor: reformat code

This commit is contained in:
Akash Yadav
2022-12-10 18:27:47 +05:30
parent c7b4ad8a62
commit cff5d76e95
@@ -22,315 +22,329 @@ import com.android.aaptcompiler.android.isTruthy
/** attempt to parse the Mobile Country Code */
fun parseMcc(part: String, config: ConfigDescription): Boolean {
if (part == WILDCARD_NAME) {
config.mcc = 0
return true
}
// mnc may have a dynamic sized value ranging from 2 to 3 digits. It is possible to have unique
// mcn such as 01 and 001 that are represented by the number digits.
if (!part.startsWith("mnc") || part.length !in 4..6) {
return false
}
val value = part.substring(3).toIntOrNull()?.toShort() ?: return false
config.mcc = value
if (part == WILDCARD_NAME) {
config.mcc = 0
return true
}
// mnc may have a dynamic sized value ranging from 2 to 3 digits. It is possible to have unique
// mcn such as 01 and 001 that are represented by the number digits.
if (!part.startsWith("mnc") || part.length !in 4..6) {
return false
}
val value = part.substring(3).toIntOrNull()?.toShort() ?: return false
config.mcc = value
return true
}
/** attempt to parse the Mobile Network Code */
fun parseMnc(part: String, config: ConfigDescription): Boolean {
if (part == WILDCARD_NAME) {
config.mnc = 0
return true
}
// The only acceptable format is "mncDDD" (where D is a digit).
if (!part.startsWith("mnc") || part.length != 6) {
return false
}
val value = part.substring(3).toIntOrNull()?.toShort() ?: return false
// Zero is reserved, so we need to use MINC_ZERO instead.
config.mnc = if (value.isTruthy()) value else AConfiguration.ACONFIGURATION_MNC_ZERO.toShort()
if (part == WILDCARD_NAME) {
config.mnc = 0
return true
}
// The only acceptable format is "mncDDD" (where D is a digit).
if (!part.startsWith("mnc") || part.length != 6) {
return false
}
val value = part.substring(3).toIntOrNull()?.toShort() ?: return false
// Zero is reserved, so we need to use MINC_ZERO instead.
config.mnc = if (value.isTruthy()) value else AConfiguration.ACONFIGURATION_MNC_ZERO.toShort()
return true
}
// TODO(@daniellabar): Make more like the aapt2 parser.
fun parseLayoutDirection(part: String, config: ConfigDescription) : Boolean {
val value = when(part) {
WILDCARD_NAME -> ResTableConfig.SCREEN_LAYOUT.DIR_ANY
"ldltr" -> ResTableConfig.SCREEN_LAYOUT.DIR_LTR
"ldrtl" -> ResTableConfig.SCREEN_LAYOUT.DIR_RTL
else -> return false
fun parseLayoutDirection(part: String, config: ConfigDescription): Boolean {
val value =
when (part) {
WILDCARD_NAME -> ResTableConfig.SCREEN_LAYOUT.DIR_ANY
"ldltr" -> ResTableConfig.SCREEN_LAYOUT.DIR_LTR
"ldrtl" -> ResTableConfig.SCREEN_LAYOUT.DIR_RTL
else -> return false
}
// AND existing config with the mask and then OR with the found layout direction.
config.screenLayout =
maskAndApply(config.screenLayout, ResTableConfig.SCREEN_LAYOUT.DIR_MASK, value)
return true
// AND existing config with the mask and then OR with the found layout direction.
config.screenLayout =
maskAndApply(config.screenLayout, ResTableConfig.SCREEN_LAYOUT.DIR_MASK, value)
return true
}
fun parseSmallestScreenWidthDp(part: String, config: ConfigDescription): Boolean {
if (part == WILDCARD_NAME) {
config.smallestScreenWidthDp = 0
return true
}
if (!part.startsWith("sw") || !part.endsWith("dp")) {
return false
}
val value = part.substring(2, part.length-2).toIntOrNull() ?: return false
config.smallestScreenWidthDp = value
if (part == WILDCARD_NAME) {
config.smallestScreenWidthDp = 0
return true
}
if (!part.startsWith("sw") || !part.endsWith("dp")) {
return false
}
val value = part.substring(2, part.length - 2).toIntOrNull() ?: return false
config.smallestScreenWidthDp = value
return true
}
fun parseScreenWidthDp(part: String, config: ConfigDescription): Boolean {
if (part == WILDCARD_NAME) {
config.screenWidthDp = 0
return true
}
if (!part.startsWith('w') || !part.endsWith("dp")) {
return false
}
val value = part.substring(1, part.length-2).toIntOrNull() ?: return false
config.screenWidthDp = value
if (part == WILDCARD_NAME) {
config.screenWidthDp = 0
return true
}
if (!part.startsWith('w') || !part.endsWith("dp")) {
return false
}
val value = part.substring(1, part.length - 2).toIntOrNull() ?: return false
config.screenWidthDp = value
return true
}
fun parseScreenHeightDp(part: String, config: ConfigDescription): Boolean {
if (part == WILDCARD_NAME) {
config.screenHeightDp = 0
return true
}
if (!part.startsWith('h') || !part.endsWith("dp")) {
return false
}
val value = part.substring(1, part.length-2).toIntOrNull() ?: return false
config.screenHeightDp = value
if (part == WILDCARD_NAME) {
config.screenHeightDp = 0
return true
}
if (!part.startsWith('h') || !part.endsWith("dp")) {
return false
}
val value = part.substring(1, part.length - 2).toIntOrNull() ?: return false
config.screenHeightDp = value
return true
}
fun parseScreenLayoutSize(part: String, config: ConfigDescription): Boolean {
val value = when (part) {
WILDCARD_NAME -> 0
"small" -> ResTableConfig.SCREEN_LAYOUT.SIZE_SMALL
"normal" -> ResTableConfig.SCREEN_LAYOUT.SIZE_NORMAL
"large" -> ResTableConfig.SCREEN_LAYOUT.SIZE_LARGE
"xlarge" -> ResTableConfig.SCREEN_LAYOUT.SIZE_XLARGE
else -> return false
val value =
when (part) {
WILDCARD_NAME -> 0
"small" -> ResTableConfig.SCREEN_LAYOUT.SIZE_SMALL
"normal" -> ResTableConfig.SCREEN_LAYOUT.SIZE_NORMAL
"large" -> ResTableConfig.SCREEN_LAYOUT.SIZE_LARGE
"xlarge" -> ResTableConfig.SCREEN_LAYOUT.SIZE_XLARGE
else -> return false
}
// AND existing config with the mask and then OR with the found layout size.
config.screenLayout =
maskAndApply(config.screenLayout, ResTableConfig.SCREEN_LAYOUT.SIZE_MASK, value)
return true
// AND existing config with the mask and then OR with the found layout size.
config.screenLayout =
maskAndApply(config.screenLayout, ResTableConfig.SCREEN_LAYOUT.SIZE_MASK, value)
return true
}
fun parseScreenLayoutLong(part: String, config: ConfigDescription): Boolean {
val value = when (part) {
WILDCARD_NAME -> ResTableConfig.SCREEN_LAYOUT.SCREENLONG_ANY
"long" -> ResTableConfig.SCREEN_LAYOUT.SCREENLONG_YES
"notlong" -> ResTableConfig.SCREEN_LAYOUT.SCREENLONG_NO
else -> return false
val value =
when (part) {
WILDCARD_NAME -> ResTableConfig.SCREEN_LAYOUT.SCREENLONG_ANY
"long" -> ResTableConfig.SCREEN_LAYOUT.SCREENLONG_YES
"notlong" -> ResTableConfig.SCREEN_LAYOUT.SCREENLONG_NO
else -> return false
}
// AND existing config with the mask and then OR with the found layout size.
config.screenLayout =
maskAndApply(config.screenLayout, ResTableConfig.SCREEN_LAYOUT.SCREENLONG_MASK, value)
return true
// AND existing config with the mask and then OR with the found layout size.
config.screenLayout =
maskAndApply(config.screenLayout, ResTableConfig.SCREEN_LAYOUT.SCREENLONG_MASK, value)
return true
}
fun parseScreenRound(part: String, config: ConfigDescription): Boolean {
val value = when (part) {
WILDCARD_NAME -> ResTableConfig.SCREEN_LAYOUT2.SCREENROUND_ANY
"round" -> ResTableConfig.SCREEN_LAYOUT2.SCREENROUND_YES
"notround" -> ResTableConfig.SCREEN_LAYOUT2.SCREENROUND_NO
else -> return false
val value =
when (part) {
WILDCARD_NAME -> ResTableConfig.SCREEN_LAYOUT2.SCREENROUND_ANY
"round" -> ResTableConfig.SCREEN_LAYOUT2.SCREENROUND_YES
"notround" -> ResTableConfig.SCREEN_LAYOUT2.SCREENROUND_NO
else -> return false
}
config.screenLayout2 =
maskAndApply(config.screenLayout2, ResTableConfig.SCREEN_LAYOUT2.SCREENROUND_MASK, value)
return true
config.screenLayout2 =
maskAndApply(config.screenLayout2, ResTableConfig.SCREEN_LAYOUT2.SCREENROUND_MASK, value)
return true
}
fun parseWideColorGamut(part: String, config: ConfigDescription): Boolean {
val value = when (part) {
WILDCARD_NAME -> ResTableConfig.COLOR_MODE.WIDE_GAMUT_ANY
"widecg" -> ResTableConfig.COLOR_MODE.WIDE_GAMUT_YES
"nowidecg" -> ResTableConfig.COLOR_MODE.WIDE_GAMUT_NO
else -> return false
val value =
when (part) {
WILDCARD_NAME -> ResTableConfig.COLOR_MODE.WIDE_GAMUT_ANY
"widecg" -> ResTableConfig.COLOR_MODE.WIDE_GAMUT_YES
"nowidecg" -> ResTableConfig.COLOR_MODE.WIDE_GAMUT_NO
else -> return false
}
config.colorMode =
maskAndApply(config.colorMode, ResTableConfig.COLOR_MODE.WIDE_GAMUT_MASK, value)
return true
config.colorMode =
maskAndApply(config.colorMode, ResTableConfig.COLOR_MODE.WIDE_GAMUT_MASK, value)
return true
}
fun parseHdr(part: String, config: ConfigDescription): Boolean {
val value = when (part) {
WILDCARD_NAME -> ResTableConfig.COLOR_MODE.HDR_ANY
"highdr" -> ResTableConfig.COLOR_MODE.HDR_YES
"lowdr" -> ResTableConfig.COLOR_MODE.HDR_NO
else -> return false
val value =
when (part) {
WILDCARD_NAME -> ResTableConfig.COLOR_MODE.HDR_ANY
"highdr" -> ResTableConfig.COLOR_MODE.HDR_YES
"lowdr" -> ResTableConfig.COLOR_MODE.HDR_NO
else -> return false
}
config.colorMode = maskAndApply(config.colorMode, ResTableConfig.COLOR_MODE.HDR_MASK, value)
return true
config.colorMode = maskAndApply(config.colorMode, ResTableConfig.COLOR_MODE.HDR_MASK, value)
return true
}
fun parseOrientation(part: String, config: ConfigDescription): Boolean {
config.orientation = when (part) {
WILDCARD_NAME -> ResTableConfig.ORIENTATION.ANY
"port" -> ResTableConfig.ORIENTATION.PORT
"land" -> ResTableConfig.ORIENTATION.LAND
"square" -> ResTableConfig.ORIENTATION.SQUARE
else -> return false
config.orientation =
when (part) {
WILDCARD_NAME -> ResTableConfig.ORIENTATION.ANY
"port" -> ResTableConfig.ORIENTATION.PORT
"land" -> ResTableConfig.ORIENTATION.LAND
"square" -> ResTableConfig.ORIENTATION.SQUARE
else -> return false
}
return true
return true
}
fun parseUiModeType(part: String, config: ConfigDescription): Boolean {
val value = when (part) {
WILDCARD_NAME -> ResTableConfig.UI_MODE.TYPE_ANY
"desk" -> ResTableConfig.UI_MODE.TYPE_DESK
"car" -> ResTableConfig.UI_MODE.TYPE_CAR
"television" -> ResTableConfig.UI_MODE.TYPE_TELEVISION
"appliance" -> ResTableConfig.UI_MODE.TYPE_APPLIANCE
"watch" -> ResTableConfig.UI_MODE.TYPE_WATCH
"vrheadset" -> ResTableConfig.UI_MODE.TYPE_VR_HEADSET
else -> return false
val value =
when (part) {
WILDCARD_NAME -> ResTableConfig.UI_MODE.TYPE_ANY
"desk" -> ResTableConfig.UI_MODE.TYPE_DESK
"car" -> ResTableConfig.UI_MODE.TYPE_CAR
"television" -> ResTableConfig.UI_MODE.TYPE_TELEVISION
"appliance" -> ResTableConfig.UI_MODE.TYPE_APPLIANCE
"watch" -> ResTableConfig.UI_MODE.TYPE_WATCH
"vrheadset" -> ResTableConfig.UI_MODE.TYPE_VR_HEADSET
else -> return false
}
config.uiMode = maskAndApply(config.uiMode, ResTableConfig.UI_MODE.TYPE_MASK, value)
return true
config.uiMode = maskAndApply(config.uiMode, ResTableConfig.UI_MODE.TYPE_MASK, value)
return true
}
fun parseUiModeNight(part: String, config: ConfigDescription): Boolean {
val value = when (part) {
WILDCARD_NAME -> ResTableConfig.UI_MODE.NIGHT_ANY
"night" -> ResTableConfig.UI_MODE.NIGHT_YES
"notnight" -> ResTableConfig.UI_MODE.NIGHT_NO
else -> return false
val value =
when (part) {
WILDCARD_NAME -> ResTableConfig.UI_MODE.NIGHT_ANY
"night" -> ResTableConfig.UI_MODE.NIGHT_YES
"notnight" -> ResTableConfig.UI_MODE.NIGHT_NO
else -> return false
}
config.uiMode = maskAndApply(config.uiMode, ResTableConfig.UI_MODE.NIGHT_MASK, value)
return true
config.uiMode = maskAndApply(config.uiMode, ResTableConfig.UI_MODE.NIGHT_MASK, value)
return true
}
fun parseDensity(part: String, config: ConfigDescription): Boolean {
if (part.isNotEmpty() && part[0].isLetter()) {
config.density = when (part) {
WILDCARD_NAME -> ResTableConfig.DENSITY.DEFAULT
"anydpi" -> ResTableConfig.DENSITY.ANY
"nodpi" -> ResTableConfig.DENSITY.NONE
"ldpi" -> ResTableConfig.DENSITY.LOW
"mdpi" -> ResTableConfig.DENSITY.MEDIUM
"tvdpi" -> ResTableConfig.DENSITY.TV
"hdpi" -> ResTableConfig.DENSITY.HIGH
"xhdpi" -> ResTableConfig.DENSITY.XHIGH
"xxhdpi" -> ResTableConfig.DENSITY.XXHIGH
"xxxhdpi" -> ResTableConfig.DENSITY.XXXHIGH
else -> return false
}
return true
} else {
// we might be dealing with "<number>dpi"
if (!part.endsWith("dpi")) {
return false
}
val value = part.substring(0, part.length-3).toIntOrNull() ?: return false
config.density = value
return true
if (part.isNotEmpty() && part[0].isLetter()) {
config.density =
when (part) {
WILDCARD_NAME -> ResTableConfig.DENSITY.DEFAULT
"anydpi" -> ResTableConfig.DENSITY.ANY
"nodpi" -> ResTableConfig.DENSITY.NONE
"ldpi" -> ResTableConfig.DENSITY.LOW
"mdpi" -> ResTableConfig.DENSITY.MEDIUM
"tvdpi" -> ResTableConfig.DENSITY.TV
"hdpi" -> ResTableConfig.DENSITY.HIGH
"xhdpi" -> ResTableConfig.DENSITY.XHIGH
"xxhdpi" -> ResTableConfig.DENSITY.XXHIGH
"xxxhdpi" -> ResTableConfig.DENSITY.XXXHIGH
else -> return false
}
return true
} else {
// we might be dealing with "<number>dpi"
if (!part.endsWith("dpi")) {
return false
}
val value = part.substring(0, part.length - 3).toIntOrNull() ?: return false
config.density = value
return true
}
}
fun parseTouchscreen(part: String, config: ConfigDescription): Boolean {
config.touchscreen = when (part) {
WILDCARD_NAME -> ResTableConfig.TOUCHSCREEN.ANY
"notouch" -> ResTableConfig.TOUCHSCREEN.NOTOUCH
"stylus" -> ResTableConfig.TOUCHSCREEN.STYLUS
"finger" -> ResTableConfig.TOUCHSCREEN.FINGER
else -> return false
config.touchscreen =
when (part) {
WILDCARD_NAME -> ResTableConfig.TOUCHSCREEN.ANY
"notouch" -> ResTableConfig.TOUCHSCREEN.NOTOUCH
"stylus" -> ResTableConfig.TOUCHSCREEN.STYLUS
"finger" -> ResTableConfig.TOUCHSCREEN.FINGER
else -> return false
}
return true
return true
}
fun parseKeysHidden(part: String, config: ConfigDescription): Boolean {
val value = when (part) {
WILDCARD_NAME -> ResTableConfig.INPUT_FLAGS.KEYSHIDDEN_ANY
"keysexposed" -> ResTableConfig.INPUT_FLAGS.KEYSHIDDEN_NO
"keyshidden" -> ResTableConfig.INPUT_FLAGS.KEYSHIDDEN_YES
"keyssoft" -> ResTableConfig.INPUT_FLAGS.KEYSHIDDEN_SOFT
else -> return false
val value =
when (part) {
WILDCARD_NAME -> ResTableConfig.INPUT_FLAGS.KEYSHIDDEN_ANY
"keysexposed" -> ResTableConfig.INPUT_FLAGS.KEYSHIDDEN_NO
"keyshidden" -> ResTableConfig.INPUT_FLAGS.KEYSHIDDEN_YES
"keyssoft" -> ResTableConfig.INPUT_FLAGS.KEYSHIDDEN_SOFT
else -> return false
}
config.inputFlags =
maskAndApply(config.inputFlags, ResTableConfig.INPUT_FLAGS.KEYSHIDDEN_MASK, value)
return true
config.inputFlags =
maskAndApply(config.inputFlags, ResTableConfig.INPUT_FLAGS.KEYSHIDDEN_MASK, value)
return true
}
fun parseKeyboard(part: String, config: ConfigDescription): Boolean {
config.keyboard = when (part) {
WILDCARD_NAME -> ResTableConfig.KEYBOARD.ANY
"nokeys" -> ResTableConfig.KEYBOARD.NOKEYS
"qwerty" -> ResTableConfig.KEYBOARD.QWERTY
"12key" -> ResTableConfig.KEYBOARD.TWELVEKEY
else -> return false
config.keyboard =
when (part) {
WILDCARD_NAME -> ResTableConfig.KEYBOARD.ANY
"nokeys" -> ResTableConfig.KEYBOARD.NOKEYS
"qwerty" -> ResTableConfig.KEYBOARD.QWERTY
"12key" -> ResTableConfig.KEYBOARD.TWELVEKEY
else -> return false
}
return true
return true
}
fun parseNavHidden(part: String, config: ConfigDescription): Boolean {
val value = when (part) {
WILDCARD_NAME -> ResTableConfig.INPUT_FLAGS.NAVHIDDEN_ANY
"navexposed" -> ResTableConfig.INPUT_FLAGS.NAVHIDDEN_NO
"navhidden" -> ResTableConfig.INPUT_FLAGS.NAVHIDDEN_YES
else -> return false
val value =
when (part) {
WILDCARD_NAME -> ResTableConfig.INPUT_FLAGS.NAVHIDDEN_ANY
"navexposed" -> ResTableConfig.INPUT_FLAGS.NAVHIDDEN_NO
"navhidden" -> ResTableConfig.INPUT_FLAGS.NAVHIDDEN_YES
else -> return false
}
config.inputFlags =
maskAndApply(config.inputFlags, ResTableConfig.INPUT_FLAGS.NAVHIDDEN_MASK, value)
return true
config.inputFlags =
maskAndApply(config.inputFlags, ResTableConfig.INPUT_FLAGS.NAVHIDDEN_MASK, value)
return true
}
fun parseNavigation(part: String, config: ConfigDescription): Boolean {
config.navigation = when (part) {
WILDCARD_NAME -> ResTableConfig.NAVIGATION.ANY
"nonav" -> ResTableConfig.NAVIGATION.NONAV
"dpad" -> ResTableConfig.NAVIGATION.DPAD
"trackball" -> ResTableConfig.NAVIGATION.TRACKBALL
"wheel" -> ResTableConfig.NAVIGATION.WHEEL
else -> return false
config.navigation =
when (part) {
WILDCARD_NAME -> ResTableConfig.NAVIGATION.ANY
"nonav" -> ResTableConfig.NAVIGATION.NONAV
"dpad" -> ResTableConfig.NAVIGATION.DPAD
"trackball" -> ResTableConfig.NAVIGATION.TRACKBALL
"wheel" -> ResTableConfig.NAVIGATION.WHEEL
else -> return false
}
return true
return true
}
fun parseScreenSize(part: String, config: ConfigDescription): Boolean {
if (part == WILDCARD_NAME) {
config.screenWidth = 0
config.screenHeight = 0
return true
}
// Format is NxM
val width = part.substringBefore('x').toIntOrNull() ?: return false
val height = part.substringAfter('x').toIntOrNull() ?: return false
if (width < height) {
return false
}
config.screenWidth = width
config.screenHeight = height
if (part == WILDCARD_NAME) {
config.screenWidth = 0
config.screenHeight = 0
return true
}
// Format is NxM
val width = part.substringBefore('x').toIntOrNull() ?: return false
val height = part.substringAfter('x').toIntOrNull() ?: return false
if (width < height) {
return false
}
config.screenWidth = width
config.screenHeight = height
return true
}
fun parseVersion(part: String, config: ConfigDescription): Boolean {
if (part == WILDCARD_NAME) {
config.sdkVersion = 0
config.minorVersion = 0
return true
}
// Format is vN
if (!part.startsWith('v')) {
return false
}
val version = part.substring(1).toIntOrNull()?.toShort() ?: return false
config.sdkVersion = version
if (part == WILDCARD_NAME) {
config.sdkVersion = 0
config.minorVersion = 0
return true
}
// Format is vN
if (!part.startsWith('v')) {
return false
}
val version = part.substring(1).toIntOrNull()?.toShort() ?: return false
config.sdkVersion = version
config.minorVersion = 0
return true
}
fun maskAndApply(current: Byte, mask: Int, value: Byte) =
maskAndApply(current.toInt(), mask, value.toInt()).toByte()
fun maskAndApply(current: Int, mask: Int, value: Int): Int =
(current and mask.inv()) or value
maskAndApply(current.toInt(), mask, value.toInt()).toByte()
fun maskAndApply(current: Int, mask: Int, value: Int): Int = (current and mask.inv()) or value