Skip to content

Instantly share code, notes, and snippets.

@DavidPiper94
DavidPiper94 / logen_groupingconverter_4.py
Created September 7, 2019 09:18
Example code for article about adding a new converter to Logen - identifier of GroupingConverter
def identifier(self) -> str:
# Specifies identifier with which it can be used from command line.
return "grouping"
@DavidPiper94
DavidPiper94 / logen_groupingconverter_5.py
Created September 7, 2019 09:19
Example code for article about adding a new converter to Logen - Descriptions of GroupingConverter
def importDescription(self) -> str:
# This description provide additional information on how this converter imports files.
# Since it will only support exporting, state this here
return "This converter does not support importing."
def exportDescription(self) -> str:
# Gives a user more information of what this converter does when exporting.
return "Groupes IntermediateEntry elements from different IntermediateLanguage elements by key."
@DavidPiper94
DavidPiper94 / logen_groupingconverter_6.py
Created September 7, 2019 09:20
Example code for article about adding a new converter to Logen - Import function of GroupingConverter
# Since it won't allow importing a file, raise an error.
def toIntermediate(self, filepath: str) -> Optional[IntermediateLocalization]:
raise NotImplementedError
@DavidPiper94
DavidPiper94 / logen_groupingconverter_7.py
Created September 7, 2019 09:24
Example code for article about adding a new converter to Logen - Export function of GroupingConverter
def fromIntermediate(
self,
intermediateLocalization: IntermediateLocalization
) -> List[LocalizationFile]:
# 1
keyDict: Dict[str, List[Tuple[str, str]]] = {}
# 2
for language in intermediateLocalization.intermediateLanguages:
@DavidPiper94
DavidPiper94 / logen_groupingconverter_8.py
Created September 7, 2019 09:49
Example code for article about adding a new converter to Logen - Imports of GroupingConverterTest
import unittest
from ..model.IntermediateEntry import IntermediateEntry
from ..model.IntermediateLanguage import IntermediateLanguage
from ..model.IntermediateLocalization import IntermediateLocalization
from ..model.LocalizationFile import LocalizationFile
from ..converter.GroupingConverter import GroupingConverter
@DavidPiper94
DavidPiper94 / logen_groupingconverter_9.py
Created September 7, 2019 09:54
Example code for article about adding a new converter to Logen - Helper of GroupingConverterTest
def _createMultiLanguageIntermediateLocalization(self) -> IntermediateLocalization:
# Create first language, e.g. English
enEntry1 = IntermediateEntry("Key1", "Value in English")
enEntry2 = IntermediateEntry("Key2", "Another value in English")
enLanguage = IntermediateLanguage("en", [enEntry1, enEntry2])
# Create second language, e.g. German
deEntry1 = IntermediateEntry("Key1", "Value in German")
deEntry2 = IntermediateEntry("Key2", "Another value in German")
deLanguage = IntermediateLanguage("de", [deEntry1, deEntry2])
@DavidPiper94
DavidPiper94 / logen_groupingconverter_10.py
Created September 7, 2019 09:56
Example code for article about adding a new converter to Logen - Testcase of GroupingConverterTest
def testTest(self):
expectation = self._createExpectedOutput()
intermediate = self._createMultiLanguageIntermediateLocalization()
result = self.sut.fromIntermediate(intermediate)[0]
self.assertEqual(expectation, result)
@DavidPiper94
DavidPiper94 / logen_groupingconverter_11.py
Created September 7, 2019 10:03
Example code for article about adding a new converter to Logen - Imports in main
# Add new converter to imports.
from .converter.GroupingConverter import GroupingConverter
@DavidPiper94
DavidPiper94 / logen_groupingconverter_12.py
Created September 7, 2019 10:04
Example code for article about adding a new converter to Logen - Registering in main
registeredConverter = [
iOSConverter(),
iOSEnumConverter(),
AndroidConverter(),
JSONConverter(),
# Add new converter to list of registered converter.
GroupingConverter()
]
@DavidPiper94
DavidPiper94 / logen_groupingconverter_13.json
Created September 7, 2019 10:05
Example code for article about adding a new converter to Logen - JSON for trying out
{
"timetable": {
"en": {
"TIMETABLE_HEADER": "Timetable",
"TIMETABLE_NO_CONTENT": "No data available yet",
"TIMETABLE_LOADING_CONTENT": "Loading new data ..."
},
"de": {
"TIMETABLE_HEADER": "Zeitplan",
"TIMETABLE_NO_CONTENT": "Noch keine Daten vorhanden",