MCPcopy Create free account
hub / github.com/Code-Bullet/Jump-King / parseNameTable

Function parseNameTable

libraries/p5.js:5859–5901  ·  view source on GitHub ↗
(data, start, ltag)

Source from the content-addressed store, hash-verified

5857// FIXME: Format 1 additional fields are not supported yet.
5858// ltag is the content of the `ltag' table, such as ['en', 'zh-Hans', 'de-CH-1904'].
5859function parseNameTable(data, start, ltag) {
5860 var name = {};
5861 var p = new parse.Parser(data, start);
5862 var format = p.parseUShort();
5863 var count = p.parseUShort();
5864 var stringOffset = p.offset + p.parseUShort();
5865 for (var i = 0; i < count; i++) {
5866 var platformID = p.parseUShort();
5867 var encodingID = p.parseUShort();
5868 var languageID = p.parseUShort();
5869 var nameID = p.parseUShort();
5870 var property = nameTableNames[nameID] || nameID;
5871 var byteLength = p.parseUShort();
5872 var offset = p.parseUShort();
5873 var language = getLanguageCode(platformID, languageID, ltag);
5874 var encoding = getEncoding(platformID, encodingID, languageID);
5875 if (encoding !== undefined && language !== undefined) {
5876 var text;
5877 if (encoding === utf16) {
5878 text = decode.UTF16(data, stringOffset + offset, byteLength);
5879 } else {
5880 text = decode.MACSTRING(data, stringOffset + offset, byteLength, encoding);
5881 }
5882
5883 if (text) {
5884 var translations = name[property];
5885 if (translations === undefined) {
5886 translations = name[property] = {};
5887 }
5888
5889 translations[language] = text;
5890 }
5891 }
5892 }
5893
5894 var langTagCount = 0;
5895 if (format === 1) {
5896 // FIXME: Also handle Microsoft's 'name' table 1.
5897 langTagCount = p.parseUShort();
5898 }
5899
5900 return name;
5901}
5902
5903// {23: 'foo'} → {'foo': 23}
5904// ['bar', 'baz'] → {'bar': 0, 'baz': 1}

Callers

nothing calls this directly

Calls 2

getLanguageCodeFunction · 0.85
getEncodingFunction · 0.85

Tested by

no test coverage detected