(data, start, ltag)
| 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']. |
| 5859 | function 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} |
nothing calls this directly
no test coverage detected