- '''Generate pot file from lib/layouts/*.{layout,inc,module}'''
- out = open(output, 'w')
- Style = re.compile(r'^Style\s+(.*)')
- # include ???LabelString???, but exclude comment lines
- LabelString = re.compile(r'^[^#]*LabelString\S*\s+(.*)')
- GuiName = re.compile(r'\s*GuiName\s+(.*)')
- ListName = re.compile(r'\s*ListName\s+(.*)')
- NameRE = re.compile(r'DeclareLyXModule.*{(.*)}')
- DescBegin = re.compile(r'#+\s*DescriptionBegin\s*$')
- DescEnd = re.compile(r'#+\s*DescriptionEnd\s*$')
-
- for src in input_files:
- readingDescription = False
- descStartLine = -1
- descLines = []
- lineno = 0
- for line in open(src).readlines():
- lineno += 1
- if readingDescription:
- res = DescEnd.search(line)
- if res != None:
- readingDescription = False
- desc = " ".join(descLines)
- print >> out, '#: %s:%d\nmsgid "%s"\nmsgstr ""\n' % \
- (relativePath(src, base), lineno + 1, desc)
- continue
- descLines.append(line[1:].strip())
- continue
- res = DescBegin.search(line)
- if res != None:
- readingDescription = True
- descStartLine = lineno
- continue
- res = NameRE.search(line)
- if res != None:
- string = res.group(1)
- string = string.replace('\\', '\\\\').replace('"', '')
- if string != "":
- print >> out, '#: %s:%d\nmsgid "%s"\nmsgstr ""\n' % \
- (relativePath(src, base), lineno + 1, string)
- continue
- res = Style.search(line)
- if res != None:
- string = res.group(1)
- string = string.replace('_', ' ')
- writeString(out, src, base, lineno, string)
- continue
- res = LabelString.search(line)
- if res != None:
- string = res.group(1)
- writeString(out, src, base, lineno, string)
- continue
- res = GuiName.search(line)
- if res != None:
- string = res.group(1)
- writeString(out, src, base, lineno, string)
- continue
- res = ListName.search(line)
- if res != None:
- string = res.group(1)
- writeString(out, src, base, lineno, string)
- continue
- out.close()
+ '''Generate pot file from lib/layouts/*.{layout,inc,module}'''
+ out = open(output, 'w')
+ Style = re.compile(r'^Style\s+(.*)', re.IGNORECASE)
+ # include ???LabelString???, but exclude comment lines
+ LabelString = re.compile(r'^[^#]*LabelString\S*\s+(.*)')
+ GuiName = re.compile(r'\s*GuiName\s+(.*)')
+ ListName = re.compile(r'\s*ListName\s+(.*)')
+ CategoryName = re.compile(r'\s*Category\s+(.*)')
+ NameRE = re.compile(r'DeclareLyXModule.*{(.*)}')
+ InsetLayout = re.compile(r'^InsetLayout\s+\"?(.*)\"?')
+ FlexCheck = re.compile(r'^Flex:(.*)')
+ DescBegin = re.compile(r'#+\s*DescriptionBegin\s*$')
+ DescEnd = re.compile(r'#+\s*DescriptionEnd\s*$')
+ Category = re.compile(r'#Category: (.*)$')
+ I18nPreamble = re.compile(r'\s*(Lang)|(Babel)Preamble\s*$')
+ EndI18nPreamble = re.compile(r'\s*End(Lang)|(Babel)Preamble\s*$')
+ I18nString = re.compile(r'_\(([^\)]+)\)')
+ CounterFormat = re.compile(r'\s*PrettyFormat\s+"?(.*)"?')
+ CiteFormat = re.compile(r'\s*CiteFormat')
+ KeyVal = re.compile(r'^\s*_\w+\s+(.*)$')
+ End = re.compile(r'\s*End')
+
+ for src in input_files:
+ readingDescription = False
+ readingI18nPreamble = False
+ readingCiteFormats = False
+ descStartLine = -1
+ descLines = []
+ lineno = 0
+ for line in open(src).readlines():
+ lineno += 1
+ if readingDescription:
+ res = DescEnd.search(line)
+ if res != None:
+ readingDescription = False
+ desc = " ".join(descLines)
+ writeString(out, src, base, lineno + 1, desc)
+ continue
+ descLines.append(line[1:].strip())
+ continue
+ res = DescBegin.search(line)
+ if res != None:
+ readingDescription = True
+ descStartLine = lineno
+ continue
+ if readingI18nPreamble:
+ res = EndI18nPreamble.search(line)
+ if res != None:
+ readingI18nPreamble = False
+ continue
+ res = I18nString.search(line)
+ if res != None:
+ string = res.group(1)
+ writeString(out, src, base, lineno, string)
+ continue
+ res = I18nPreamble.search(line)
+ if res != None:
+ readingI18nPreamble = True
+ continue
+ res = NameRE.search(line)
+ if res != None:
+ string = res.group(1)
+ string = string.replace('\\', '\\\\').replace('"', '')
+ if string != "":
+ print >> out, '#: %s:%d\nmsgid "%s"\nmsgstr ""\n' % \
+ (relativePath(src, base), lineno + 1, string)
+ continue
+ res = Style.search(line)
+ if res != None:
+ string = res.group(1)
+ string = string.replace('_', ' ')
+ writeString(out, src, base, lineno, string)
+ continue
+ res = LabelString.search(line)
+ if res != None:
+ string = res.group(1)
+ writeString(out, src, base, lineno, string)
+ continue
+ res = GuiName.search(line)
+ if res != None:
+ string = res.group(1)
+ writeString(out, src, base, lineno, string)
+ continue
+ res = CategoryName.search(line)
+ if res != None:
+ string = res.group(1)
+ writeString(out, src, base, lineno, string)
+ continue
+ res = ListName.search(line)
+ if res != None:
+ string = res.group(1)
+ writeString(out, src, base, lineno, string)
+ continue
+ res = InsetLayout.search(line)
+ if res != None:
+ string = res.group(1)
+ string = string.replace('_', ' ')
+ writeString(out, src, base, lineno, string)
+ m = FlexCheck.search(string)
+ if m:
+ writeString(out, src, base, lineno, m.group(1))
+ continue
+ res = Category.search(line)
+ if res != None:
+ string = res.group(1)
+ writeString(out, src, base, lineno, string)
+ continue
+ res = CounterFormat.search(line)
+ if res != None:
+ string = res.group(1)
+ writeString(out, src, base, lineno, string)
+ continue
+ res = CiteFormat.search(line)
+ if res != None:
+ readingCiteFormats = True
+ res = End.search(line)
+ if res != None and readingCiteFormats:
+ readingCiteFormats = False
+ if readingCiteFormats:
+ res = KeyVal.search(line)
+ if res != None:
+ val = res.group(1)
+ writeString(out, src, base, lineno, val)
+
+ out.close()