Compare commits
	
		
			15 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					ff1b888af1 | ||
| 
						 | 
					3535e60695 | ||
| 
						 | 
					11b1affe5b | ||
| 
						 | 
					29d40186c9 | ||
| 
						 | 
					d6937a7da2 | ||
| 
						 | 
					c62b82a98d | ||
| 
						 | 
					fe23027f32 | ||
| 
						 | 
					d92e1f9e89 | ||
| 
						 | 
					0359aa12a4 | ||
| 
						 | 
					6357bf3edd | ||
| 
						 | 
					3b28b3ed08 | ||
| 
						 | 
					207308a1ac | ||
| 
						 | 
					b8676a4fe6 | ||
| 
						 | 
					bf879ca5ee | ||
| 
						 | 
					8bd7810703 | 
@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "pofile",
 | 
					  "name": "pofile",
 | 
				
			||||||
  "version": "1.0.10",
 | 
					  "version": "1.1.1",
 | 
				
			||||||
  "authors": [
 | 
					  "authors": [
 | 
				
			||||||
    "Ruben Vermeersch <ruben@rocketeer.be>"
 | 
					    "Ruben Vermeersch <ruben@rocketeer.be>"
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										28
									
								
								dist/pofile.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								dist/pofile.js
									
									
									
									
										vendored
									
									
								
							@@ -1,8 +1,6 @@
 | 
				
			|||||||
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
 | 
					require=(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
},{}],"pofile":[function(require,module,exports){
 | 
					},{}],"pofile":[function(require,module,exports){
 | 
				
			||||||
var fs = require('fs');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function trim(string) {
 | 
					function trim(string) {
 | 
				
			||||||
    return string.replace(/^\s+|\s+$/g, '');
 | 
					    return string.replace(/^\s+|\s+$/g, '');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -11,11 +9,12 @@ var PO = function () {
 | 
				
			|||||||
    this.comments = [];
 | 
					    this.comments = [];
 | 
				
			||||||
    this.extractedComments = [];
 | 
					    this.extractedComments = [];
 | 
				
			||||||
    this.headers = {};
 | 
					    this.headers = {};
 | 
				
			||||||
 | 
					    this.headerOrder = [];
 | 
				
			||||||
    this.items = [];
 | 
					    this.items = [];
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PO.prototype.save = function (filename, callback) {
 | 
					PO.prototype.save = function (filename, callback) {
 | 
				
			||||||
    fs.writeFile(filename, this.toString(), callback);
 | 
					    require('fs').writeFile(filename, this.toString(), callback);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PO.prototype.toString = function () {
 | 
					PO.prototype.toString = function () {
 | 
				
			||||||
@@ -35,9 +34,24 @@ PO.prototype.toString = function () {
 | 
				
			|||||||
    lines.push('msgid ""');
 | 
					    lines.push('msgid ""');
 | 
				
			||||||
    lines.push('msgstr ""');
 | 
					    lines.push('msgstr ""');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var keys = Object.keys(this.headers);
 | 
					 | 
				
			||||||
    var self = this;
 | 
					    var self = this;
 | 
				
			||||||
 | 
					    var headerOrder = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.headerOrder.forEach(function (key) {
 | 
				
			||||||
 | 
					        if (key in self.headers) {
 | 
				
			||||||
 | 
					            headerOrder.push(key);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var keys = Object.keys(this.headers);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    keys.forEach(function (key) {
 | 
					    keys.forEach(function (key) {
 | 
				
			||||||
 | 
					        if (headerOrder.indexOf(key) === -1) {
 | 
				
			||||||
 | 
					            headerOrder.push(key);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    headerOrder.forEach(function (key) {
 | 
				
			||||||
        lines.push('"' + key + ': ' + self.headers[key] + '\\n"');
 | 
					        lines.push('"' + key + ': ' + self.headers[key] + '\\n"');
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -52,7 +66,7 @@ PO.prototype.toString = function () {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PO.load = function (filename, callback) {
 | 
					PO.load = function (filename, callback) {
 | 
				
			||||||
    fs.readFile(filename, 'utf-8', function (err, data) {
 | 
					    require('fs').readFile(filename, 'utf-8', function (err, data) {
 | 
				
			||||||
        if (err) {
 | 
					        if (err) {
 | 
				
			||||||
            return callback(err);
 | 
					            return callback(err);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -91,6 +105,7 @@ PO.parse = function (data) {
 | 
				
			|||||||
        'Content-Transfer-Encoding': '',
 | 
					        'Content-Transfer-Encoding': '',
 | 
				
			||||||
        'Plural-Forms': '',
 | 
					        'Plural-Forms': '',
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					    po.headerOrder = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    headers.split(/\n/).reduce(function (acc, line) {
 | 
					    headers.split(/\n/).reduce(function (acc, line) {
 | 
				
			||||||
        if (acc.merge) {
 | 
					        if (acc.merge) {
 | 
				
			||||||
@@ -114,6 +129,7 @@ PO.parse = function (data) {
 | 
				
			|||||||
            var name = p.shift().trim();
 | 
					            var name = p.shift().trim();
 | 
				
			||||||
            var value = p.join(':').trim();
 | 
					            var value = p.join(':').trim();
 | 
				
			||||||
            po.headers[name] = value;
 | 
					            po.headers[name] = value;
 | 
				
			||||||
 | 
					            po.headerOrder.push(name);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								dist/pofile.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/pofile.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										26
									
								
								lib/po.js
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								lib/po.js
									
									
									
									
									
								
							@@ -1,5 +1,3 @@
 | 
				
			|||||||
var fs = require('fs');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function trim(string) {
 | 
					function trim(string) {
 | 
				
			||||||
    return string.replace(/^\s+|\s+$/g, '');
 | 
					    return string.replace(/^\s+|\s+$/g, '');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -8,11 +6,12 @@ var PO = function () {
 | 
				
			|||||||
    this.comments = [];
 | 
					    this.comments = [];
 | 
				
			||||||
    this.extractedComments = [];
 | 
					    this.extractedComments = [];
 | 
				
			||||||
    this.headers = {};
 | 
					    this.headers = {};
 | 
				
			||||||
 | 
					    this.headerOrder = [];
 | 
				
			||||||
    this.items = [];
 | 
					    this.items = [];
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PO.prototype.save = function (filename, callback) {
 | 
					PO.prototype.save = function (filename, callback) {
 | 
				
			||||||
    fs.writeFile(filename, this.toString(), callback);
 | 
					    require('fs').writeFile(filename, this.toString(), callback);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PO.prototype.toString = function () {
 | 
					PO.prototype.toString = function () {
 | 
				
			||||||
@@ -32,9 +31,24 @@ PO.prototype.toString = function () {
 | 
				
			|||||||
    lines.push('msgid ""');
 | 
					    lines.push('msgid ""');
 | 
				
			||||||
    lines.push('msgstr ""');
 | 
					    lines.push('msgstr ""');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var keys = Object.keys(this.headers);
 | 
					 | 
				
			||||||
    var self = this;
 | 
					    var self = this;
 | 
				
			||||||
 | 
					    var headerOrder = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.headerOrder.forEach(function (key) {
 | 
				
			||||||
 | 
					        if (key in self.headers) {
 | 
				
			||||||
 | 
					            headerOrder.push(key);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var keys = Object.keys(this.headers);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    keys.forEach(function (key) {
 | 
					    keys.forEach(function (key) {
 | 
				
			||||||
 | 
					        if (headerOrder.indexOf(key) === -1) {
 | 
				
			||||||
 | 
					            headerOrder.push(key);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    headerOrder.forEach(function (key) {
 | 
				
			||||||
        lines.push('"' + key + ': ' + self.headers[key] + '\\n"');
 | 
					        lines.push('"' + key + ': ' + self.headers[key] + '\\n"');
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -49,7 +63,7 @@ PO.prototype.toString = function () {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PO.load = function (filename, callback) {
 | 
					PO.load = function (filename, callback) {
 | 
				
			||||||
    fs.readFile(filename, 'utf-8', function (err, data) {
 | 
					    require('fs').readFile(filename, 'utf-8', function (err, data) {
 | 
				
			||||||
        if (err) {
 | 
					        if (err) {
 | 
				
			||||||
            return callback(err);
 | 
					            return callback(err);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -88,6 +102,7 @@ PO.parse = function (data) {
 | 
				
			|||||||
        'Content-Transfer-Encoding': '',
 | 
					        'Content-Transfer-Encoding': '',
 | 
				
			||||||
        'Plural-Forms': '',
 | 
					        'Plural-Forms': '',
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					    po.headerOrder = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    headers.split(/\n/).reduce(function (acc, line) {
 | 
					    headers.split(/\n/).reduce(function (acc, line) {
 | 
				
			||||||
        if (acc.merge) {
 | 
					        if (acc.merge) {
 | 
				
			||||||
@@ -111,6 +126,7 @@ PO.parse = function (data) {
 | 
				
			|||||||
            var name = p.shift().trim();
 | 
					            var name = p.shift().trim();
 | 
				
			||||||
            var value = p.join(':').trim();
 | 
					            var value = p.join(':').trim();
 | 
				
			||||||
            po.headers[name] = value;
 | 
					            po.headers[name] = value;
 | 
				
			||||||
 | 
					            po.headerOrder.push(name);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "pofile",
 | 
					  "name": "pofile",
 | 
				
			||||||
  "description": "Parse and serialize Gettext PO files.",
 | 
					  "description": "Parse and serialize Gettext PO files.",
 | 
				
			||||||
  "version": "1.0.10",
 | 
					  "version": "1.1.1",
 | 
				
			||||||
  "author": {
 | 
					  "author": {
 | 
				
			||||||
    "name": "Ruben Vermeersch",
 | 
					    "name": "Ruben Vermeersch",
 | 
				
			||||||
    "email": "ruben@savanne.be",
 | 
					    "email": "ruben@savanne.be",
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										85
									
								
								pofile.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										85
									
								
								pofile.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,44 +1,45 @@
 | 
				
			|||||||
declare module pofile {
 | 
					declare interface IHeaders {
 | 
				
			||||||
    function parse(data: string): PO;
 | 
					    'Project-Id-Version': string;
 | 
				
			||||||
    function load(fileName: string, callback: (err: NodeJS.ErrnoException | null, po: PO) => void): void;
 | 
					    'Report-Msgid-Bugs-To': string;
 | 
				
			||||||
 | 
					    'POT-Creation-Date': string;
 | 
				
			||||||
    class PO {
 | 
					    'PO-Revision-Date': string;
 | 
				
			||||||
        public comments: string[];
 | 
					    'Last-Translator': string;
 | 
				
			||||||
        public extractedComments: string[];
 | 
					    'Language': string;
 | 
				
			||||||
        public items: Item[];
 | 
					    'Language-Team': string;
 | 
				
			||||||
        public headers: Partial<IHeaders>
 | 
					    'Content-Type': string;
 | 
				
			||||||
 | 
					    'Content-Transfer-Encoding': string;
 | 
				
			||||||
        public save(filename: string, callback: (err?: NodeJS.ErrnoException) => void): void;
 | 
					    'Plural-Forms': string;
 | 
				
			||||||
        public toString(): string;
 | 
					    [name: string]: string;
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    interface IHeaders {
 | 
					 | 
				
			||||||
        'Project-Id-Version': string;
 | 
					 | 
				
			||||||
        'Report-Msgid-Bugs-To': string;
 | 
					 | 
				
			||||||
        'POT-Creation-Date': string;
 | 
					 | 
				
			||||||
        'PO-Revision-Date': string;
 | 
					 | 
				
			||||||
        'Last-Translator': string;
 | 
					 | 
				
			||||||
        'Language': string;
 | 
					 | 
				
			||||||
        'Language-Team': string;
 | 
					 | 
				
			||||||
        'Content-Type': string;
 | 
					 | 
				
			||||||
        'Content-Transfer-Encoding': string;
 | 
					 | 
				
			||||||
        'Plural-Forms': string;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    class Item {
 | 
					 | 
				
			||||||
        public msgid: string;
 | 
					 | 
				
			||||||
        public msgctxt?: string;
 | 
					 | 
				
			||||||
        public references: string[];
 | 
					 | 
				
			||||||
        public msgid_plural?: string;
 | 
					 | 
				
			||||||
        public msgstr: string[];
 | 
					 | 
				
			||||||
        public comments: string[];
 | 
					 | 
				
			||||||
        public extractedComments: string[];
 | 
					 | 
				
			||||||
        public flags: { [flag: string]: boolean | undefined }
 | 
					 | 
				
			||||||
        private nplurals: number;
 | 
					 | 
				
			||||||
        private obsolete: boolean;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public toString(): string;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export = pofile
 | 
					declare class Item {
 | 
				
			||||||
 | 
					    public msgid: string;
 | 
				
			||||||
 | 
					    public msgctxt?: string;
 | 
				
			||||||
 | 
					    public references: string[];
 | 
				
			||||||
 | 
					    public msgid_plural?: string;
 | 
				
			||||||
 | 
					    public msgstr: string[];
 | 
				
			||||||
 | 
					    public comments: string[];
 | 
				
			||||||
 | 
					    public extractedComments: string[];
 | 
				
			||||||
 | 
					    public flags: Record<string, boolean | undefined>;
 | 
				
			||||||
 | 
					    private nplurals: number;
 | 
				
			||||||
 | 
					    private obsolete: boolean;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public toString(): string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare class PO {
 | 
				
			||||||
 | 
					    public comments: string[];
 | 
				
			||||||
 | 
					    public extractedComments: string[];
 | 
				
			||||||
 | 
					    public items: Item[];
 | 
				
			||||||
 | 
					    public headers: Partial<IHeaders>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static parse(data: string): PO;
 | 
				
			||||||
 | 
					    public static parsePluralForms(forms: string): PO;
 | 
				
			||||||
 | 
					    public static load(fileName: string, callback: (err: NodeJS.ErrnoException, po: PO) => void): void;
 | 
				
			||||||
 | 
					    public static Item: typeof Item;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public save(fileName: string, callback: (err: NodeJS.ErrnoException) => void): void;
 | 
				
			||||||
 | 
					    public toString(): string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export = PO
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -504,4 +504,26 @@ describe('Write', function () {
 | 
				
			|||||||
            assert.ok(po.toString().indexOf('msgctxt') >= 0);
 | 
					            assert.ok(po.toString().indexOf('msgctxt') >= 0);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it('should keep the header order', function () {
 | 
				
			||||||
 | 
					        var input = fs.readFileSync(__dirname + '/fixtures/big.po', 'utf8');
 | 
				
			||||||
 | 
					        var po = PO.parse(input);
 | 
				
			||||||
 | 
					        var str = po.toString();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assertHasContiguousLines(str, [
 | 
				
			||||||
 | 
					            'msgid ""',
 | 
				
			||||||
 | 
					            'msgstr ""',
 | 
				
			||||||
 | 
					            '"Project-Id-Version: Link (6.x-2.9)\\n"',
 | 
				
			||||||
 | 
					            '"POT-Creation-Date: 2011-12-31 23:39+0000\\n"',
 | 
				
			||||||
 | 
					            '"PO-Revision-Date: 2013-12-17 14:21+0100\\n"',
 | 
				
			||||||
 | 
					            '"Language-Team: French\\n"',
 | 
				
			||||||
 | 
					            '"MIME-Version: 1.0\\n"',
 | 
				
			||||||
 | 
					            '"Content-Type: text/plain; charset=UTF-8\\n"',
 | 
				
			||||||
 | 
					            '"Content-Transfer-Encoding: 8bit\\n"',
 | 
				
			||||||
 | 
					            '"Plural-Forms: nplurals=2; plural=(n > 1);\\n"',
 | 
				
			||||||
 | 
					            '"Last-Translator: Ruben Vermeersch <ruben@rocketeer.be>\\n"',
 | 
				
			||||||
 | 
					            '"Language: fr\\n"',
 | 
				
			||||||
 | 
					            '"X-Generator: Poedit 1.6.2\\n"',
 | 
				
			||||||
 | 
					        ]);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user