File size: 1,642 Bytes
21d8b09
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import json
import os
from re import sub

entityNameReplacements = [
  ['adam_s', 'adams'],
  ['zoey_s', 'zoeys'],
  ['adams_phone', 'myphone'],
  ['zoeys_phone', 'herphone'],
  ['adams\'phone', 'myphone'],
  ['zoeys\'phone', 'herphone'],
  ['adamsphone', 'myphone'],
  ['zoeysphone', 'herphone'],
  ['prologue', 'episode0'],
  ['flashback', 'fb'],
  ['cutscenesandsequences', 'special'],
  ['sequences', 'events'],
  ['dad', 'zoeysdad'],
  ['mom', 'zoeysmom'],
  ['png', ''],
  ['jpg', ''],
  ['jpeg', ''],
]

skipMarkers = [
  '(Not to be translated)',
  'Media',
  'Voiceovers and Subtitles',
  'Store'
]

def toSimpleCase(s, joiner=''):
  return joiner.join(
      sub('([A-Z][a-z]+)', r' \1',
      sub('([A-Z]+)', r' \1',
      s.replace('-', ' ').replace('\'', '').replace('.', ''))).split()).lower()

def toSnakeCase(s):
  return toSimpleCase(s, '_')

def toSafeEntityName(s):
  s = toSimpleCase(s)
  for replacement in entityNameReplacements:
    s = s.replace(replacement[0], replacement[1])
  return s

def are_keys_sequential(d):
  keys = list(d.keys())
  cursor = None
  for index, key in enumerate(keys):
    if index == 0:
      if key != "0" and key != "1":
        return False
    if not key.isnumeric():
      return False
    if index > 0:
      if int(key) - cursor != 1:
        return False
    cursor = int(key)
  return True

def getMarkedFields(filePath, markers):
  fileCheck = [m for m in markers if m["identifier"] in filePath]
  file = None if len(fileCheck) == 0 else fileCheck[0]
  return None if file is None else file["fields"]

def is_skippable(name):
  return any(marker in name for marker in skipMarkers)