added missing modules for makepot task + added suport for plural forms in html templates + added all major i18n methods in twig
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@ -4,6 +4,6 @@ composer.phar
|
||||
vendor
|
||||
tests/_output/*
|
||||
tests/acceptance.suite.yml
|
||||
node_modules
|
||||
/node_modules
|
||||
.env
|
||||
npm-debug.log
|
||||
|
@ -29,6 +29,13 @@ class RoboFile extends \Robo\Tasks {
|
||||
);
|
||||
}
|
||||
|
||||
function pushpot() {
|
||||
$this->_exec('grunt pushpot'.
|
||||
' --gruntfile '.__DIR__.'/tasks/makepot/makepot.js'.
|
||||
' --base_path '.__DIR__
|
||||
);
|
||||
}
|
||||
|
||||
function testUnit() {
|
||||
$this->loadEnv();
|
||||
$this->_exec('vendor/bin/codecept run unit');
|
||||
|
@ -4,7 +4,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
||||
"POT-Creation-Date: 2015-07-29 14:52:45+00:00\n"
|
||||
"POT-Creation-Date: 2015-07-29 17:10:53+00:00\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@ -26,13 +26,6 @@ msgstr ""
|
||||
"X-Poedit-Bookmarks: \n"
|
||||
"X-Textdomain-Support: yes\n"
|
||||
|
||||
#: lib/config/initializer.php:13 views/form/editor.html:5
|
||||
msgid ""
|
||||
"super long string\n"
|
||||
" that takes multiple lines\n"
|
||||
" and takes 3 lines"
|
||||
msgstr ""
|
||||
|
||||
#: lib/form/renderer.php:91
|
||||
msgid "Year, month, day"
|
||||
msgstr ""
|
||||
@ -129,88 +122,80 @@ msgstr ""
|
||||
msgid "Newsletter"
|
||||
msgstr ""
|
||||
|
||||
#: mailpoet.php:34
|
||||
msgid ""
|
||||
"super loeng string\n"
|
||||
" that takes multiple lines\n"
|
||||
" and takes 3 lines"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:4
|
||||
msgid "Translatable string with a link %shere%s"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:27
|
||||
#: views/form/editor.html:23
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:35
|
||||
#: views/form/editor.html:31
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:43
|
||||
#: views/form/editor.html:39
|
||||
msgid "This form adds subscribers to these lists:"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:45
|
||||
#: views/form/editor.html:41
|
||||
msgid "Choose a list"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:58
|
||||
#: views/form/editor.html:54
|
||||
msgid "You have to select at least 1 list"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:64
|
||||
#: views/form/editor.html:60
|
||||
msgid "After submit..."
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:66
|
||||
#: views/form/editor.html:62
|
||||
msgid "Show message"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:70
|
||||
#: views/form/editor.html:66
|
||||
msgid "Go to page"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:77
|
||||
#: views/form/editor.html:73
|
||||
msgid "Check your inbox now to confirm your subscription."
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:99
|
||||
#: views/form/editor.html:95
|
||||
msgid "Shortcodes"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:104
|
||||
#: views/form/editor.html:100
|
||||
msgid "You can easily add this form to your theme's in the"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:104
|
||||
#: views/form/editor.html:100
|
||||
msgid "Widgets areas"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:127
|
||||
msgid ""
|
||||
"[link_html]HTML[/link_html], [link_php]PHP[/link_php], "
|
||||
"[link_iframe]iframe[/link_iframe] and "
|
||||
"[link_shortcode]shortcode[/link_shortcode] versions are also available."
|
||||
#: views/form/editor.html:123
|
||||
msgid "[link_html]HTML[/link_html]"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:139
|
||||
#: views/form/editor.html:135
|
||||
msgid "Fields"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:145
|
||||
#: views/form/editor.html:141
|
||||
msgid "Add New Field"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:154
|
||||
#: views/form/editor.html:150
|
||||
msgid "Styles"
|
||||
msgstr ""
|
||||
|
||||
#: views/form/editor.html:158
|
||||
#: views/form/editor.html:154
|
||||
msgid "Preview"
|
||||
msgstr ""
|
||||
|
||||
#: views/index.html:4
|
||||
msgid "monvier"
|
||||
#: views/index.html:5
|
||||
msgid "Translatable string with a link %shere%s"
|
||||
msgstr ""
|
||||
|
||||
#: views/index.html:6 views/index.html:7
|
||||
msgid "deleted one message"
|
||||
msgid_plural "deleted %d messages"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
@ -27,6 +27,7 @@ class Initializer {
|
||||
$this->path =(dirname($this->file));
|
||||
$this->views_path = $this->path . '/views';
|
||||
$this->assets_path = $this->path . '/assets';
|
||||
$this->languages_path = $this->path . '/lang';
|
||||
$this->assets_url = plugins_url(
|
||||
'/assets',
|
||||
$this->file
|
||||
@ -214,15 +215,15 @@ class Initializer {
|
||||
$domain
|
||||
);
|
||||
|
||||
$language_path = WP_LANG_DIR
|
||||
. '/'
|
||||
. $domain
|
||||
. '/'
|
||||
. $domain
|
||||
. '-'
|
||||
. $locale
|
||||
. '.mo';
|
||||
|
||||
// $language_path = WP_LANG_DIR
|
||||
// . '/'
|
||||
// . $domain
|
||||
// . '/'
|
||||
// . $domain
|
||||
// . '-'
|
||||
// . $locale
|
||||
// . '.mo';
|
||||
$language_path = $this->languages_path.'/'.$domain.'-'.$locale.'.mo';
|
||||
load_textdomain($domain, $language_path);
|
||||
load_plugin_textdomain(
|
||||
$domain,
|
||||
@ -243,6 +244,8 @@ class Initializer {
|
||||
|
||||
$this->data = array(
|
||||
'text' => 'Lorem ipsum dolor sit amet',
|
||||
'delete_messages_1' => 1,
|
||||
'delete_messages_2' => 10,
|
||||
'unsafe_string' => '<script>alert("not triggered");</script>',
|
||||
'users' => array(
|
||||
array('name' => 'Joo', 'email' => 'jonathan@mailpoet.com'),
|
||||
|
@ -11,12 +11,18 @@ class i18n extends \Twig_Extension {
|
||||
}
|
||||
|
||||
public function getFunctions() {
|
||||
return array(
|
||||
new \Twig_SimpleFunction(
|
||||
'__',
|
||||
'__',
|
||||
// twig custom functions
|
||||
$twig_functions = array();
|
||||
// list of WP functions to map
|
||||
$functions = array('_', '__', '_e', '_c', '_n', '_x');
|
||||
|
||||
foreach($functions as $function) {
|
||||
$twig_functions[] = new \Twig_SimpleFunction(
|
||||
$function,
|
||||
$function,
|
||||
array('is_safe' => array('all'))
|
||||
)
|
||||
);
|
||||
}
|
||||
return $twig_functions;
|
||||
}
|
||||
}
|
@ -31,7 +31,5 @@ function mailpoet() {
|
||||
'version' => MAILPOET_VERSION
|
||||
));
|
||||
}
|
||||
$var = __('super loeng string
|
||||
that takes multiple lines
|
||||
and takes 3 lines');
|
||||
|
||||
mailpoet();
|
21
tasks/makepot/node_modules/grunt-shell/license
generated
vendored
Normal file
21
tasks/makepot/node_modules/grunt-shell/license
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
100
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/index.js
generated
vendored
Normal file
100
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/index.js
generated
vendored
Normal file
@ -0,0 +1,100 @@
|
||||
'use strict';
|
||||
var escapeStringRegexp = require('escape-string-regexp');
|
||||
var ansiStyles = require('ansi-styles');
|
||||
var stripAnsi = require('strip-ansi');
|
||||
var hasAnsi = require('has-ansi');
|
||||
var supportsColor = require('supports-color');
|
||||
var defineProps = Object.defineProperties;
|
||||
|
||||
function Chalk(options) {
|
||||
// detect mode if not set manually
|
||||
this.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled;
|
||||
}
|
||||
|
||||
// use bright blue on Windows as the normal blue color is illegible
|
||||
if (process.platform === 'win32') {
|
||||
ansiStyles.blue.open = '\u001b[94m';
|
||||
}
|
||||
|
||||
function build(_styles) {
|
||||
var builder = function builder() {
|
||||
return applyStyle.apply(builder, arguments);
|
||||
};
|
||||
builder._styles = _styles;
|
||||
builder.enabled = this.enabled;
|
||||
// __proto__ is used because we must return a function, but there is
|
||||
// no way to create a function with a different prototype.
|
||||
builder.__proto__ = proto;
|
||||
return builder;
|
||||
}
|
||||
|
||||
var styles = (function () {
|
||||
var ret = {};
|
||||
|
||||
Object.keys(ansiStyles).forEach(function (key) {
|
||||
ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
|
||||
|
||||
ret[key] = {
|
||||
get: function () {
|
||||
return build.call(this, this._styles.concat(key));
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
return ret;
|
||||
})();
|
||||
|
||||
var proto = defineProps(function chalk() {}, styles);
|
||||
|
||||
function applyStyle() {
|
||||
// support varags, but simply cast to string in case there's only one arg
|
||||
var args = arguments;
|
||||
var argsLen = args.length;
|
||||
var str = argsLen !== 0 && String(arguments[0]);
|
||||
if (argsLen > 1) {
|
||||
// don't slice `arguments`, it prevents v8 optimizations
|
||||
for (var a = 1; a < argsLen; a++) {
|
||||
str += ' ' + args[a];
|
||||
}
|
||||
}
|
||||
|
||||
if (!this.enabled || !str) {
|
||||
return str;
|
||||
}
|
||||
|
||||
/*jshint validthis: true */
|
||||
var nestedStyles = this._styles;
|
||||
|
||||
var i = nestedStyles.length;
|
||||
while (i--) {
|
||||
var code = ansiStyles[nestedStyles[i]];
|
||||
// Replace any instances already present with a re-opening code
|
||||
// otherwise only the part of the string until said closing code
|
||||
// will be colored, and the rest will simply be 'plain'.
|
||||
str = code.open + str.replace(code.closeRe, code.open) + code.close;
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
function init() {
|
||||
var ret = {};
|
||||
|
||||
Object.keys(styles).forEach(function (name) {
|
||||
ret[name] = {
|
||||
get: function () {
|
||||
return build.call(this, [name]);
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
defineProps(Chalk.prototype, init());
|
||||
|
||||
module.exports = new Chalk();
|
||||
module.exports.styles = ansiStyles;
|
||||
module.exports.hasColor = hasAnsi;
|
||||
module.exports.stripColor = stripAnsi;
|
||||
module.exports.supportsColor = supportsColor;
|
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/license
generated
vendored
Normal file
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/license
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
1
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/.bin/has-ansi
generated
vendored
Symbolic link
1
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/.bin/has-ansi
generated
vendored
Symbolic link
@ -0,0 +1 @@
|
||||
../has-ansi/cli.js
|
1
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/.bin/strip-ansi
generated
vendored
Symbolic link
1
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/.bin/strip-ansi
generated
vendored
Symbolic link
@ -0,0 +1 @@
|
||||
../strip-ansi/cli.js
|
1
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/.bin/supports-color
generated
vendored
Symbolic link
1
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/.bin/supports-color
generated
vendored
Symbolic link
@ -0,0 +1 @@
|
||||
../supports-color/cli.js
|
56
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/ansi-styles/index.js
generated
vendored
Normal file
56
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/ansi-styles/index.js
generated
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
'use strict';
|
||||
|
||||
var styles = module.exports = {
|
||||
modifiers: {
|
||||
reset: [0, 0],
|
||||
bold: [1, 22], // 21 isn't widely supported and 22 does the same thing
|
||||
dim: [2, 22],
|
||||
italic: [3, 23],
|
||||
underline: [4, 24],
|
||||
inverse: [7, 27],
|
||||
hidden: [8, 28],
|
||||
strikethrough: [9, 29]
|
||||
},
|
||||
colors: {
|
||||
black: [30, 39],
|
||||
red: [31, 39],
|
||||
green: [32, 39],
|
||||
yellow: [33, 39],
|
||||
blue: [34, 39],
|
||||
magenta: [35, 39],
|
||||
cyan: [36, 39],
|
||||
white: [37, 39],
|
||||
gray: [90, 39]
|
||||
},
|
||||
bgColors: {
|
||||
bgBlack: [40, 49],
|
||||
bgRed: [41, 49],
|
||||
bgGreen: [42, 49],
|
||||
bgYellow: [43, 49],
|
||||
bgBlue: [44, 49],
|
||||
bgMagenta: [45, 49],
|
||||
bgCyan: [46, 49],
|
||||
bgWhite: [47, 49]
|
||||
}
|
||||
};
|
||||
|
||||
// fix humans
|
||||
styles.colors.grey = styles.colors.gray;
|
||||
|
||||
Object.keys(styles).forEach(function (groupName) {
|
||||
var group = styles[groupName];
|
||||
|
||||
Object.keys(group).forEach(function (styleName) {
|
||||
var style = group[styleName];
|
||||
|
||||
styles[styleName] = group[styleName] = {
|
||||
open: '\u001b[' + style[0] + 'm',
|
||||
close: '\u001b[' + style[1] + 'm'
|
||||
};
|
||||
});
|
||||
|
||||
Object.defineProperty(styles, groupName, {
|
||||
value: group,
|
||||
enumerable: false
|
||||
});
|
||||
});
|
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/ansi-styles/license
generated
vendored
Normal file
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/ansi-styles/license
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
79
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/ansi-styles/package.json
generated
vendored
Normal file
79
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/ansi-styles/package.json
generated
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
{
|
||||
"name": "ansi-styles",
|
||||
"version": "2.0.1",
|
||||
"description": "ANSI escape codes for styling strings in the terminal",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sindresorhus/ansi-styles"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "jbnicolai",
|
||||
"email": "jappelman@xebia.com"
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha"
|
||||
},
|
||||
"files": [
|
||||
"index.js"
|
||||
],
|
||||
"keywords": [
|
||||
"ansi",
|
||||
"styles",
|
||||
"color",
|
||||
"colour",
|
||||
"colors",
|
||||
"terminal",
|
||||
"console",
|
||||
"cli",
|
||||
"string",
|
||||
"tty",
|
||||
"escape",
|
||||
"formatting",
|
||||
"rgb",
|
||||
"256",
|
||||
"shell",
|
||||
"xterm",
|
||||
"log",
|
||||
"logging",
|
||||
"command-line",
|
||||
"text"
|
||||
],
|
||||
"devDependencies": {
|
||||
"mocha": "*"
|
||||
},
|
||||
"gitHead": "da6541334e1681cb803f891fab8abf4313cc4bc1",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/ansi-styles/issues"
|
||||
},
|
||||
"homepage": "https://github.com/sindresorhus/ansi-styles",
|
||||
"_id": "ansi-styles@2.0.1",
|
||||
"_shasum": "b033f57f93e2d28adeb8bc11138fa13da0fd20a3",
|
||||
"_from": "ansi-styles@^2.0.1",
|
||||
"_npmVersion": "2.1.16",
|
||||
"_nodeVersion": "0.10.35",
|
||||
"_npmUser": {
|
||||
"name": "jbnicolai",
|
||||
"email": "jappelman@xebia.com"
|
||||
},
|
||||
"dist": {
|
||||
"shasum": "b033f57f93e2d28adeb8bc11138fa13da0fd20a3",
|
||||
"tarball": "http://registry.npmjs.org/ansi-styles/-/ansi-styles-2.0.1.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.0.1.tgz"
|
||||
}
|
86
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/ansi-styles/readme.md
generated
vendored
Normal file
86
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/ansi-styles/readme.md
generated
vendored
Normal file
@ -0,0 +1,86 @@
|
||||
# ansi-styles [](https://travis-ci.org/sindresorhus/ansi-styles)
|
||||
|
||||
> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal
|
||||
|
||||
You probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings.
|
||||
|
||||

|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
$ npm install --save ansi-styles
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var ansi = require('ansi-styles');
|
||||
|
||||
console.log(ansi.green.open + 'Hello world!' + ansi.green.close);
|
||||
```
|
||||
|
||||
|
||||
## API
|
||||
|
||||
Each style has an `open` and `close` property.
|
||||
|
||||
|
||||
## Styles
|
||||
|
||||
### Modifiers
|
||||
|
||||
- `reset`
|
||||
- `bold`
|
||||
- `dim`
|
||||
- `italic` *(not widely supported)*
|
||||
- `underline`
|
||||
- `inverse`
|
||||
- `hidden`
|
||||
- `strikethrough` *(not widely supported)*
|
||||
|
||||
### Colors
|
||||
|
||||
- `black`
|
||||
- `red`
|
||||
- `green`
|
||||
- `yellow`
|
||||
- `blue`
|
||||
- `magenta`
|
||||
- `cyan`
|
||||
- `white`
|
||||
- `gray`
|
||||
|
||||
### Background colors
|
||||
|
||||
- `bgBlack`
|
||||
- `bgRed`
|
||||
- `bgGreen`
|
||||
- `bgYellow`
|
||||
- `bgBlue`
|
||||
- `bgMagenta`
|
||||
- `bgCyan`
|
||||
- `bgWhite`
|
||||
|
||||
|
||||
## Advanced usage
|
||||
|
||||
By default you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
|
||||
|
||||
- `ansi.modifiers`
|
||||
- `ansi.colors`
|
||||
- `ansi.bgColors`
|
||||
|
||||
|
||||
###### Example
|
||||
|
||||
```js
|
||||
console.log(ansi.colors.green.open);
|
||||
```
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
11
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/escape-string-regexp/index.js
generated
vendored
Normal file
11
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/escape-string-regexp/index.js
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
'use strict';
|
||||
|
||||
var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
|
||||
|
||||
module.exports = function (str) {
|
||||
if (typeof str !== 'string') {
|
||||
throw new TypeError('Expected a string');
|
||||
}
|
||||
|
||||
return str.replace(matchOperatorsRe, '\\$&');
|
||||
};
|
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/escape-string-regexp/license
generated
vendored
Normal file
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/escape-string-regexp/license
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
69
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/escape-string-regexp/package.json
generated
vendored
Normal file
69
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/escape-string-regexp/package.json
generated
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
{
|
||||
"name": "escape-string-regexp",
|
||||
"version": "1.0.3",
|
||||
"description": "Escape RegExp special characters",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sindresorhus/escape-string-regexp"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "jbnicolai",
|
||||
"email": "jappelman@xebia.com"
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha"
|
||||
},
|
||||
"files": [
|
||||
"index.js"
|
||||
],
|
||||
"keywords": [
|
||||
"regex",
|
||||
"regexp",
|
||||
"re",
|
||||
"regular",
|
||||
"expression",
|
||||
"escape",
|
||||
"string",
|
||||
"str",
|
||||
"special",
|
||||
"characters"
|
||||
],
|
||||
"devDependencies": {
|
||||
"mocha": "*"
|
||||
},
|
||||
"gitHead": "1e446e6b4449b5f1f8868cd31bf8fd25ee37fb4b",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/escape-string-regexp/issues"
|
||||
},
|
||||
"homepage": "https://github.com/sindresorhus/escape-string-regexp",
|
||||
"_id": "escape-string-regexp@1.0.3",
|
||||
"_shasum": "9e2d8b25bc2555c3336723750e03f099c2735bb5",
|
||||
"_from": "escape-string-regexp@^1.0.2",
|
||||
"_npmVersion": "2.1.16",
|
||||
"_nodeVersion": "0.10.35",
|
||||
"_npmUser": {
|
||||
"name": "jbnicolai",
|
||||
"email": "jappelman@xebia.com"
|
||||
},
|
||||
"dist": {
|
||||
"shasum": "9e2d8b25bc2555c3336723750e03f099c2735bb5",
|
||||
"tarball": "http://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
|
||||
}
|
27
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/escape-string-regexp/readme.md
generated
vendored
Normal file
27
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/escape-string-regexp/readme.md
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
# escape-string-regexp [](https://travis-ci.org/sindresorhus/escape-string-regexp)
|
||||
|
||||
> Escape RegExp special characters
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
$ npm install --save escape-string-regexp
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var escapeStringRegexp = require('escape-string-regexp');
|
||||
|
||||
var escapedString = escapeStringRegexp('how much $ for a unicorn?');
|
||||
//=> how much \$ for a unicorn\?
|
||||
|
||||
new RegExp(escapedString);
|
||||
```
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
45
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/cli.js
generated
vendored
Executable file
45
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/cli.js
generated
vendored
Executable file
@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env node
|
||||
'use strict';
|
||||
var stdin = require('get-stdin');
|
||||
var pkg = require('./package.json');
|
||||
var hasAnsi = require('./');
|
||||
var argv = process.argv.slice(2);
|
||||
var input = argv[0];
|
||||
|
||||
function help() {
|
||||
console.log([
|
||||
'',
|
||||
' ' + pkg.description,
|
||||
'',
|
||||
' Usage',
|
||||
' has-ansi <string>',
|
||||
' echo <string> | has-ansi',
|
||||
'',
|
||||
' Exits with code 0 if input has ANSI escape codes and 1 if not'
|
||||
].join('\n'));
|
||||
}
|
||||
|
||||
function init(data) {
|
||||
process.exit(hasAnsi(data) ? 0 : 1);
|
||||
}
|
||||
|
||||
if (argv.indexOf('--help') !== -1) {
|
||||
help();
|
||||
return;
|
||||
}
|
||||
|
||||
if (argv.indexOf('--version') !== -1) {
|
||||
console.log(pkg.version);
|
||||
return;
|
||||
}
|
||||
|
||||
if (process.stdin.isTTY) {
|
||||
if (!input) {
|
||||
help();
|
||||
return;
|
||||
}
|
||||
|
||||
init(input);
|
||||
} else {
|
||||
stdin(init);
|
||||
}
|
4
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/index.js
generated
vendored
Normal file
4
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/index.js
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
'use strict';
|
||||
var ansiRegex = require('ansi-regex');
|
||||
var re = new RegExp(ansiRegex().source); // remove the `g` flag
|
||||
module.exports = re.test.bind(re);
|
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/license
generated
vendored
Normal file
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/license
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
4
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js
generated
vendored
Normal file
4
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
'use strict';
|
||||
module.exports = function () {
|
||||
return /(?:(?:\u001b\[)|\u009b)(?:(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m])|\u001b[A-M]/g;
|
||||
};
|
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/license
generated
vendored
Normal file
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/license
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
85
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json
generated
vendored
Normal file
85
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json
generated
vendored
Normal file
@ -0,0 +1,85 @@
|
||||
{
|
||||
"name": "ansi-regex",
|
||||
"version": "1.1.1",
|
||||
"description": "Regular expression for matching ANSI escape codes",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sindresorhus/ansi-regex"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "jbnicolai",
|
||||
"email": "jappelman@xebia.com"
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha test/test.js",
|
||||
"view-supported": "node test/viewCodes.js"
|
||||
},
|
||||
"files": [
|
||||
"index.js"
|
||||
],
|
||||
"keywords": [
|
||||
"ansi",
|
||||
"styles",
|
||||
"color",
|
||||
"colour",
|
||||
"colors",
|
||||
"terminal",
|
||||
"console",
|
||||
"cli",
|
||||
"string",
|
||||
"tty",
|
||||
"escape",
|
||||
"formatting",
|
||||
"rgb",
|
||||
"256",
|
||||
"shell",
|
||||
"xterm",
|
||||
"command-line",
|
||||
"text",
|
||||
"regex",
|
||||
"regexp",
|
||||
"re",
|
||||
"match",
|
||||
"test",
|
||||
"find",
|
||||
"pattern"
|
||||
],
|
||||
"devDependencies": {
|
||||
"mocha": "*"
|
||||
},
|
||||
"gitHead": "47fb974630af70998157b30fad6eb5e5bd7c7cd6",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/ansi-regex/issues"
|
||||
},
|
||||
"homepage": "https://github.com/sindresorhus/ansi-regex",
|
||||
"_id": "ansi-regex@1.1.1",
|
||||
"_shasum": "41c847194646375e6a1a5d10c3ca054ef9fc980d",
|
||||
"_from": "ansi-regex@^1.1.0",
|
||||
"_npmVersion": "2.1.16",
|
||||
"_nodeVersion": "0.10.35",
|
||||
"_npmUser": {
|
||||
"name": "jbnicolai",
|
||||
"email": "jappelman@xebia.com"
|
||||
},
|
||||
"dist": {
|
||||
"shasum": "41c847194646375e6a1a5d10c3ca054ef9fc980d",
|
||||
"tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz"
|
||||
}
|
33
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md
generated
vendored
Normal file
33
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md
generated
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
# ansi-regex [](https://travis-ci.org/sindresorhus/ansi-regex)
|
||||
|
||||
> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
$ npm install --save ansi-regex
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var ansiRegex = require('ansi-regex');
|
||||
|
||||
ansiRegex().test('\u001b[4mcake\u001b[0m');
|
||||
//=> true
|
||||
|
||||
ansiRegex().test('cake');
|
||||
//=> false
|
||||
|
||||
'\u001b[4mcake\u001b[0m'.match(ansiRegex());
|
||||
//=> ['\u001b[4m', '\u001b[0m']
|
||||
```
|
||||
|
||||
*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.*
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
49
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/index.js
generated
vendored
Normal file
49
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/index.js
generated
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function (cb) {
|
||||
var stdin = process.stdin;
|
||||
var ret = '';
|
||||
|
||||
if (stdin.isTTY) {
|
||||
setImmediate(cb, '');
|
||||
return;
|
||||
}
|
||||
|
||||
stdin.setEncoding('utf8');
|
||||
|
||||
stdin.on('readable', function () {
|
||||
var chunk;
|
||||
|
||||
while (chunk = stdin.read()) {
|
||||
ret += chunk;
|
||||
}
|
||||
});
|
||||
|
||||
stdin.on('end', function () {
|
||||
cb(ret);
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.buffer = function (cb) {
|
||||
var stdin = process.stdin;
|
||||
var ret = [];
|
||||
var len = 0;
|
||||
|
||||
if (stdin.isTTY) {
|
||||
setImmediate(cb, new Buffer(''));
|
||||
return;
|
||||
}
|
||||
|
||||
stdin.on('readable', function () {
|
||||
var chunk;
|
||||
|
||||
while (chunk = stdin.read()) {
|
||||
ret.push(chunk);
|
||||
len += chunk.length;
|
||||
}
|
||||
});
|
||||
|
||||
stdin.on('end', function () {
|
||||
cb(Buffer.concat(ret, len));
|
||||
});
|
||||
};
|
63
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/package.json
generated
vendored
Normal file
63
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/package.json
generated
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
{
|
||||
"name": "get-stdin",
|
||||
"version": "4.0.1",
|
||||
"description": "Easier stdin",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sindresorhus/get-stdin"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "node test.js && node test-buffer.js && echo unicorns | node test-real.js"
|
||||
},
|
||||
"files": [
|
||||
"index.js"
|
||||
],
|
||||
"keywords": [
|
||||
"std",
|
||||
"stdin",
|
||||
"stdio",
|
||||
"concat",
|
||||
"buffer",
|
||||
"stream",
|
||||
"process",
|
||||
"stream"
|
||||
],
|
||||
"devDependencies": {
|
||||
"ava": "0.0.4",
|
||||
"buffer-equal": "0.0.1"
|
||||
},
|
||||
"gitHead": "65c744975229b25d6cc5c7546f49b6ad9099553f",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/get-stdin/issues"
|
||||
},
|
||||
"homepage": "https://github.com/sindresorhus/get-stdin",
|
||||
"_id": "get-stdin@4.0.1",
|
||||
"_shasum": "b968c6b0a04384324902e8bf1a5df32579a450fe",
|
||||
"_from": "get-stdin@^4.0.1",
|
||||
"_npmVersion": "1.4.28",
|
||||
"_npmUser": {
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
}
|
||||
],
|
||||
"dist": {
|
||||
"shasum": "b968c6b0a04384324902e8bf1a5df32579a450fe",
|
||||
"tarball": "http://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
|
||||
}
|
44
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/readme.md
generated
vendored
Normal file
44
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/readme.md
generated
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
# get-stdin [](https://travis-ci.org/sindresorhus/get-stdin)
|
||||
|
||||
> Easier stdin
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
$ npm install --save get-stdin
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
// example.js
|
||||
var stdin = require('get-stdin');
|
||||
|
||||
stdin(function (data) {
|
||||
console.log(data);
|
||||
//=> unicorns
|
||||
});
|
||||
```
|
||||
|
||||
```sh
|
||||
$ echo unicorns | node example.js
|
||||
unicorns
|
||||
```
|
||||
|
||||
|
||||
## API
|
||||
|
||||
### stdin(callback)
|
||||
|
||||
Get `stdin` as a string.
|
||||
|
||||
### stdin.buffer(callback)
|
||||
|
||||
Get `stdin` as a buffer.
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
91
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/package.json
generated
vendored
Normal file
91
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/package.json
generated
vendored
Normal file
@ -0,0 +1,91 @@
|
||||
{
|
||||
"name": "has-ansi",
|
||||
"version": "1.0.3",
|
||||
"description": "Check if a string has ANSI escape codes",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sindresorhus/has-ansi"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "jbnicolai",
|
||||
"email": "jappelman@xebia.com"
|
||||
}
|
||||
],
|
||||
"bin": {
|
||||
"has-ansi": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha"
|
||||
},
|
||||
"files": [
|
||||
"index.js",
|
||||
"cli.js"
|
||||
],
|
||||
"keywords": [
|
||||
"cli",
|
||||
"bin",
|
||||
"ansi",
|
||||
"styles",
|
||||
"color",
|
||||
"colour",
|
||||
"colors",
|
||||
"terminal",
|
||||
"console",
|
||||
"string",
|
||||
"tty",
|
||||
"escape",
|
||||
"shell",
|
||||
"xterm",
|
||||
"command-line",
|
||||
"text",
|
||||
"regex",
|
||||
"regexp",
|
||||
"re",
|
||||
"match",
|
||||
"test",
|
||||
"find",
|
||||
"pattern",
|
||||
"has"
|
||||
],
|
||||
"dependencies": {
|
||||
"ansi-regex": "^1.1.0",
|
||||
"get-stdin": "^4.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"mocha": "*"
|
||||
},
|
||||
"gitHead": "416428ed16f8e9718aec54cea083173af6019917",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/has-ansi/issues"
|
||||
},
|
||||
"homepage": "https://github.com/sindresorhus/has-ansi",
|
||||
"_id": "has-ansi@1.0.3",
|
||||
"_shasum": "c0b5b1615d9e382b0ff67169d967b425e48ca538",
|
||||
"_from": "has-ansi@^1.0.3",
|
||||
"_npmVersion": "2.1.16",
|
||||
"_nodeVersion": "0.10.35",
|
||||
"_npmUser": {
|
||||
"name": "jbnicolai",
|
||||
"email": "jappelman@xebia.com"
|
||||
},
|
||||
"dist": {
|
||||
"shasum": "c0b5b1615d9e382b0ff67169d967b425e48ca538",
|
||||
"tarball": "http://registry.npmjs.org/has-ansi/-/has-ansi-1.0.3.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-1.0.3.tgz"
|
||||
}
|
45
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/readme.md
generated
vendored
Normal file
45
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/has-ansi/readme.md
generated
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
# has-ansi [](https://travis-ci.org/sindresorhus/has-ansi)
|
||||
|
||||
> Check if a string has [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
$ npm install --save has-ansi
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var hasAnsi = require('has-ansi');
|
||||
|
||||
hasAnsi('\u001b[4mcake\u001b[0m');
|
||||
//=> true
|
||||
|
||||
hasAnsi('cake');
|
||||
//=> false
|
||||
```
|
||||
|
||||
|
||||
## CLI
|
||||
|
||||
```sh
|
||||
$ npm install --global has-ansi
|
||||
```
|
||||
|
||||
```
|
||||
$ has-ansi --help
|
||||
|
||||
Usage
|
||||
has-ansi <string>
|
||||
echo <string> | has-ansi
|
||||
|
||||
Exits with code 0 if input has ANSI escape codes and 1 if not
|
||||
```
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
47
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/cli.js
generated
vendored
Executable file
47
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/cli.js
generated
vendored
Executable file
@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env node
|
||||
'use strict';
|
||||
var fs = require('fs');
|
||||
var pkg = require('./package.json');
|
||||
var stripAnsi = require('./');
|
||||
var argv = process.argv.slice(2);
|
||||
var input = argv[0];
|
||||
|
||||
function help() {
|
||||
console.log([
|
||||
'',
|
||||
' ' + pkg.description,
|
||||
'',
|
||||
' Usage',
|
||||
' strip-ansi <input-file> > <output-file>',
|
||||
' cat <input-file> | strip-ansi > <output-file>',
|
||||
'',
|
||||
' Example',
|
||||
' strip-ansi unicorn.txt > unicorn-stripped.txt'
|
||||
].join('\n'));
|
||||
}
|
||||
|
||||
function init(data) {
|
||||
process.stdout.write(stripAnsi(data));
|
||||
}
|
||||
|
||||
if (argv.indexOf('--help') !== -1) {
|
||||
help();
|
||||
return;
|
||||
}
|
||||
|
||||
if (argv.indexOf('--version') !== -1) {
|
||||
console.log(pkg.version);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!input && process.stdin.isTTY) {
|
||||
help();
|
||||
return;
|
||||
}
|
||||
|
||||
if (input) {
|
||||
init(fs.readFileSync(input, 'utf8'));
|
||||
} else {
|
||||
process.stdin.setEncoding('utf8');
|
||||
process.stdin.on('data', init);
|
||||
}
|
6
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/index.js
generated
vendored
Normal file
6
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/index.js
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
'use strict';
|
||||
var ansiRegex = require('ansi-regex')();
|
||||
|
||||
module.exports = function (str) {
|
||||
return typeof str === 'string' ? str.replace(ansiRegex, '') : str;
|
||||
};
|
4
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js
generated
vendored
Normal file
4
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
'use strict';
|
||||
module.exports = function () {
|
||||
return /(?:(?:\u001b\[)|\u009b)(?:(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m])|\u001b[A-M]/g;
|
||||
};
|
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/license
generated
vendored
Normal file
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/license
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
85
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json
generated
vendored
Normal file
85
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json
generated
vendored
Normal file
@ -0,0 +1,85 @@
|
||||
{
|
||||
"name": "ansi-regex",
|
||||
"version": "1.1.1",
|
||||
"description": "Regular expression for matching ANSI escape codes",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sindresorhus/ansi-regex"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "jbnicolai",
|
||||
"email": "jappelman@xebia.com"
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha test/test.js",
|
||||
"view-supported": "node test/viewCodes.js"
|
||||
},
|
||||
"files": [
|
||||
"index.js"
|
||||
],
|
||||
"keywords": [
|
||||
"ansi",
|
||||
"styles",
|
||||
"color",
|
||||
"colour",
|
||||
"colors",
|
||||
"terminal",
|
||||
"console",
|
||||
"cli",
|
||||
"string",
|
||||
"tty",
|
||||
"escape",
|
||||
"formatting",
|
||||
"rgb",
|
||||
"256",
|
||||
"shell",
|
||||
"xterm",
|
||||
"command-line",
|
||||
"text",
|
||||
"regex",
|
||||
"regexp",
|
||||
"re",
|
||||
"match",
|
||||
"test",
|
||||
"find",
|
||||
"pattern"
|
||||
],
|
||||
"devDependencies": {
|
||||
"mocha": "*"
|
||||
},
|
||||
"gitHead": "47fb974630af70998157b30fad6eb5e5bd7c7cd6",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/ansi-regex/issues"
|
||||
},
|
||||
"homepage": "https://github.com/sindresorhus/ansi-regex",
|
||||
"_id": "ansi-regex@1.1.1",
|
||||
"_shasum": "41c847194646375e6a1a5d10c3ca054ef9fc980d",
|
||||
"_from": "ansi-regex@^1.1.0",
|
||||
"_npmVersion": "2.1.16",
|
||||
"_nodeVersion": "0.10.35",
|
||||
"_npmUser": {
|
||||
"name": "jbnicolai",
|
||||
"email": "jappelman@xebia.com"
|
||||
},
|
||||
"dist": {
|
||||
"shasum": "41c847194646375e6a1a5d10c3ca054ef9fc980d",
|
||||
"tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz"
|
||||
}
|
33
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md
generated
vendored
Normal file
33
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md
generated
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
# ansi-regex [](https://travis-ci.org/sindresorhus/ansi-regex)
|
||||
|
||||
> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
$ npm install --save ansi-regex
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var ansiRegex = require('ansi-regex');
|
||||
|
||||
ansiRegex().test('\u001b[4mcake\u001b[0m');
|
||||
//=> true
|
||||
|
||||
ansiRegex().test('cake');
|
||||
//=> false
|
||||
|
||||
'\u001b[4mcake\u001b[0m'.match(ansiRegex());
|
||||
//=> ['\u001b[4m', '\u001b[0m']
|
||||
```
|
||||
|
||||
*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.*
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
88
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/package.json
generated
vendored
Normal file
88
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/package.json
generated
vendored
Normal file
@ -0,0 +1,88 @@
|
||||
{
|
||||
"name": "strip-ansi",
|
||||
"version": "2.0.1",
|
||||
"description": "Strip ANSI escape codes",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sindresorhus/strip-ansi"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"bin": {
|
||||
"strip-ansi": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha"
|
||||
},
|
||||
"files": [
|
||||
"index.js",
|
||||
"cli.js"
|
||||
],
|
||||
"keywords": [
|
||||
"strip",
|
||||
"trim",
|
||||
"remove",
|
||||
"ansi",
|
||||
"styles",
|
||||
"color",
|
||||
"colour",
|
||||
"colors",
|
||||
"terminal",
|
||||
"console",
|
||||
"cli",
|
||||
"string",
|
||||
"tty",
|
||||
"escape",
|
||||
"formatting",
|
||||
"rgb",
|
||||
"256",
|
||||
"shell",
|
||||
"xterm",
|
||||
"log",
|
||||
"logging",
|
||||
"command-line",
|
||||
"text"
|
||||
],
|
||||
"dependencies": {
|
||||
"ansi-regex": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"mocha": "*"
|
||||
},
|
||||
"gitHead": "1eff0936c01f89efa312d9d51deed137259871a1",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/strip-ansi/issues"
|
||||
},
|
||||
"homepage": "https://github.com/sindresorhus/strip-ansi",
|
||||
"_id": "strip-ansi@2.0.1",
|
||||
"_shasum": "df62c1aa94ed2f114e1d0f21fd1d50482b79a60e",
|
||||
"_from": "strip-ansi@^2.0.1",
|
||||
"_npmVersion": "1.4.28",
|
||||
"_npmUser": {
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "jbnicolai",
|
||||
"email": "jappelman@xebia.com"
|
||||
}
|
||||
],
|
||||
"dist": {
|
||||
"shasum": "df62c1aa94ed2f114e1d0f21fd1d50482b79a60e",
|
||||
"tarball": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz"
|
||||
}
|
43
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/readme.md
generated
vendored
Normal file
43
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/strip-ansi/readme.md
generated
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
# strip-ansi [](https://travis-ci.org/sindresorhus/strip-ansi)
|
||||
|
||||
> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
$ npm install --save strip-ansi
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var stripAnsi = require('strip-ansi');
|
||||
|
||||
stripAnsi('\u001b[4mcake\u001b[0m');
|
||||
//=> 'cake'
|
||||
```
|
||||
|
||||
|
||||
## CLI
|
||||
|
||||
```sh
|
||||
$ npm install --global strip-ansi
|
||||
```
|
||||
|
||||
```sh
|
||||
$ strip-ansi --help
|
||||
|
||||
Usage
|
||||
strip-ansi <input-file> > <output-file>
|
||||
cat <input-file> | strip-ansi > <output-file>
|
||||
|
||||
Example
|
||||
strip-ansi unicorn.txt > unicorn-stripped.txt
|
||||
```
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
29
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/supports-color/cli.js
generated
vendored
Executable file
29
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/supports-color/cli.js
generated
vendored
Executable file
@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env node
|
||||
'use strict';
|
||||
var pkg = require('./package.json');
|
||||
var supportsColor = require('./');
|
||||
var argv = process.argv.slice(2);
|
||||
|
||||
function help() {
|
||||
console.log([
|
||||
'',
|
||||
' ' + pkg.description,
|
||||
'',
|
||||
' Usage',
|
||||
' supports-color',
|
||||
'',
|
||||
' Exits with code 0 if color is supported and 1 if not'
|
||||
].join('\n'));
|
||||
}
|
||||
|
||||
if (argv.indexOf('--help') !== -1) {
|
||||
help();
|
||||
return;
|
||||
}
|
||||
|
||||
if (argv.indexOf('--version') !== -1) {
|
||||
console.log(pkg.version);
|
||||
return;
|
||||
}
|
||||
|
||||
process.exit(supportsColor ? 0 : 1);
|
47
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/supports-color/index.js
generated
vendored
Normal file
47
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/supports-color/index.js
generated
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
'use strict';
|
||||
var argv = process.argv;
|
||||
|
||||
module.exports = (function () {
|
||||
if ('FORCE_COLOR' in process.env) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (argv.indexOf('--no-color') !== -1 ||
|
||||
argv.indexOf('--no-colors') !== -1 ||
|
||||
argv.indexOf('--color=false') !== -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (argv.indexOf('--color') !== -1 ||
|
||||
argv.indexOf('--colors') !== -1 ||
|
||||
argv.indexOf('--color=true') !== -1 ||
|
||||
argv.indexOf('--color=always') !== -1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (process.stdout && !process.stdout.isTTY) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ('UPSTART_JOB' in process.env) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (process.platform === 'win32') {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ('COLORTERM' in process.env) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (process.env.TERM === 'dumb') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
})();
|
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/supports-color/license
generated
vendored
Normal file
21
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/supports-color/license
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
84
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/supports-color/package.json
generated
vendored
Normal file
84
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/supports-color/package.json
generated
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
{
|
||||
"name": "supports-color",
|
||||
"version": "1.3.0",
|
||||
"description": "Detect whether a terminal supports color",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sindresorhus/supports-color"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "sindresorhus.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "jbnicolai",
|
||||
"email": "jappelman@xebia.com"
|
||||
}
|
||||
],
|
||||
"bin": {
|
||||
"supports-color": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha"
|
||||
},
|
||||
"files": [
|
||||
"index.js",
|
||||
"cli.js"
|
||||
],
|
||||
"keywords": [
|
||||
"cli",
|
||||
"bin",
|
||||
"color",
|
||||
"colour",
|
||||
"colors",
|
||||
"terminal",
|
||||
"console",
|
||||
"cli",
|
||||
"ansi",
|
||||
"styles",
|
||||
"tty",
|
||||
"rgb",
|
||||
"256",
|
||||
"shell",
|
||||
"xterm",
|
||||
"command-line",
|
||||
"support",
|
||||
"supports",
|
||||
"capability",
|
||||
"detect"
|
||||
],
|
||||
"devDependencies": {
|
||||
"mocha": "*",
|
||||
"require-uncached": "^1.0.2"
|
||||
},
|
||||
"gitHead": "6977091035fc1634eace9470a35e21262d84356a",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/supports-color/issues"
|
||||
},
|
||||
"homepage": "https://github.com/sindresorhus/supports-color",
|
||||
"_id": "supports-color@1.3.0",
|
||||
"_shasum": "ca7def134d8bf8163e1c92905a49a2e4439b72a0",
|
||||
"_from": "supports-color@^1.3.0",
|
||||
"_npmVersion": "2.5.1",
|
||||
"_nodeVersion": "0.12.0",
|
||||
"_npmUser": {
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
},
|
||||
"dist": {
|
||||
"shasum": "ca7def134d8bf8163e1c92905a49a2e4439b72a0",
|
||||
"tarball": "http://registry.npmjs.org/supports-color/-/supports-color-1.3.0.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.0.tgz"
|
||||
}
|
46
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/supports-color/readme.md
generated
vendored
Normal file
46
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/node_modules/supports-color/readme.md
generated
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
# supports-color [](https://travis-ci.org/sindresorhus/supports-color)
|
||||
|
||||
> Detect whether a terminal supports color
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```
|
||||
$ npm install --save supports-color
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var supportsColor = require('supports-color');
|
||||
|
||||
if (supportsColor) {
|
||||
console.log('Terminal supports color');
|
||||
}
|
||||
```
|
||||
|
||||
It obeys the `--color` and `--no-color` CLI flags.
|
||||
|
||||
For situations where using `--color` is not possible, add an environment variable `FORCE_COLOR` with any value to force color. Trumps `--no-color`.
|
||||
|
||||
|
||||
## CLI
|
||||
|
||||
```
|
||||
$ npm install --global supports-color
|
||||
```
|
||||
|
||||
```
|
||||
$ supports-color --help
|
||||
|
||||
Usage
|
||||
supports-color
|
||||
|
||||
Exits with code 0 if color is supported and 1 if not
|
||||
```
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
82
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/package.json
generated
vendored
Normal file
82
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/package.json
generated
vendored
Normal file
@ -0,0 +1,82 @@
|
||||
{
|
||||
"name": "chalk",
|
||||
"version": "1.0.0",
|
||||
"description": "Terminal string styling done right. Much color.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sindresorhus/chalk"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "jbnicolai",
|
||||
"email": "jappelman@xebia.com"
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha",
|
||||
"bench": "matcha benchmark.js"
|
||||
},
|
||||
"files": [
|
||||
"index.js"
|
||||
],
|
||||
"keywords": [
|
||||
"color",
|
||||
"colour",
|
||||
"colors",
|
||||
"terminal",
|
||||
"console",
|
||||
"cli",
|
||||
"string",
|
||||
"ansi",
|
||||
"styles",
|
||||
"tty",
|
||||
"formatting",
|
||||
"rgb",
|
||||
"256",
|
||||
"shell",
|
||||
"xterm",
|
||||
"log",
|
||||
"logging",
|
||||
"command-line",
|
||||
"text"
|
||||
],
|
||||
"dependencies": {
|
||||
"ansi-styles": "^2.0.1",
|
||||
"escape-string-regexp": "^1.0.2",
|
||||
"has-ansi": "^1.0.3",
|
||||
"strip-ansi": "^2.0.1",
|
||||
"supports-color": "^1.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"matcha": "^0.6.0",
|
||||
"mocha": "*"
|
||||
},
|
||||
"gitHead": "8864d3563313ed15574a38dd5c9d5966080c46ce",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/chalk/issues"
|
||||
},
|
||||
"homepage": "https://github.com/sindresorhus/chalk",
|
||||
"_id": "chalk@1.0.0",
|
||||
"_shasum": "b3cf4ed0ff5397c99c75b8f679db2f52831f96dc",
|
||||
"_from": "chalk@^1.0.0",
|
||||
"_npmVersion": "2.5.1",
|
||||
"_nodeVersion": "0.12.0",
|
||||
"_npmUser": {
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
},
|
||||
"dist": {
|
||||
"shasum": "b3cf4ed0ff5397c99c75b8f679db2f52831f96dc",
|
||||
"tarball": "http://registry.npmjs.org/chalk/-/chalk-1.0.0.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.0.0.tgz"
|
||||
}
|
197
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/readme.md
generated
vendored
Normal file
197
tasks/makepot/node_modules/grunt-shell/node_modules/chalk/readme.md
generated
vendored
Normal file
@ -0,0 +1,197 @@
|
||||
<h1 align="center">
|
||||
<br>
|
||||
<img width="360" src="https://cdn.rawgit.com/sindresorhus/chalk/19935d6484811c5e468817f846b7b3d417d7bf4a/logo.svg" alt="chalk">
|
||||
<br>
|
||||
<br>
|
||||
</h1>
|
||||
|
||||
> Terminal string styling done right
|
||||
|
||||
[](https://travis-ci.org/sindresorhus/chalk) [](https://www.youtube.com/watch?v=Sm368W0OsHo)
|
||||
|
||||
[colors.js](https://github.com/Marak/colors.js) used to be the most popular string styling module, but it has serious deficiencies like extending `String.prototype` which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough.
|
||||
|
||||
**Chalk is a clean and focused alternative.**
|
||||
|
||||

|
||||
|
||||
|
||||
## Why
|
||||
|
||||
- Highly performant
|
||||
- Doesn't extend `String.prototype`
|
||||
- Expressive API
|
||||
- Ability to nest styles
|
||||
- Clean and focused
|
||||
- Auto-detects color support
|
||||
- Actively maintained
|
||||
- [Used by ~3000 modules](https://www.npmjs.com/browse/depended/chalk)
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```
|
||||
$ npm install --save chalk
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
Chalk comes with an easy to use composable API where you just chain and nest the styles you want.
|
||||
|
||||
```js
|
||||
var chalk = require('chalk');
|
||||
|
||||
// style a string
|
||||
chalk.blue('Hello world!');
|
||||
|
||||
// combine styled and normal strings
|
||||
chalk.blue('Hello') + 'World' + chalk.red('!');
|
||||
|
||||
// compose multiple styles using the chainable API
|
||||
chalk.blue.bgRed.bold('Hello world!');
|
||||
|
||||
// pass in multiple arguments
|
||||
chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz');
|
||||
|
||||
// nest styles
|
||||
chalk.red('Hello', chalk.underline.bgBlue('world') + '!');
|
||||
|
||||
// nest styles of the same type even (color, underline, background)
|
||||
chalk.green(
|
||||
'I am a green line ' +
|
||||
chalk.blue.underline.bold('with a blue substring') +
|
||||
' that becomes green again!'
|
||||
);
|
||||
```
|
||||
|
||||
Easily define your own themes.
|
||||
|
||||
```js
|
||||
var chalk = require('chalk');
|
||||
var error = chalk.bold.red;
|
||||
console.log(error('Error!'));
|
||||
```
|
||||
|
||||
Take advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data).
|
||||
|
||||
```js
|
||||
var name = 'Sindre';
|
||||
console.log(chalk.green('Hello %s'), name);
|
||||
//=> Hello Sindre
|
||||
```
|
||||
|
||||
|
||||
## API
|
||||
|
||||
### chalk.`<style>[.<style>...](string, [string...])`
|
||||
|
||||
Example: `chalk.red.bold.underline('Hello', 'world');`
|
||||
|
||||
Chain [styles](#styles) and call the last one as a method with a string argument. Order doesn't matter, and later styles take precedent in case of a conflict. This simply means that `Chalk.red.yellow.green` is equivalent to `Chalk.green`.
|
||||
|
||||
Multiple arguments will be separated by space.
|
||||
|
||||
### chalk.enabled
|
||||
|
||||
Color support is automatically detected, but you can override it by setting the `enabled` property. You should however only do this in your own code as it applies globally to all chalk consumers.
|
||||
|
||||
If you need to change this in a reusable module create a new instance:
|
||||
|
||||
```js
|
||||
var ctx = new chalk.constructor({enabled: false});
|
||||
```
|
||||
|
||||
### chalk.supportsColor
|
||||
|
||||
Detect whether the terminal [supports color](https://github.com/sindresorhus/supports-color). Used internally and handled for you, but exposed for convenience.
|
||||
|
||||
Can be overridden by the user with the flags `--color` and `--no-color`. For situations where using `--color` is not possible, add an environment variable `FORCE_COLOR` with any value to force color. Trumps `--no-color`.
|
||||
|
||||
### chalk.styles
|
||||
|
||||
Exposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles).
|
||||
|
||||
Generally not useful, but you might need just the `.open` or `.close` escape code if you're mixing externally styled strings with your own.
|
||||
|
||||
```js
|
||||
var chalk = require('chalk');
|
||||
|
||||
console.log(chalk.styles.red);
|
||||
//=> {open: '\u001b[31m', close: '\u001b[39m'}
|
||||
|
||||
console.log(chalk.styles.red.open + 'Hello' + chalk.styles.red.close);
|
||||
```
|
||||
|
||||
### chalk.hasColor(string)
|
||||
|
||||
Check whether a string [has color](https://github.com/sindresorhus/has-ansi).
|
||||
|
||||
### chalk.stripColor(string)
|
||||
|
||||
[Strip color](https://github.com/sindresorhus/strip-ansi) from a string.
|
||||
|
||||
Can be useful in combination with `.supportsColor` to strip color on externally styled text when it's not supported.
|
||||
|
||||
Example:
|
||||
|
||||
```js
|
||||
var chalk = require('chalk');
|
||||
var styledString = getText();
|
||||
|
||||
if (!chalk.supportsColor) {
|
||||
styledString = chalk.stripColor(styledString);
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Styles
|
||||
|
||||
### Modifiers
|
||||
|
||||
- `reset`
|
||||
- `bold`
|
||||
- `dim`
|
||||
- `italic` *(not widely supported)*
|
||||
- `underline`
|
||||
- `inverse`
|
||||
- `hidden`
|
||||
- `strikethrough` *(not widely supported)*
|
||||
|
||||
### Colors
|
||||
|
||||
- `black`
|
||||
- `red`
|
||||
- `green`
|
||||
- `yellow`
|
||||
- `blue` *(on Windows the bright version is used as normal blue is illegible)*
|
||||
- `magenta`
|
||||
- `cyan`
|
||||
- `white`
|
||||
- `gray`
|
||||
|
||||
### Background colors
|
||||
|
||||
- `bgBlack`
|
||||
- `bgRed`
|
||||
- `bgGreen`
|
||||
- `bgYellow`
|
||||
- `bgBlue`
|
||||
- `bgMagenta`
|
||||
- `bgCyan`
|
||||
- `bgWhite`
|
||||
|
||||
|
||||
## 256-colors
|
||||
|
||||
Chalk does not support support anything other than the base eight colors, which guarantees it will work on all terminals and systems. Some terminals, specifically `xterm` compliant ones, will support the full range of 8-bit colors. For this the lower level [ansi-256-colors](https://github.com/jbnicolai/ansi-256-colors) package can be used.
|
||||
|
||||
|
||||
## Windows
|
||||
|
||||
If you're on Windows, do yourself a favor and use [`cmder`](http://bliker.github.io/cmder/) instead of `cmd.exe`.
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
67
tasks/makepot/node_modules/grunt-shell/package.json
generated
vendored
Normal file
67
tasks/makepot/node_modules/grunt-shell/package.json
generated
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
{
|
||||
"name": "grunt-shell",
|
||||
"version": "1.1.2",
|
||||
"description": "Run shell commands",
|
||||
"keywords": [
|
||||
"gruntplugin",
|
||||
"shell",
|
||||
"command",
|
||||
"cmd",
|
||||
"exec",
|
||||
"spawn",
|
||||
"process",
|
||||
"cli"
|
||||
],
|
||||
"license": "MIT",
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"files": [
|
||||
"tasks"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sindresorhus/grunt-shell"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "grunt"
|
||||
},
|
||||
"dependencies": {
|
||||
"chalk": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"grunt": "^0.4.5",
|
||||
"grunt-cli": "^0.1.13"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"gitHead": "e25871ae9a1d15ffa464efd7ff9a90c35570c53b",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/grunt-shell/issues"
|
||||
},
|
||||
"homepage": "https://github.com/sindresorhus/grunt-shell",
|
||||
"_id": "grunt-shell@1.1.2",
|
||||
"_shasum": "473e465301d29d0b56df16fe310798ce714d0956",
|
||||
"_from": "grunt-shell@latest",
|
||||
"_npmVersion": "2.5.1",
|
||||
"_nodeVersion": "0.12.0",
|
||||
"_npmUser": {
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "sindresorhus",
|
||||
"email": "sindresorhus@gmail.com"
|
||||
}
|
||||
],
|
||||
"dist": {
|
||||
"shasum": "473e465301d29d0b56df16fe310798ce714d0956",
|
||||
"tarball": "http://registry.npmjs.org/grunt-shell/-/grunt-shell-1.1.2.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-1.1.2.tgz"
|
||||
}
|
245
tasks/makepot/node_modules/grunt-shell/readme.md
generated
vendored
Normal file
245
tasks/makepot/node_modules/grunt-shell/readme.md
generated
vendored
Normal file
@ -0,0 +1,245 @@
|
||||
# grunt-shell [](https://travis-ci.org/sindresorhus/grunt-shell)
|
||||
|
||||
> Run shell commands
|
||||
|
||||
A good way to interact with other CLI tools. E.g. compiling Compass `compass compile` or get the current git branch `git branch`.
|
||||
|
||||
**Use [StackOverflow](http://stackoverflow.com/questions/tagged/gruntjs) for support questions.**
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
$ npm install --save-dev grunt-shell
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
require('load-grunt-tasks')(grunt); // npm install --save-dev load-grunt-tasks
|
||||
|
||||
grunt.initConfig({
|
||||
shell: {
|
||||
options: {
|
||||
stderr: false
|
||||
},
|
||||
target: {
|
||||
command: 'ls'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
grunt.registerTask('default', ['shell']);
|
||||
```
|
||||
|
||||
|
||||
## Examples
|
||||
|
||||
### Run command
|
||||
|
||||
Create a folder named `test`.
|
||||
|
||||
```js
|
||||
grunt.initConfig({
|
||||
shell: {
|
||||
makeDir: {
|
||||
command: 'mkdir test'
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
The `command` property supports templates:
|
||||
|
||||
```js
|
||||
grunt.initConfig({
|
||||
testDir: 'test',
|
||||
shell: {
|
||||
makeDir: {
|
||||
command: 'mkdir <%= testDir %>'
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
You can also supply a function that returns the command:
|
||||
|
||||
```js
|
||||
grunt.initConfig({
|
||||
shell: {
|
||||
hello: {
|
||||
command: function () {
|
||||
return 'echo hello';
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
Which can also take arguments:
|
||||
|
||||
```js
|
||||
module.exports = function(grunt) {
|
||||
grunt.loadNpmTasks('grunt-shell');
|
||||
grunt.initConfig({
|
||||
shell: {
|
||||
greet: {
|
||||
command: function (greeting) {
|
||||
return 'echo ' + greeting;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
grunt.registerTask('default', ['shell:greet:hello']);
|
||||
}
|
||||
```
|
||||
|
||||
### Run command and display the output
|
||||
|
||||
Output a directory listing in your Terminal.
|
||||
|
||||
```js
|
||||
grunt.initConfig({
|
||||
shell: {
|
||||
dirListing: {
|
||||
command: 'ls'
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
### Custom callback
|
||||
|
||||
Do whatever you want with the output.
|
||||
|
||||
```js
|
||||
function log(err, stdout, stderr, cb) {
|
||||
console.log(stdout);
|
||||
cb();
|
||||
}
|
||||
|
||||
grunt.initConfig({
|
||||
shell: {
|
||||
dirListing: {
|
||||
command: 'ls',
|
||||
options: {
|
||||
callback: log
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
### Option passed to the .exec() method
|
||||
|
||||
Run a command in another directory. In this example we run it in a subfolder using the `cwd` (current working directory) option.
|
||||
|
||||
```js
|
||||
grunt.initConfig({
|
||||
shell: {
|
||||
subfolderLs: {
|
||||
command: 'ls',
|
||||
options: {
|
||||
stderr: false,
|
||||
execOptions: {
|
||||
cwd: 'tasks'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
### Multiple commands
|
||||
|
||||
Run multiple commands by placing them in an array which is joined using `&&` or `;`. `&&` means run this only if the previous command succeeded. You can also use `&` to have the commands run concurrently (by executing all commands except the last one in a subshell).
|
||||
|
||||
```js
|
||||
grunt.initConfig({
|
||||
shell: {
|
||||
multiple: {
|
||||
command: [
|
||||
'mkdir test',
|
||||
'cd test',
|
||||
'ls'
|
||||
].join('&&')
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
|
||||
## Config
|
||||
|
||||
### command
|
||||
|
||||
*Required*
|
||||
Type: `string`, `function`
|
||||
|
||||
The command you want to run or a function which returns it. Supports underscore templates.
|
||||
|
||||
## Options
|
||||
|
||||
### stdout
|
||||
|
||||
Type: `boolean`
|
||||
Default: `true`
|
||||
|
||||
Show stdout in the Terminal.
|
||||
|
||||
### stderr
|
||||
|
||||
Type: `boolean`
|
||||
Default: `true`
|
||||
|
||||
Show stderr in the Terminal.
|
||||
|
||||
### stdin
|
||||
|
||||
Type: `boolean`
|
||||
Default: `true`
|
||||
|
||||
Forward the terminal's stdin to the command.
|
||||
|
||||
### failOnError
|
||||
|
||||
Type: `boolean`
|
||||
Default: `true`
|
||||
|
||||
Fail task if it encounters an error. Does not apply if you specify a `callback`.
|
||||
|
||||
### stdinRawMode
|
||||
|
||||
Type: `boolean`
|
||||
Default: `false`
|
||||
|
||||
This sets `stdin` to [act as a raw device](http://nodejs.org/api/tty.html#tty_rs_setrawmode_mode).
|
||||
|
||||
### callback(err, stdout, stderr, cb)
|
||||
|
||||
Type: `function`
|
||||
Default: `function () {}`
|
||||
|
||||
Lets you override the default callback with your own.
|
||||
|
||||
**Make sure to call the `cb` method when you're done.**
|
||||
|
||||
### execOptions
|
||||
|
||||
Type: `object`
|
||||
|
||||
Specify some options to be passed to the [.exec()](http://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback) method:
|
||||
|
||||
- `cwd` String *Current working directory of the child process*
|
||||
- `env` Object *Environment key-value pairs*
|
||||
- `setsid` Boolean
|
||||
- `encoding` String *(Default: 'utf8')*
|
||||
- `timeout` Number *(Default: 0)*
|
||||
- `maxBuffer` Number *(Default: 200\*1024)*
|
||||
- `killSignal` String *(Default: 'SIGTERM')*
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
65
tasks/makepot/node_modules/grunt-shell/tasks/shell.js
generated
vendored
Normal file
65
tasks/makepot/node_modules/grunt-shell/tasks/shell.js
generated
vendored
Normal file
@ -0,0 +1,65 @@
|
||||
'use strict';
|
||||
var exec = require('child_process').exec;
|
||||
var chalk = require('chalk');
|
||||
|
||||
module.exports = function (grunt) {
|
||||
grunt.registerMultiTask('shell', 'Run shell commands', function () {
|
||||
var cb = this.async();
|
||||
var options = this.options({
|
||||
stdout: true,
|
||||
stderr: true,
|
||||
stdin: true,
|
||||
failOnError: true,
|
||||
stdinRawMode: false
|
||||
});
|
||||
var cmd = this.data.command;
|
||||
|
||||
if (cmd === undefined) {
|
||||
throw new Error('`command` required');
|
||||
}
|
||||
|
||||
cmd = grunt.template.process(typeof cmd === 'function' ? cmd.apply(grunt, arguments) : cmd);
|
||||
|
||||
var cp = exec(cmd, options.execOptions, function (err, stdout, stderr) {
|
||||
if (typeof options.callback === 'function') {
|
||||
options.callback.call(this, err, stdout, stderr, cb);
|
||||
} else {
|
||||
if (err && options.failOnError) {
|
||||
grunt.warn(err);
|
||||
}
|
||||
cb();
|
||||
}
|
||||
}.bind(this));
|
||||
|
||||
var captureOutput = function (child, output) {
|
||||
if (grunt.option('color') === false) {
|
||||
child.on('data', function (data) {
|
||||
output.write(chalk.stripColor(data));
|
||||
});
|
||||
} else {
|
||||
child.pipe(output);
|
||||
}
|
||||
};
|
||||
|
||||
grunt.verbose.writeln('Command:', chalk.yellow(cmd));
|
||||
|
||||
if (options.stdout || grunt.option('verbose')) {
|
||||
captureOutput(cp.stdout, process.stdout);
|
||||
}
|
||||
|
||||
if (options.stderr || grunt.option('verbose')) {
|
||||
captureOutput(cp.stderr, process.stderr);
|
||||
}
|
||||
|
||||
if (options.stdin) {
|
||||
process.stdin.resume();
|
||||
process.stdin.setEncoding('utf8');
|
||||
|
||||
if (options.stdinRawMode && process.stdin.isTTY) {
|
||||
process.stdin.setRawMode(true);
|
||||
}
|
||||
|
||||
process.stdin.pipe(cp.stdin);
|
||||
}
|
||||
});
|
||||
};
|
19
tasks/makepot/node_modules/grunt-wp-i18n/.jshintrc
generated
vendored
Normal file
19
tasks/makepot/node_modules/grunt-wp-i18n/.jshintrc
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"boss": true,
|
||||
"curly": true,
|
||||
"devel": true,
|
||||
"eqeqeq": true,
|
||||
"eqnull": true,
|
||||
"expr": true,
|
||||
"immed": true,
|
||||
"latedef": true,
|
||||
"newcap": true,
|
||||
"noarg": true,
|
||||
"node": true,
|
||||
"quotmark": "single",
|
||||
"smarttabs": true,
|
||||
"sub": true,
|
||||
"trailing": true,
|
||||
"undef": true,
|
||||
"unused": "vars"
|
||||
}
|
4
tasks/makepot/node_modules/grunt-wp-i18n/.npmignore
generated
vendored
Normal file
4
tasks/makepot/node_modules/grunt-wp-i18n/.npmignore
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
npm-debug.log
|
||||
tmp
|
11
tasks/makepot/node_modules/grunt-wp-i18n/.travis.yml
generated
vendored
Normal file
11
tasks/makepot/node_modules/grunt-wp-i18n/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
language: php
|
||||
|
||||
php:
|
||||
- "5.4"
|
||||
- "5.3"
|
||||
|
||||
before_install:
|
||||
- npm install -g grunt-cli
|
||||
- npm install
|
||||
|
||||
script: grunt test
|
90
tasks/makepot/node_modules/grunt-wp-i18n/CHANGELOG.md
generated
vendored
Normal file
90
tasks/makepot/node_modules/grunt-wp-i18n/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,90 @@
|
||||
# Changelog for grunt-wp-i18n
|
||||
|
||||
## 0.5.2
|
||||
|
||||
* Stopped the PHP script from scanning files in excluded directories when running the makepot task. See [#52](https://github.com/cedaro/grunt-wp-i18n/issues/52)
|
||||
|
||||
## 0.5.1
|
||||
|
||||
* Merged upstream changes to provide better support for multiline translators comments. Props [@ntwp](https://github.com/ntwb)
|
||||
|
||||
## 0.5.0
|
||||
|
||||
* Added tasks descriptions. Props [@shivapoudel](https://github.com/shivapoudel)
|
||||
* Made POT header keys case-insenstive.
|
||||
* Added msgmerge support to the makepot task for updating PO files. Props [@atimmer](https://github.com/atimmer)
|
||||
* Pulled in upstream changes to WP i18n tools.
|
||||
* Allow `updateDomains: true` in the addtextdomain task to update all text domains in a project.
|
||||
* Simplified makepot task output.
|
||||
|
||||
## 0.4.9
|
||||
|
||||
* Fixed a bug causing the `addtextdomain` task to finish early.
|
||||
|
||||
## 0.4.8
|
||||
|
||||
* Introduced the `potHeaders.poedit` and `potHeaders['x-poedit-keywordslist']` options to include common Poedit headers. Props [@defries](https://github.com/defries) & [@GaryJones](https://github.com/GaryJones).
|
||||
* Fixed capitalization of the `X-Poedit-SearchPathExcluded-0` header. Props [@GaryJones](https://github.com/GaryJones).
|
||||
* Added a `--dry-run` switch to the `addtextdomain` task to view replacements in stdout instead of updating files.
|
||||
|
||||
## 0.4.7
|
||||
|
||||
* Added an `includes` option for the `makepot` task to specify which files should be scanned. Props [@claudiosmweb](https://github.com/claudiosmweb).
|
||||
* Added an `updateDomains` option for the `addtextdomain` task to allow a list of specified text domains to be replaced with a new text domain.
|
||||
|
||||
## 0.4.6
|
||||
|
||||
* Fixed an issue with replacing comment headers when using external i18n tools.
|
||||
|
||||
## 0.4.5
|
||||
|
||||
* Introduced the `potHeaders` option for defining headers without using the `processPot` callback.
|
||||
* Added an X-Generator header.
|
||||
* Added a method to fix case-sensitive Poedit headers.
|
||||
* Changed `date()` calls to `gmdate()` in the PHP tools to prevent error messages when date.timezone isn't set in php.ini.
|
||||
|
||||
## 0.4.4
|
||||
|
||||
* Added the `potComments` option to change the copyright message.
|
||||
* Added the `updateTimestamp` option to prevent the `POT-Creation-Header` from being updated if there aren't any other changes in the POT file.
|
||||
* Updated the addtextdomain task to adhere to the WordPress coding standards when inserting a text domain. Props [@GaryJones](https://github.com/GaryJones).
|
||||
|
||||
## 0.4.3
|
||||
|
||||
* Re-tag updates from 0.4.2 that didn't get added to the release.
|
||||
|
||||
## 0.4.2
|
||||
|
||||
* Added the `processPot` option to specify a callback for advanced manipulation of the POT file after it's been generated.
|
||||
|
||||
## 0.4.1
|
||||
|
||||
* Cleaned up strict errors and applied basic coding standards to the WP i18n tools. Props [@grappler](https://github.com/grappler).
|
||||
* Incorporated upstream improvements for finding the main plugin file.
|
||||
|
||||
## 0.4.0
|
||||
|
||||
* Added an `exclude` option to ignore strings in specified directories or files.
|
||||
* Set the current working directory based on the `cwd` option. All options should be relative to `cwd`.
|
||||
* Fixed the searching process in `wordpress.getMainFile()` if the standard main file can't be found.
|
||||
* Attempt to prevent an error in the CLI tools if the main plugin file name doesn't match the guessed slug.
|
||||
* Added some basic tests.
|
||||
|
||||
## 0.3.1
|
||||
|
||||
* Fixed a bug where the text domain wasn't properly guessed in subdirectories if the Text Domain header didn't exist.
|
||||
* Moved all the makepot functionality into a single task.
|
||||
|
||||
## 0.3.0
|
||||
|
||||
* Added the `addtextdomain` task.
|
||||
|
||||
## 0.2.0
|
||||
|
||||
* Forked and bundled the WordPress i18n tools so they no longer need to be downloaded separately.
|
||||
* Removed the gettext dependency by relying on the [gettext-parser](https://github.com/andris9/gettext-parser) package to remove duplicate strings in POT files.
|
||||
* Fixed the wp.slugify() method to properly guess the project slug when in an SVN repo.
|
||||
|
||||
## 0.1.0
|
||||
|
||||
* Initial release.
|
26
tasks/makepot/node_modules/grunt-wp-i18n/CONTRIBUTING.md
generated
vendored
Normal file
26
tasks/makepot/node_modules/grunt-wp-i18n/CONTRIBUTING.md
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
# Contributing
|
||||
|
||||
Thanks for your interesting in helping make *grunt-wp-i18n* better! Read on for a few basic tips and guidelines for contributing.
|
||||
|
||||
## Pull Requests
|
||||
|
||||
Feel free to submit a pull request at any time, but please explain the reason for the change (use cases may be helpful). Opening an issue beforehand may also be beneficial to hash out the direction and determine if it's worthwhile.
|
||||
|
||||
Submit pull requests against the `develop` branch.
|
||||
|
||||
## Code Style
|
||||
|
||||
Since this project is WordPress-centric, we try to follow the guidelines for WordPress' [JavaScript Coding Standards](https://make.wordpress.org/core/handbook/coding-standards/javascript/).
|
||||
|
||||
## Testing the Develop Branch
|
||||
|
||||
Update the version in `packages.json` to point to the `develop` branch:
|
||||
|
||||
```js
|
||||
"devDependencies": {
|
||||
"grunt": "~0.4.5",
|
||||
"grunt-wp-i18n": "git://github.com/cedaro/grunt-wp-i18n.git#develop"
|
||||
}
|
||||
```
|
||||
|
||||
Run `npm install` to install the development branch.
|
210
tasks/makepot/node_modules/grunt-wp-i18n/Gruntfile.js
generated
vendored
Normal file
210
tasks/makepot/node_modules/grunt-wp-i18n/Gruntfile.js
generated
vendored
Normal file
@ -0,0 +1,210 @@
|
||||
/*
|
||||
* grunt-wp-i18n
|
||||
* https://github.com/cedaro/grunt-wp-i18n
|
||||
*
|
||||
* Copyright (c) 2014 Cedaro, LLC
|
||||
* Licensed under the MIT license.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = function(grunt) {
|
||||
|
||||
grunt.loadTasks( 'tasks' );
|
||||
grunt.loadNpmTasks( 'grunt-contrib-clean' );
|
||||
grunt.loadNpmTasks( 'grunt-contrib-copy' );
|
||||
grunt.loadNpmTasks( 'grunt-contrib-jshint' );
|
||||
grunt.loadNpmTasks( 'grunt-contrib-nodeunit' );
|
||||
|
||||
grunt.config.init({
|
||||
|
||||
jshint: {
|
||||
options: {
|
||||
jshintrc: '.jshintrc'
|
||||
},
|
||||
all: [
|
||||
'Gruntfile.js',
|
||||
'tasks/*.js',
|
||||
'tasks/lib/*.js'
|
||||
]
|
||||
},
|
||||
|
||||
// Before generating any new files, remove any previously-created files.
|
||||
clean: {
|
||||
tests: ['tmp']
|
||||
},
|
||||
|
||||
copy: {
|
||||
tests: {
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'test/fixtures',
|
||||
src: ['**'],
|
||||
dest: 'tmp/'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
addtextdomain: {
|
||||
options: {
|
||||
textdomain: 'newtextdomain'
|
||||
},
|
||||
add_domain: {
|
||||
src: ['tmp/text-domains/add-domain.php']
|
||||
},
|
||||
update_domains: {
|
||||
options: {
|
||||
updateDomains: ['oldtextdomain', 'vendortextdomain']
|
||||
},
|
||||
src: ['tmp/text-domains/update-domains.php']
|
||||
},
|
||||
update_all_domains: {
|
||||
options: {
|
||||
updateDomains: true
|
||||
},
|
||||
src: ['tmp/text-domains/update-all-domains.php']
|
||||
}
|
||||
},
|
||||
|
||||
// Configuration to be run (and then tested).
|
||||
makepot: {
|
||||
basic_plugin: {
|
||||
options: {
|
||||
cwd: 'tmp/basic-plugin',
|
||||
type: 'wp-plugin'
|
||||
}
|
||||
},
|
||||
persist_timestamp: {
|
||||
options: {
|
||||
cwd: 'tmp/basic-plugin',
|
||||
type: 'wp-plugin',
|
||||
updateTimestamp: false
|
||||
}
|
||||
},
|
||||
different_slugs: {
|
||||
options: {
|
||||
cwd: 'tmp/different-slugs',
|
||||
type: 'wp-plugin'
|
||||
}
|
||||
},
|
||||
plugin_headers: {
|
||||
options: {
|
||||
cwd: 'tmp/plugin-headers',
|
||||
potComments: 'A new comment header.',
|
||||
potHeaders: {
|
||||
'report-msgid-bugs-to': 'https://github.com/cedaro/grunt-wp-i18n/issues',
|
||||
'x-poedit-keywordslist': '',
|
||||
'x-poedit-searchpath-0': '',
|
||||
'x-poedit-searchpathexcluded-0': '',
|
||||
'x-poedit-sourcecharset': ''
|
||||
},
|
||||
processPot: function( pot, options ) {
|
||||
pot.headers['language-team'] = 'Team Name <team@example.com>';
|
||||
return pot;
|
||||
},
|
||||
type: 'wp-plugin'
|
||||
}
|
||||
},
|
||||
theme_headers: {
|
||||
options: {
|
||||
cwd: 'tmp/theme-headers',
|
||||
processPot: function( pot, options ) {
|
||||
pot.headers['language-team'] = 'Team Name <team@example.com>';
|
||||
return pot;
|
||||
},
|
||||
type: 'wp-theme'
|
||||
}
|
||||
},
|
||||
ignore_headers: {
|
||||
options: {
|
||||
cwd: 'tmp/plugin-headers',
|
||||
domainPath: '.',
|
||||
potFilename: 'override.pot',
|
||||
type: 'wp-plugin'
|
||||
}
|
||||
},
|
||||
basic_theme: {
|
||||
options: {
|
||||
cwd: 'tmp/basic-theme',
|
||||
exclude: ['exclude/.*'],
|
||||
type: 'wp-theme'
|
||||
}
|
||||
},
|
||||
plugin_include: {
|
||||
options: {
|
||||
cwd: 'tmp/plugin-include',
|
||||
include: ['include/.*'],
|
||||
type: 'wp-plugin'
|
||||
}
|
||||
},
|
||||
common_pot_headers: {
|
||||
options: {
|
||||
cwd: 'tmp/common-pot-headers',
|
||||
potHeaders: {
|
||||
poedit: true
|
||||
|
||||
},
|
||||
type: 'wp-plugin'
|
||||
}
|
||||
},
|
||||
customize_common_pot_headers: {
|
||||
options: {
|
||||
cwd: 'tmp/common-pot-headers',
|
||||
potFilename: 'custom-pot-headers.pot',
|
||||
potHeaders: {
|
||||
'x-poedit-country': 'Spain',
|
||||
poedit: true,
|
||||
language: 'es',
|
||||
'x-poedit-keywordslist': '',
|
||||
'Project-Id-Version': 'Custom Value' // Testing case.
|
||||
},
|
||||
type: 'wp-plugin'
|
||||
}
|
||||
},
|
||||
translator_comments: {
|
||||
options: {
|
||||
cwd: 'tmp/translator-comments',
|
||||
type: 'wp-plugin'
|
||||
}
|
||||
},
|
||||
|
||||
msg_merge_merging: {
|
||||
options: {
|
||||
cwd: 'tmp/msg-merge',
|
||||
updatePoFiles: true
|
||||
}
|
||||
},
|
||||
|
||||
msg_merge_no_merging: {
|
||||
options: {
|
||||
cwd: 'tmp/msg-merge-no-merge',
|
||||
updatePoFiles: false
|
||||
}
|
||||
},
|
||||
|
||||
msg_merge_theme: {
|
||||
options: {
|
||||
type: 'wp-theme',
|
||||
cwd: 'tmp/msg-merge-theme',
|
||||
updatePoFiles: true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// Unit tests.
|
||||
nodeunit: {
|
||||
tests: ['test/*_test.js'],
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Register default task.
|
||||
grunt.registerTask( 'default', ['jshint', 'test']);
|
||||
|
||||
// Whenever the "test" task is run, first clean the "tmp" dir,
|
||||
// copy the "fixtures", then run this plugin's task(s), then test the result.
|
||||
grunt.registerTask( 'test', ['clean', 'copy', 'makepot', 'addtextdomain', 'nodeunit']);
|
||||
|
||||
};
|
21
tasks/makepot/node_modules/grunt-wp-i18n/LICENSE.md
generated
vendored
Normal file
21
tasks/makepot/node_modules/grunt-wp-i18n/LICENSE.md
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2014 Cedaro, LLC http://www.cedaro.com/
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
35
tasks/makepot/node_modules/grunt-wp-i18n/README.md
generated
vendored
Normal file
35
tasks/makepot/node_modules/grunt-wp-i18n/README.md
generated
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
# grunt-wp-i18n [](https://travis-ci.org/cedaro/grunt-wp-i18n)
|
||||
|
||||
> Internationalize WordPress plugins and themes.
|
||||
|
||||
WordPress has a robust suite of tools to help internationalize plugins and themes. This plugin brings the power of those existing tools to Grunt in order to make it easy for you to automate the i18n process and make your projects more accessible to an international audience.
|
||||
|
||||
If you're not familiar with i18n concepts, read the Internationalization entries in the [Plugin Developer Handbook](https://developer.wordpress.org/plugins/internationalization/) or [Theme Developer Handbook](https://developer.wordpress.org/themes/functionality/internationalization/).
|
||||
|
||||
|
||||
## Getting Started
|
||||
|
||||
If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
|
||||
|
||||
```shell
|
||||
npm install grunt-wp-i18n --save-dev
|
||||
```
|
||||
|
||||
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
|
||||
|
||||
```js
|
||||
grunt.loadNpmTasks( 'grunt-wp-i18n' );
|
||||
```
|
||||
|
||||
### Requirements
|
||||
|
||||
* This plugin requires Grunt `~0.4.0`.
|
||||
* [PHP CLI](http://www.php.net/manual/en/features.commandline.introduction.php) must be in your system path.
|
||||
|
||||
|
||||
## Tasks
|
||||
|
||||
This plugin consists of two configurable tasks:
|
||||
|
||||
* [makepot](docs/makepot.md) - Generate a POT file.
|
||||
* [addtextdomain](docs/addtextdomain.md) - Add a text domain to gettext functions.
|
73
tasks/makepot/node_modules/grunt-wp-i18n/docs/addtextdomain.md
generated
vendored
Normal file
73
tasks/makepot/node_modules/grunt-wp-i18n/docs/addtextdomain.md
generated
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
# Addtextdomain task
|
||||
|
||||
Add the text domain to gettext functions in your plugin or theme.
|
||||
|
||||
**Warning:** This task will overwrite files in your project. Be sure to have a backup or commit any changes before running it. Viewing a diff after the task has run is a good way to verify any changes. To preview changes without updating files, use the `--dry-run` switch when running the task.
|
||||
|
||||
_Run this task with the `grunt addtextdomain` command (or `grunt addtextdomain --dry-run` to preview)._
|
||||
|
||||
|
||||
## Overview
|
||||
|
||||
In your project's Gruntfile, add a section named `addtextdomain` to the data object passed into `grunt.initConfig()`.
|
||||
|
||||
```js
|
||||
grunt.initConfig({
|
||||
addtextdomain: {
|
||||
options: {
|
||||
i18nToolsPath: '', // Path to the i18n tools directory.
|
||||
textdomain: '', // Project text domain.
|
||||
updateDomains: [] // List of text domains to replace.
|
||||
},
|
||||
target: {
|
||||
files: {}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
|
||||
## Options
|
||||
|
||||
### options.i18nToolsPath
|
||||
Type: `String`
|
||||
|
||||
Path to a local copy of the WordPress i18n tools. May be relative to the project or an absolute path. Defaults to a bundled version of the i18n tools.
|
||||
|
||||
### options.textdomain
|
||||
Type: `String`
|
||||
Default value: `''`
|
||||
Example value: `'plugin-or-theme-slug'`
|
||||
|
||||
Defaults to the "Text Domain" header if it exists, otherwise uses the project directory name.
|
||||
|
||||
### options.updateDomains
|
||||
Type: `Array|true`
|
||||
Default value: `[]`
|
||||
Example value: `[ 'original-domain', 'vendor-domain' ]`
|
||||
|
||||
A list of text domains to replace with the new text domain. Setting the value to `true` will update all text domains with the new text domain.
|
||||
|
||||
|
||||
## Usage Examples
|
||||
|
||||
Options may be specified at the task or target level, but are optional. Each target must define the files that should be processed. It's not necessary to declare a destination since the files will be updated in place.
|
||||
|
||||
```js
|
||||
grunt.initConfig({
|
||||
addtextdomain: {
|
||||
target: {
|
||||
files: {
|
||||
src: [
|
||||
'*.php',
|
||||
'**/*.php',
|
||||
'!node_modules/**',
|
||||
'!tests/**'
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
This task supports the same file mapping format Grunt supports. Please read [Globbing patterns](http://gruntjs.com/configuring-tasks#globbing-patterns) and [Building the files object dynamically](http://gruntjs.com/configuring-tasks#building-the-files-object-dynamically) for additional details.
|
26
tasks/makepot/node_modules/grunt-wp-i18n/docs/examples/custom-working-directory.md
generated
vendored
Normal file
26
tasks/makepot/node_modules/grunt-wp-i18n/docs/examples/custom-working-directory.md
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
# Custom Working Directory (cwd)
|
||||
|
||||
If using with a custom build process, the following config would process strings in the `/dist` subdirectory and save the POT file to `/dist/languages/plugin-slug.pot`.
|
||||
|
||||
The `report-msgid-bugs-to` and `language-team` POT headers will also be replaced with custom values in the `processPot` callback.
|
||||
|
||||
```js
|
||||
grunt.initConfig({
|
||||
makepot: {
|
||||
target: {
|
||||
options: {
|
||||
cwd: 'dist'
|
||||
domainPath: '/languages',
|
||||
mainFile: 'plugin-slug.php',
|
||||
potFilename: 'plugin-slug.pot',
|
||||
processPot: function( pot, options ) {
|
||||
pot.headers['report-msgid-bugs-to'] = 'http://example.com/issues';
|
||||
pot.headers['language-team'] = 'Team Name <team@example.com>';
|
||||
return pot;
|
||||
},
|
||||
type: 'wp-plugin'
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
48
tasks/makepot/node_modules/grunt-wp-i18n/docs/examples/remove-package-metadata.md
generated
vendored
Normal file
48
tasks/makepot/node_modules/grunt-wp-i18n/docs/examples/remove-package-metadata.md
generated
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
# Plugin and Theme Metadata
|
||||
|
||||
You may use the `processPot` callback to control which metadata is automatically added to the POT file. This may be useful if you don't want Author or Plugin/Theme names and URLs to be translatable.
|
||||
|
||||
```js
|
||||
grunt.initConfig({
|
||||
makepot: {
|
||||
target: {
|
||||
options: {
|
||||
processPot: function( pot ) {
|
||||
var translation,
|
||||
excluded_meta = [
|
||||
'Plugin Name of the plugin/theme',
|
||||
'Plugin URI of the plugin/theme',
|
||||
'Author of the plugin/theme',
|
||||
'Author URI of the plugin/theme'
|
||||
];
|
||||
|
||||
for ( translation in pot.translations[''] ) {
|
||||
if ( 'undefined' !== typeof pot.translations[''][ translation ].comments.extracted ) {
|
||||
if ( excluded_meta.indexOf( pot.translations[''][ translation ].comments.extracted ) >= 0 ) {
|
||||
console.log( 'Excluded meta: ' + pot.translations[''][ translation ].comments.extracted );
|
||||
delete pot.translations[''][ translation ];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return pot;
|
||||
},
|
||||
type: 'wp-plugin'
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
The following strings are recognized:
|
||||
|
||||
```
|
||||
Plugin Name of the plugin/theme
|
||||
Theme Name of the plugin/theme
|
||||
Plugin URI of the plugin/theme
|
||||
Theme URI of the plugin/theme
|
||||
Description of the plugin/theme
|
||||
Author of the plugin/theme
|
||||
Author URI of the plugin/theme
|
||||
Tags of the plugin/theme
|
||||
```
|
156
tasks/makepot/node_modules/grunt-wp-i18n/docs/makepot.md
generated
vendored
Normal file
156
tasks/makepot/node_modules/grunt-wp-i18n/docs/makepot.md
generated
vendored
Normal file
@ -0,0 +1,156 @@
|
||||
# Makepot task
|
||||
|
||||
Generate a POT file for translators to use when translating your plugin or theme.
|
||||
|
||||
_Run this task with the `grunt makepot` command._
|
||||
|
||||
|
||||
## Overview
|
||||
|
||||
In your project's Gruntfile, add a section named `makepot` to the data object passed into `grunt.initConfig()`.
|
||||
|
||||
```js
|
||||
grunt.initConfig({
|
||||
makepot: {
|
||||
target: {
|
||||
options: {
|
||||
cwd: '', // Directory of files to internationalize.
|
||||
domainPath: '', // Where to save the POT file.
|
||||
exclude: [], // List of files or directories to ignore.
|
||||
include: [], // List of files or directories to include.
|
||||
mainFile: '', // Main project file.
|
||||
potComments: '', // The copyright at the beginning of the POT file.
|
||||
potFilename: '', // Name of the POT file.
|
||||
potHeaders: {
|
||||
poedit: true, // Includes common Poedit headers.
|
||||
'x-poedit-keywordslist': true // Include a list of all possible gettext functions.
|
||||
}, // Headers to add to the generated POT file.
|
||||
processPot: null, // A callback function for manipulating the POT file.
|
||||
type: 'wp-plugin', // Type of project (wp-plugin or wp-theme).
|
||||
updateTimestamp: true // Whether the POT-Creation-Date should be updated without other changes.
|
||||
updatePoFiles: false // Whether to update PO files in the same directory as the POT file.
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
## Options
|
||||
|
||||
All options are optional, but at the very least a target needs to exist. At a minimum, set an option specifying the type of project.
|
||||
|
||||
```js
|
||||
grunt.initConfig({
|
||||
makepot: {
|
||||
target: {
|
||||
options: {
|
||||
type: 'wp-plugin'
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
### options.cwd
|
||||
Type: `String`
|
||||
Default value: `''`
|
||||
Example value: `'release'`
|
||||
|
||||
The directory that should be internationalized. Defaults to the project root, but can be set to a subdirectory, for instance, when used in a build process. Should be relative to the project root.
|
||||
|
||||
### options.domainPath
|
||||
Type: `String`
|
||||
Default value: `''`
|
||||
Example value: `'/languages'`
|
||||
|
||||
The directory where the POT file should be saved. Defaults to the value from the "Domain Path" header if it exists.
|
||||
|
||||
### options.exclude
|
||||
Type: `String`
|
||||
Default value: `[]`
|
||||
Example value: `['subdir/.*']`
|
||||
|
||||
List of files or directories to ignore when generating the POT file. Note that the globbing pattern is a basic PHP [regular expression](https://github.com/blazersix/grunt-wp-i18n/blob/develop/vendor/wp-i18n-tools/extract.php#L66).
|
||||
|
||||
### options.include
|
||||
Type: `String`
|
||||
Default value: `[]`
|
||||
Example value: `['subdir/.*']`
|
||||
|
||||
List of files or directories to include when generating the POT file. Note that the globbing pattern is a basic PHP [regular expression](https://github.com/blazersix/grunt-wp-i18n/blob/develop/vendor/wp-i18n-tools/extract.php#L66)
|
||||
|
||||
### options.mainFile
|
||||
Type: `String`
|
||||
Default value: `''`
|
||||
Example value: `'plugin-slug.php'` or `'style.css'`
|
||||
|
||||
Name of the main project file where the headers can be found. In themes, this will default to `style.css`. An attempt will be made to auto-discover the main file for plugins, but specifying it here can improve performance and will help disambiguate between multiple plugin files in the same project.
|
||||
|
||||
### options.potComments
|
||||
Type: `String`
|
||||
Example value: `'Custom Copyright (c) {{year}}'`
|
||||
|
||||
Comment at the beginning of the POT file. Defaults to the copyright message generated by makepot.php. Use `\n` for newlines and `{{year}}` to insert the current year.
|
||||
|
||||
### options.potFilename
|
||||
Type: `String`
|
||||
Default value: `''`
|
||||
Example value: `'plugin-or-theme-slug.pot'`
|
||||
|
||||
Name of the POT file. Defaults to the "Text Domain" header if it exists, otherwise uses the project directory name.
|
||||
|
||||
### options.potHeaders
|
||||
Type: `Object`
|
||||
Example value: `{ 'report-msgid-bugs-to': 'https://github.com/blazersix/grunt-wp-i18n/issues' }`
|
||||
|
||||
List of headers to add to the POT file in the form of key-value pairs.
|
||||
|
||||
Adding a `poedit` property with a value of `true` will add the following commonly-used Poedit headers to ease setup for translators:
|
||||
|
||||
```js
|
||||
{
|
||||
'language': 'en',
|
||||
'plural-forms': 'nplurals=2; plural=(n != 1);',
|
||||
'x-poedit-country': 'United States',
|
||||
'x-poedit-sourcecharset': 'UTF-8',
|
||||
'x-poedit-keywordslist': '__;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c;_nc:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;',
|
||||
'x-poedit-basepath': '../',
|
||||
'x-poedit-searchpath-0': '.',
|
||||
'x-poedit-bookmarks': '',
|
||||
'x-textdomain-support': 'yes'
|
||||
}
|
||||
```
|
||||
|
||||
If custom values are used for the various Poedit headers, but you want to include WordPress gettext function calls, set the value of `x-poedit-keywordslist` to `true` and they will be included automatically.
|
||||
|
||||
### options.processPot
|
||||
Type: `Function( pot, options )`
|
||||
Default value: `null`
|
||||
|
||||
A callback function for advanced manipulation of the POT file after it's generated.
|
||||
|
||||
### options.type
|
||||
Type: `String`
|
||||
Default value: `'wp-plugin'`
|
||||
Example value: `'wp-plugin'` or `'wp-theme'`
|
||||
|
||||
The type of project.
|
||||
|
||||
### options.updateTimestamp
|
||||
Type: `Boolean`
|
||||
Default value: `true`
|
||||
|
||||
Whether the `POT-Creation-Date` header should be updated if no other changes to the POT file are detected.
|
||||
|
||||
### options.updatePoFiles
|
||||
Type: `Boolean`
|
||||
Default value: `false`
|
||||
|
||||
[GNU gettext](https://www.gnu.org/software/gettext/) must be in your system path to use this option.
|
||||
|
||||
Whether to update the PO files that are present in the same directory as the POT file using the [msgmerge](https://www.gnu.org/software/gettext/manual/html_node/msgmerge-Invocation.html) program.
|
||||
|
||||
## Usage Examples
|
||||
|
||||
* [Using a custom working directory.](examples/custom-working-directory.md)
|
||||
* [Remove plugin or theme metadata from the POT file.](examples/remove-package-metadata.md)
|
5
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/.travis.yml
generated
vendored
Normal file
5
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.10"
|
||||
- "0.12"
|
||||
- "iojs"
|
19
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/LICENSE
generated
vendored
Normal file
19
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/LICENSE
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
Copyright (c) 2010-2014 Caolan McMahon
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
1647
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/README.md
generated
vendored
Normal file
1647
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/README.md
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
38
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/bower.json
generated
vendored
Normal file
38
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/bower.json
generated
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"name": "async",
|
||||
"description": "Higher-order functions and common patterns for asynchronous code",
|
||||
"version": "0.9.2",
|
||||
"main": "lib/async.js",
|
||||
"keywords": [
|
||||
"async",
|
||||
"callback",
|
||||
"utility",
|
||||
"module"
|
||||
],
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/caolan/async.git"
|
||||
},
|
||||
"devDependencies": {
|
||||
"nodeunit": ">0.0.0",
|
||||
"uglify-js": "1.2.x",
|
||||
"nodelint": ">0.0.0",
|
||||
"lodash": ">=2.4.1"
|
||||
},
|
||||
"moduleType": [
|
||||
"amd",
|
||||
"globals",
|
||||
"node"
|
||||
],
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"node_modules",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests"
|
||||
],
|
||||
"authors": [
|
||||
"Caolan McMahon"
|
||||
]
|
||||
}
|
16
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/component.json
generated
vendored
Normal file
16
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/component.json
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "async",
|
||||
"description": "Higher-order functions and common patterns for asynchronous code",
|
||||
"version": "0.9.2",
|
||||
"keywords": [
|
||||
"async",
|
||||
"callback",
|
||||
"utility",
|
||||
"module"
|
||||
],
|
||||
"license": "MIT",
|
||||
"repository": "caolan/async",
|
||||
"scripts": [
|
||||
"lib/async.js"
|
||||
]
|
||||
}
|
1123
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/lib/async.js
generated
vendored
Normal file
1123
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/lib/async.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
84
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/package.json
generated
vendored
Normal file
84
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/package.json
generated
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
{
|
||||
"name": "async",
|
||||
"description": "Higher-order functions and common patterns for asynchronous code",
|
||||
"main": "lib/async.js",
|
||||
"author": {
|
||||
"name": "Caolan McMahon"
|
||||
},
|
||||
"version": "0.9.2",
|
||||
"keywords": [
|
||||
"async",
|
||||
"callback",
|
||||
"utility",
|
||||
"module"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/caolan/async.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/caolan/async/issues"
|
||||
},
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"nodeunit": ">0.0.0",
|
||||
"uglify-js": "1.2.x",
|
||||
"nodelint": ">0.0.0",
|
||||
"lodash": ">=2.4.1"
|
||||
},
|
||||
"jam": {
|
||||
"main": "lib/async.js",
|
||||
"include": [
|
||||
"lib/async.js",
|
||||
"README.md",
|
||||
"LICENSE"
|
||||
],
|
||||
"categories": [
|
||||
"Utilities"
|
||||
]
|
||||
},
|
||||
"scripts": {
|
||||
"test": "nodeunit test/test-async.js"
|
||||
},
|
||||
"spm": {
|
||||
"main": "lib/async.js"
|
||||
},
|
||||
"volo": {
|
||||
"main": "lib/async.js",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"node_modules",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests"
|
||||
]
|
||||
},
|
||||
"gitHead": "de3a16091d5125384eff4a54deb3998b13c3814c",
|
||||
"homepage": "https://github.com/caolan/async#readme",
|
||||
"_id": "async@0.9.2",
|
||||
"_shasum": "aea74d5e61c1f899613bf64bda66d4c78f2fd17d",
|
||||
"_from": "async@>=0.9.0 <0.10.0",
|
||||
"_npmVersion": "2.9.0",
|
||||
"_nodeVersion": "2.0.1",
|
||||
"_npmUser": {
|
||||
"name": "beaugunderson",
|
||||
"email": "beau@beaugunderson.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "caolan",
|
||||
"email": "caolan.mcmahon@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "beaugunderson",
|
||||
"email": "beau@beaugunderson.com"
|
||||
}
|
||||
],
|
||||
"dist": {
|
||||
"shasum": "aea74d5e61c1f899613bf64bda66d4c78f2fd17d",
|
||||
"tarball": "http://registry.npmjs.org/async/-/async-0.9.2.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
|
||||
"readme": "ERROR: No README data found!"
|
||||
}
|
53
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/support/sync-package-managers.js
generated
vendored
Executable file
53
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/async/support/sync-package-managers.js
generated
vendored
Executable file
@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
// This should probably be its own module but complaints about bower/etc.
|
||||
// support keep coming up and I'd rather just enable the workflow here for now
|
||||
// and figure out where this should live later. -- @beaugunderson
|
||||
|
||||
var fs = require('fs');
|
||||
var _ = require('lodash');
|
||||
|
||||
var packageJson = require('../package.json');
|
||||
|
||||
var IGNORES = ['**/.*', 'node_modules', 'bower_components', 'test', 'tests'];
|
||||
var INCLUDES = ['lib/async.js', 'README.md', 'LICENSE'];
|
||||
var REPOSITORY_NAME = 'caolan/async';
|
||||
|
||||
packageJson.jam = {
|
||||
main: packageJson.main,
|
||||
include: INCLUDES,
|
||||
categories: ['Utilities']
|
||||
};
|
||||
|
||||
packageJson.spm = {
|
||||
main: packageJson.main
|
||||
};
|
||||
|
||||
packageJson.volo = {
|
||||
main: packageJson.main,
|
||||
ignore: IGNORES
|
||||
};
|
||||
|
||||
var bowerSpecific = {
|
||||
moduleType: ['amd', 'globals', 'node'],
|
||||
ignore: IGNORES,
|
||||
authors: [packageJson.author]
|
||||
};
|
||||
|
||||
var bowerInclude = ['name', 'description', 'version', 'main', 'keywords',
|
||||
'license', 'homepage', 'repository', 'devDependencies'];
|
||||
|
||||
var componentSpecific = {
|
||||
repository: REPOSITORY_NAME,
|
||||
scripts: [packageJson.main]
|
||||
};
|
||||
|
||||
var componentInclude = ['name', 'description', 'version', 'keywords',
|
||||
'license'];
|
||||
|
||||
var bowerJson = _.merge({}, _.pick(packageJson, bowerInclude), bowerSpecific);
|
||||
var componentJson = _.merge({}, _.pick(packageJson, componentInclude), componentSpecific);
|
||||
|
||||
fs.writeFileSync('./bower.json', JSON.stringify(bowerJson, null, 2));
|
||||
fs.writeFileSync('./component.json', JSON.stringify(componentJson, null, 2));
|
||||
fs.writeFileSync('./package.json', JSON.stringify(packageJson, null, 2));
|
18
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/.jshintrc
generated
vendored
Normal file
18
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/.jshintrc
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"indent": 4,
|
||||
"node": true,
|
||||
"globalstrict": true,
|
||||
"evil": true,
|
||||
"unused": true,
|
||||
"undef": true,
|
||||
"newcap": true,
|
||||
"esnext": true,
|
||||
"curly": true,
|
||||
"eqeqeq": true,
|
||||
"expr": true,
|
||||
|
||||
"predef": [
|
||||
"describe",
|
||||
"it"
|
||||
]
|
||||
}
|
16
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/.npmignore
generated
vendored
Normal file
16
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/.npmignore
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
lib-cov
|
||||
*.seed
|
||||
*.log
|
||||
*.csv
|
||||
*.dat
|
||||
*.out
|
||||
*.pid
|
||||
*.gz
|
||||
|
||||
pids
|
||||
logs
|
||||
results
|
||||
|
||||
npm-debug.log
|
||||
node_modules
|
||||
.DS_Store
|
21
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/.travis.yml
generated
vendored
Normal file
21
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.10"
|
||||
- 0.12
|
||||
- iojs
|
||||
|
||||
before_install:
|
||||
- npm install -g grunt-cli
|
||||
|
||||
notifications:
|
||||
email:
|
||||
recipients:
|
||||
- andris@kreata.ee
|
||||
on_success: change
|
||||
on_failure: change
|
||||
webhooks:
|
||||
urls:
|
||||
- https://webhooks.gitter.im/e/0ed18fd9b3e529b3c2cc
|
||||
on_success: change # options: [always|never|change] default: always
|
||||
on_failure: always # options: [always|never|change] default: always
|
||||
on_start: false # default: false
|
26
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/CHANGELOG.md
generated
vendored
Normal file
26
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
# Changelog
|
||||
|
||||
## v1.1.1 2015-06-04
|
||||
|
||||
* Fixed hash table location value in compiled mo files
|
||||
|
||||
## v1.1.0 2015-01-21
|
||||
|
||||
* Added `po.createParseStream` method for parsing PO files from a Stream source
|
||||
* Updated documentation
|
||||
|
||||
## v1.0.0 2015-01-21
|
||||
|
||||
* Bumped version to 1.0.0 to be compatible with semver
|
||||
* Changed tests from nodeunit to mocha
|
||||
* Unified code style in files and added jshint task to check it
|
||||
* Added Grunt support to check style and run tests on `npm test`
|
||||
|
||||
## v0.2.0 2013-12-30
|
||||
|
||||
* Bumped version to 0.2.0
|
||||
* Removed node-iconv dependency
|
||||
* Fixed a global variable leak (`line` was not defined in `pocompiler._addPOString`)
|
||||
* Some code maintenance (applied jshint rules, added "use strict" statements)
|
||||
* Updated e-mail address in .travis.yml
|
||||
* Added CHANGELOG file
|
30
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/Gruntfile.js
generated
vendored
Normal file
30
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/Gruntfile.js
generated
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function(grunt) {
|
||||
|
||||
// Project configuration.
|
||||
grunt.initConfig({
|
||||
jshint: {
|
||||
all: ['lib/*.js', 'test/*.js', 'index.js'],
|
||||
options: {
|
||||
jshintrc: '.jshintrc'
|
||||
}
|
||||
},
|
||||
|
||||
mochaTest: {
|
||||
all: {
|
||||
options: {
|
||||
reporter: 'spec'
|
||||
},
|
||||
src: ['test/*-test.js']
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Load the plugin(s)
|
||||
grunt.loadNpmTasks('grunt-contrib-jshint');
|
||||
grunt.loadNpmTasks('grunt-mocha-test');
|
||||
|
||||
// Tasks
|
||||
grunt.registerTask('default', ['jshint', 'mochaTest']);
|
||||
};
|
19
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/LICENSE
generated
vendored
Normal file
19
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/LICENSE
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
Copyright (c) 2014-2015 Andris Reinman
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
205
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/README.md
generated
vendored
Normal file
205
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/README.md
generated
vendored
Normal file
@ -0,0 +1,205 @@
|
||||
gettext-parser
|
||||
==============
|
||||
|
||||
[](http://travis-ci.org/andris9/gettext-parser)
|
||||
[](http://badge.fury.io/js/gettext-parser)
|
||||
|
||||
Parse and compile gettext *po* and *mo* files with node.js, nothing more, nothing less.
|
||||
|
||||
This module is slightly based on my other gettext related module [node-gettext](https://github.com/andris9/node-gettext). The plan is to move all parsing and compiling logic from node-gettext to here and leave only translation related functions (domains, plural handling, lookups etc.).
|
||||
|
||||
## Usage
|
||||
|
||||
Include the library:
|
||||
|
||||
var gettextParser = require("gettext-parser");
|
||||
|
||||
|
||||
### Parse PO files
|
||||
|
||||
Parse a PO file with
|
||||
|
||||
gettextParser.po.parse(input[, defaultCharset]) → Object
|
||||
|
||||
Where
|
||||
|
||||
* **input** is a *po* file as a Buffer or an unicode string. Charset is converted to unicode from other encodings only if the input is a Buffer, otherwise the charset information is discarded
|
||||
* **defaultCharset** is the charset to use if charset is not defined or is the default `"CHARSET"` (applies only if *input* is a Buffer)
|
||||
|
||||
Method returns gettext-parser specific translation object (see below)
|
||||
|
||||
**Example**
|
||||
|
||||
```javascript
|
||||
var input = require('fs').readFileSync('en.po');
|
||||
var po = gettextParser.po.parse(input);
|
||||
console.log(po.translations['']); // output translations for the default context
|
||||
```
|
||||
|
||||
### Parse PO as a Stream
|
||||
|
||||
PO files can also be parsed from a stream source. After all input is processed the parser emits a single 'data' event which contains the parsed translation object.
|
||||
|
||||
gettextParser.po.createParseStream([defaultCharset][, streamOptions]) → Transform Stream
|
||||
|
||||
Where
|
||||
|
||||
* **defaultCharset** is the charset to use if charset is not defined or is the default `"CHARSET"`
|
||||
* **streamOptions** are the standard stream options
|
||||
|
||||
**Example**
|
||||
|
||||
```javascript
|
||||
var input = require('fs').createReadStream('en.po');
|
||||
var po = gettextParser.po.createParseStream();
|
||||
input.pipe(po);
|
||||
po.on('data', function(data){
|
||||
console.log(data.translations['']); // output translations for the default context
|
||||
});
|
||||
```
|
||||
|
||||
### Compile PO from a translation object
|
||||
|
||||
If you have a translation object you can convert this to a valid PO file with
|
||||
|
||||
gettextParser.po.compile(data) → Buffer
|
||||
|
||||
Where
|
||||
|
||||
* **data** is a translation object either got from parsing a PO/MO file or composed by other means
|
||||
|
||||
**Example**
|
||||
|
||||
```javascript
|
||||
var data = {
|
||||
...
|
||||
};
|
||||
var output = gettextParser.po.compile(data);
|
||||
require('fs').writeFileSync(output);
|
||||
```
|
||||
|
||||
### Parse MO files
|
||||
|
||||
Parse a MO file with
|
||||
|
||||
gettextParser.mo.parse(input[, defaultCharset]) → Object
|
||||
|
||||
Where
|
||||
|
||||
* **input** is a *mo* file as a Buffer
|
||||
* **defaultCharset** is the charset to use if charset is not defined or is the default `"CHARSET"`
|
||||
|
||||
Method returns gettext-parser specific translation object (see below)
|
||||
|
||||
**Example**
|
||||
|
||||
```javascript
|
||||
var input = require('fs').readFileSync('en.mo');
|
||||
var mo = gettextParser.mo.parse(input);
|
||||
console.log(mo.translations['']); // output translations for the default context
|
||||
```
|
||||
|
||||
### Compile MO from a translation object
|
||||
|
||||
If you have a translation object you can convert this to a valid MO file with
|
||||
|
||||
gettextParser.mo.compile(data) → Buffer
|
||||
|
||||
Where
|
||||
|
||||
* **data** is a translation object either got from parsing a PO/MO file or composed by other means
|
||||
|
||||
**Example**
|
||||
|
||||
```javascript
|
||||
var data = {
|
||||
...
|
||||
};
|
||||
var output = gettextParser.mo.compile(data);
|
||||
require('fs').writeFileSync(output);
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
#### Overriding charset
|
||||
|
||||
If you are compiling a previously parsed translation object, you can override the output charset with the `charset` property (applies both for compiling *mo* and *po* files).
|
||||
|
||||
```javascript
|
||||
var obj = gettextParser.po.parse(inputBuf);
|
||||
obj.charset = "windows-1257";
|
||||
outputBuf = gettextParser.po.compile(obj);
|
||||
```
|
||||
|
||||
Headers for the output are modified to match the updated charset.
|
||||
|
||||
#### ICONV support
|
||||
|
||||
By default *gettext-parser* uses pure JS [iconv-lite](https://github.com/ashtuchkin/iconv-lite) for encoding and decoding non UTF-8 charsets. If you need to support more complex encodings that are not supported by *iconv-lite*, you need to add [iconv](https://github.com/bnoordhuis/node-iconv) as an additional dependency for your project (*gettext-parser* will detect if it is available and tries to use it instead of *iconv-lite*).
|
||||
|
||||
## Data structure of parsed mo/po files
|
||||
|
||||
### Character set
|
||||
|
||||
Parsed data is always in unicode but the original charset of the file can
|
||||
be found from the `charset` property. This value is also used when compiling translations
|
||||
to a *mo* or *po* file.
|
||||
|
||||
### Headers
|
||||
|
||||
Headers can be found from the `headers` object, all keys are lowercase and the value for a key is a string. This value will also be used when compiling.
|
||||
|
||||
### Translations
|
||||
|
||||
Translations can be found from the `translations` object which in turn holds context objects for `msgctx`. Default context can be found from `translations[""]`.
|
||||
|
||||
Context objects include all the translations, where `msgid` value is the key. The value is an object with the following possible properties:
|
||||
|
||||
* **msgctx** context for this translation, if not present the default context applies
|
||||
* **msgid** string to be translated
|
||||
* **msgid_plural** the plural form of the original string (might not be present)
|
||||
* **msgstr** an array of translations
|
||||
* **comments** an object with the following properties: `translator`, `reference`, `extracted`, `flag`, `previous`.
|
||||
|
||||
Example
|
||||
|
||||
```json
|
||||
{
|
||||
"charset": "iso-8859-1",
|
||||
|
||||
"headers": {
|
||||
"content-type": "text/plain; charset=iso-8859-1",
|
||||
"plural-forms": "nplurals=2; plural=(n!=1);"
|
||||
},
|
||||
|
||||
"translations": {
|
||||
"": {
|
||||
"": {
|
||||
"msgid": "",
|
||||
"msgstr": ["Content-Type: text/plain; charset=iso-8859-1\n..."]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"another context": {
|
||||
"%s example": {
|
||||
"msgctx": "another context",
|
||||
"msgid": "%s example",
|
||||
"msgid_plural": "%s examples",
|
||||
"msgstr": ["% näide", "%s näidet"],
|
||||
"comments": {
|
||||
"translator": "This is regular comment",
|
||||
"reference": "/path/to/file:123"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Notice that the structure has both a `headers` object and a `""` translation with the header string. When compiling the structure to a *mo* or a *po* file, the `headers` object is used to define the header. Header string in the `""` translation is just for reference (includes the original unmodified data) but will not be used when compiling. So if you need to add or alter header values, use only the `headers` object.
|
||||
|
||||
If you need to convert *gettext-parser* formatted translation object to something else, eg. for *jed*, check out [po2json](https://github.com/mikeedwards/po2json).
|
||||
|
||||
## License
|
||||
|
||||
**MIT**
|
16
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/index.js
generated
vendored
Normal file
16
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/index.js
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
'use strict';
|
||||
|
||||
var poParser = require('./lib/poparser');
|
||||
|
||||
module.exports = {
|
||||
po: {
|
||||
parse: poParser.parse,
|
||||
createParseStream: poParser.stream,
|
||||
compile: require('./lib/pocompiler')
|
||||
},
|
||||
|
||||
mo: {
|
||||
parse: require('./lib/moparser'),
|
||||
compile: require('./lib/mocompiler')
|
||||
}
|
||||
};
|
237
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/lib/mocompiler.js
generated
vendored
Normal file
237
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/lib/mocompiler.js
generated
vendored
Normal file
@ -0,0 +1,237 @@
|
||||
'use strict';
|
||||
|
||||
var encoding = require('encoding');
|
||||
var sharedFuncs = require('./shared');
|
||||
|
||||
/**
|
||||
* Exposes general compiler function. Takes a translation
|
||||
* object as a parameter and returns binary MO object
|
||||
*
|
||||
* @param {Object} table Translation object
|
||||
* @return {Buffer} Compiled binary MO object
|
||||
*/
|
||||
module.exports = function(table) {
|
||||
var compiler = new Compiler(table);
|
||||
return compiler.compile();
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates a MO compiler object.
|
||||
*
|
||||
* @constructor
|
||||
* @param {Object} table Translation table as defined in the README
|
||||
*/
|
||||
function Compiler(table) {
|
||||
this._table = table || {};
|
||||
this._table.headers = this._table.headers || {};
|
||||
this._table.translations = this._table.translations || {};
|
||||
|
||||
this._translations = [];
|
||||
|
||||
this._writeFunc = 'writeUInt32LE';
|
||||
|
||||
this._handleCharset();
|
||||
}
|
||||
|
||||
/**
|
||||
* Magic bytes for the generated binary data
|
||||
*/
|
||||
Compiler.prototype.MAGIC = 0x950412de;
|
||||
|
||||
/**
|
||||
* Handles header values, replaces or adds (if needed) a charset property
|
||||
*/
|
||||
Compiler.prototype._handleCharset = function() {
|
||||
var parts = (this._table.headers['content-type'] || 'text/plain').split(';'),
|
||||
contentType = parts.shift(),
|
||||
charset = sharedFuncs.formatCharset(this._table.charset),
|
||||
params = [];
|
||||
|
||||
params = parts.map(function(part) {
|
||||
var parts = part.split('='),
|
||||
key = parts.shift().trim(),
|
||||
value = parts.join('=');
|
||||
|
||||
if (key.toLowerCase() === 'charset') {
|
||||
if (!charset) {
|
||||
charset = sharedFuncs.formatCharset(value.trim() || 'utf-8');
|
||||
}
|
||||
return 'charset=' + charset;
|
||||
}
|
||||
|
||||
return part;
|
||||
});
|
||||
|
||||
if (!charset) {
|
||||
charset = this._table.charset || 'utf-8';
|
||||
params.push('charset=' + charset);
|
||||
}
|
||||
|
||||
this._table.charset = charset;
|
||||
this._table.headers['content-type'] = contentType + '; ' + params.join('; ');
|
||||
|
||||
this._charset = charset;
|
||||
};
|
||||
|
||||
/**
|
||||
* Generates an array of translation strings
|
||||
* in the form of [{msgid:... , msgstr:...}]
|
||||
*
|
||||
* @return {Array} Translation strings array
|
||||
*/
|
||||
Compiler.prototype._generateList = function() {
|
||||
var list = [];
|
||||
|
||||
list.push({
|
||||
msgid: new Buffer(0),
|
||||
msgstr: encoding.convert(sharedFuncs.generateHeader(this._table.headers), this._charset)
|
||||
});
|
||||
|
||||
Object.keys(this._table.translations).forEach((function(msgctxt) {
|
||||
if (typeof this._table.translations[msgctxt] !== 'object') {
|
||||
return;
|
||||
}
|
||||
Object.keys(this._table.translations[msgctxt]).forEach((function(msgid) {
|
||||
if (typeof this._table.translations[msgctxt][msgid] !== 'object') {
|
||||
return;
|
||||
}
|
||||
if (msgctxt === '' && msgid === '') {
|
||||
return;
|
||||
}
|
||||
|
||||
var msgid_plural = this._table.translations[msgctxt][msgid].msgid_plural,
|
||||
key = msgid,
|
||||
value;
|
||||
|
||||
if (msgctxt) {
|
||||
key = msgctxt + '\u0004' + key;
|
||||
}
|
||||
|
||||
if (msgid_plural) {
|
||||
key += '\u0000' + msgid_plural;
|
||||
}
|
||||
|
||||
value = [].concat(this._table.translations[msgctxt][msgid].msgstr || []).join('\u0000');
|
||||
|
||||
list.push({
|
||||
msgid: encoding.convert(key, this._charset),
|
||||
msgstr: encoding.convert(value, this._charset)
|
||||
});
|
||||
}).bind(this));
|
||||
}).bind(this));
|
||||
|
||||
return list;
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculate buffer size for the final binary object
|
||||
*
|
||||
* @param {Array} list An array of translation strings from _generateList
|
||||
* @return {Object} Size data of {msgid, msgstr, total}
|
||||
*/
|
||||
Compiler.prototype._calculateSize = function(list) {
|
||||
var msgidLength = 0,
|
||||
msgstrLength = 0,
|
||||
totalLength = 0;
|
||||
|
||||
list.forEach(function(translation) {
|
||||
msgidLength += translation.msgid.length + 1; // + extra 0x00
|
||||
msgstrLength += translation.msgstr.length + 1; // + extra 0x00
|
||||
});
|
||||
|
||||
totalLength = 4 + // magic number
|
||||
4 + // revision
|
||||
4 + // string count
|
||||
4 + // original string table offset
|
||||
4 + // translation string table offset
|
||||
4 + // hash table size
|
||||
4 + // hash table offset
|
||||
(4 + 4) * list.length + // original string table
|
||||
(4 + 4) * list.length + // translations string table
|
||||
msgidLength + // originals
|
||||
msgstrLength; // translations
|
||||
|
||||
return {
|
||||
msgid: msgidLength,
|
||||
msgstr: msgstrLength,
|
||||
total: totalLength
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Generates the binary MO object from the translation list
|
||||
*
|
||||
* @param {Array} list translation list
|
||||
* @param {Object} size Byte size information
|
||||
* @return {Buffer} Compiled MO object
|
||||
*/
|
||||
Compiler.prototype._build = function(list, size) {
|
||||
var returnBuffer = new Buffer(size.total),
|
||||
curPosition = 0,
|
||||
i, len;
|
||||
|
||||
// magic
|
||||
returnBuffer[this._writeFunc](this.MAGIC, 0);
|
||||
|
||||
// revision
|
||||
returnBuffer[this._writeFunc](0, 4);
|
||||
|
||||
// string count
|
||||
returnBuffer[this._writeFunc](list.length, 8);
|
||||
|
||||
// original string table offset
|
||||
returnBuffer[this._writeFunc](28, 12);
|
||||
|
||||
// translation string table offset
|
||||
returnBuffer[this._writeFunc](28 + (4 + 4) * list.length, 16);
|
||||
|
||||
// hash table size
|
||||
returnBuffer[this._writeFunc](0, 20);
|
||||
|
||||
// hash table offset
|
||||
returnBuffer[this._writeFunc](28 + (4 + 4) * list.length * 2, 24);
|
||||
|
||||
// build originals table
|
||||
curPosition = 28 + 2 * (4 + 4) * list.length;
|
||||
for (i = 0, len = list.length; i < len; i++) {
|
||||
list[i].msgid.copy(returnBuffer, curPosition);
|
||||
returnBuffer[this._writeFunc](list[i].msgid.length, 28 + i * 8);
|
||||
returnBuffer[this._writeFunc](curPosition, 28 + i * 8 + 4);
|
||||
returnBuffer[curPosition + list[i].msgid.length] = 0x00;
|
||||
curPosition += list[i].msgid.length + 1;
|
||||
}
|
||||
|
||||
// build translations table
|
||||
for (i = 0, len = list.length; i < len; i++) {
|
||||
list[i].msgstr.copy(returnBuffer, curPosition);
|
||||
returnBuffer[this._writeFunc](list[i].msgstr.length, 28 + (4 + 4) * list.length + i * 8);
|
||||
returnBuffer[this._writeFunc](curPosition, 28 + (4 + 4) * list.length + i * 8 + 4);
|
||||
returnBuffer[curPosition + list[i].msgstr.length] = 0x00;
|
||||
curPosition += list[i].msgstr.length + 1;
|
||||
}
|
||||
|
||||
return returnBuffer;
|
||||
};
|
||||
|
||||
/**
|
||||
* Compiles translation object into a binary MO object
|
||||
*
|
||||
* @return {Buffer} Compiled MO object
|
||||
*/
|
||||
Compiler.prototype.compile = function() {
|
||||
var list = this._generateList(),
|
||||
size = this._calculateSize(list);
|
||||
|
||||
// sort by msgid
|
||||
list.sort(function(a, b) {
|
||||
if (a.msgid > b.msgid) {
|
||||
return 1;
|
||||
}
|
||||
if (a.msgid < b.msgid) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
|
||||
return this._build(list, size);
|
||||
};
|
202
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/lib/moparser.js
generated
vendored
Normal file
202
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/lib/moparser.js
generated
vendored
Normal file
@ -0,0 +1,202 @@
|
||||
'use strict';
|
||||
|
||||
var encoding = require('encoding');
|
||||
var sharedFuncs = require('./shared');
|
||||
|
||||
/**
|
||||
* Parses a binary MO object into translation table
|
||||
*
|
||||
* @param {Buffer} buffer Binary MO object
|
||||
* @param {String} [defaultCharset] Default charset to use
|
||||
* @return {Object} Translation object
|
||||
*/
|
||||
module.exports = function(buffer, defaultCharset) {
|
||||
var parser = new Parser(buffer, defaultCharset);
|
||||
return parser.parse();
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates a MO parser object.
|
||||
*
|
||||
* @constructor
|
||||
* @param {Buffer} fileContents Binary MO object
|
||||
* @param {String} [defaultCharset] Default charset to use
|
||||
*/
|
||||
function Parser(fileContents, defaultCharset) {
|
||||
|
||||
this._fileContents = fileContents;
|
||||
|
||||
/**
|
||||
* Method name for writing int32 values, default littleendian
|
||||
*/
|
||||
this._writeFunc = 'writeUInt32LE';
|
||||
|
||||
/**
|
||||
* Method name for reading int32 values, default littleendian
|
||||
*/
|
||||
this._readFunc = 'readUInt32LE';
|
||||
|
||||
this._charset = defaultCharset || 'iso-8859-1';
|
||||
|
||||
this._table = {
|
||||
charset: this._charset,
|
||||
headers: undefined,
|
||||
translations: {}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Magic constant to check the endianness of the input file
|
||||
*/
|
||||
Parser.prototype.MAGIC = 0x950412de;
|
||||
|
||||
/**
|
||||
* Checks if number values in the input file are in big- or littleendian format.
|
||||
*
|
||||
* @return {Boolean} Return true if magic was detected
|
||||
*/
|
||||
Parser.prototype._checkMagick = function() {
|
||||
if (this._fileContents.readUInt32LE(0) === this.MAGIC) {
|
||||
this._readFunc = 'readUInt32LE';
|
||||
this._writeFunc = 'writeUInt32LE';
|
||||
return true;
|
||||
} else if (this._fileContents.readUInt32BE(0) === this.MAGIC) {
|
||||
this._readFunc = 'readUInt32BE';
|
||||
this._writeFunc = 'writeUInt32BE';
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Read the original strings and translations from the input MO file. Use the
|
||||
* first translation string in the file as the header.
|
||||
*/
|
||||
Parser.prototype._loadTranslationTable = function() {
|
||||
var offsetOriginals = this._offsetOriginals,
|
||||
offsetTranslations = this._offsetTranslations,
|
||||
position, length,
|
||||
msgid, msgstr;
|
||||
|
||||
for (var i = 0; i < this._total; i++) {
|
||||
// msgid string
|
||||
length = this._fileContents[this._readFunc](offsetOriginals);
|
||||
offsetOriginals += 4;
|
||||
position = this._fileContents[this._readFunc](offsetOriginals);
|
||||
offsetOriginals += 4;
|
||||
msgid = this._fileContents.slice(position, position + length);
|
||||
|
||||
// matching msgstr
|
||||
length = this._fileContents[this._readFunc](offsetTranslations);
|
||||
offsetTranslations += 4;
|
||||
position = this._fileContents[this._readFunc](offsetTranslations);
|
||||
offsetTranslations += 4;
|
||||
msgstr = this._fileContents.slice(position, position + length);
|
||||
|
||||
if (!i && !msgid.toString()) {
|
||||
this._handleCharset(msgstr);
|
||||
}
|
||||
|
||||
msgid = encoding.convert(msgid, 'utf-8', this._charset).toString('utf-8');
|
||||
msgstr = encoding.convert(msgstr, 'utf-8', this._charset).toString('utf-8');
|
||||
|
||||
this._addString(msgid, msgstr);
|
||||
}
|
||||
|
||||
// dump the file contents object
|
||||
this._fileContents = null;
|
||||
};
|
||||
|
||||
/**
|
||||
* Detects charset for MO strings from the header
|
||||
*
|
||||
* @param {Buffer} headers Header value
|
||||
*/
|
||||
Parser.prototype._handleCharset = function(headers) {
|
||||
|
||||
var headersStr = headers.toString(),
|
||||
match;
|
||||
|
||||
if ((match = headersStr.match(/[; ]charset\s*=\s*([\w\-]+)/i))) {
|
||||
this._charset = this._table.charset = sharedFuncs.formatCharset(match[1], this._charset);
|
||||
}
|
||||
|
||||
headers = encoding.convert(headers, 'utf-8', this._charset).toString('utf-8');
|
||||
|
||||
this._table.headers = sharedFuncs.parseHeader(headers);
|
||||
};
|
||||
|
||||
/**
|
||||
* Adds a translation to the translation object
|
||||
*
|
||||
* @param {String} msgid Original string
|
||||
* @params {String} msgstr Translation for the original string
|
||||
*/
|
||||
Parser.prototype._addString = function(msgid, msgstr) {
|
||||
var translation = {},
|
||||
parts, msgctxt, msgid_plural;
|
||||
|
||||
msgid = msgid.split('\u0004');
|
||||
if (msgid.length > 1) {
|
||||
msgctxt = msgid.shift();
|
||||
translation.msgctxt = msgctxt;
|
||||
} else {
|
||||
msgctxt = '';
|
||||
}
|
||||
msgid = msgid.join('\u0004');
|
||||
|
||||
parts = msgid.split('\u0000');
|
||||
msgid = parts.shift();
|
||||
|
||||
translation.msgid = msgid;
|
||||
|
||||
if ((msgid_plural = parts.join('\u0000'))) {
|
||||
translation.msgid_plural = msgid_plural;
|
||||
}
|
||||
|
||||
msgstr = msgstr.split('\u0000');
|
||||
translation.msgstr = [].concat(msgstr || []);
|
||||
|
||||
if (!this._table.translations[msgctxt]) {
|
||||
this._table.translations[msgctxt] = {};
|
||||
}
|
||||
|
||||
this._table.translations[msgctxt][msgid] = translation;
|
||||
};
|
||||
|
||||
/**
|
||||
* Parses the MO object and returns translation table
|
||||
*
|
||||
* @return {Object} Translation table
|
||||
*/
|
||||
Parser.prototype.parse = function() {
|
||||
if (!this._checkMagick()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* GetText revision nr, usually 0
|
||||
*/
|
||||
this._revision = this._fileContents[this._readFunc](4);
|
||||
|
||||
/**
|
||||
* Total count of translated strings
|
||||
*/
|
||||
this._total = this._fileContents[this._readFunc](8);
|
||||
|
||||
/**
|
||||
* Offset position for original strings table
|
||||
*/
|
||||
this._offsetOriginals = this._fileContents[this._readFunc](12);
|
||||
|
||||
/**
|
||||
* Offset position for translation strings table
|
||||
*/
|
||||
this._offsetTranslations = this._fileContents[this._readFunc](16);
|
||||
|
||||
// Load translations into this._translationTable
|
||||
this._loadTranslationTable();
|
||||
|
||||
return this._table;
|
||||
};
|
225
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/lib/pocompiler.js
generated
vendored
Normal file
225
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/lib/pocompiler.js
generated
vendored
Normal file
@ -0,0 +1,225 @@
|
||||
'use strict';
|
||||
|
||||
var encoding = require('encoding');
|
||||
var sharedFuncs = require('./shared');
|
||||
|
||||
/**
|
||||
* Exposes general compiler function. Takes a translation
|
||||
* object as a parameter and returns PO object
|
||||
*
|
||||
* @param {Object} table Translation object
|
||||
* @return {Buffer} Compiled PO object
|
||||
*/
|
||||
module.exports = function(table) {
|
||||
var compiler = new Compiler(table);
|
||||
return compiler.compile();
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates a PO compiler object.
|
||||
*
|
||||
* @constructor
|
||||
* @param {Object} table Translation table to be compiled
|
||||
*/
|
||||
function Compiler(table) {
|
||||
this._table = table || {};
|
||||
this._table.headers = this._table.headers || {};
|
||||
this._table.translations = this._table.translations || {};
|
||||
this._translations = [];
|
||||
this._handleCharset();
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a comments object to a comment string. The comment object is
|
||||
* in the form of {translator:'', reference: '', extracted: '', flag: '', previous:''}
|
||||
*
|
||||
* @param {Object} comments A comments object
|
||||
* @return {String} A comment string for the PO file
|
||||
*/
|
||||
Compiler.prototype._drawComments = function(comments) {
|
||||
var lines = [];
|
||||
var types = [{
|
||||
key: 'translator',
|
||||
prefix: '# '
|
||||
}, {
|
||||
key: 'reference',
|
||||
prefix: '#: '
|
||||
}, {
|
||||
key: 'extracted',
|
||||
prefix: '#. '
|
||||
}, {
|
||||
key: 'flag',
|
||||
prefix: '#, '
|
||||
}, {
|
||||
key: 'previous',
|
||||
prefix: '#| '
|
||||
}];
|
||||
|
||||
types.forEach(function(type) {
|
||||
if (!comments[type.key]) {
|
||||
return;
|
||||
}
|
||||
comments[type.key].split(/\r?\n|\r/).forEach(function(line) {
|
||||
lines.push(type.prefix + line);
|
||||
});
|
||||
});
|
||||
|
||||
return lines.join('\n');
|
||||
};
|
||||
|
||||
/**
|
||||
* Builds a PO string for a single translation object
|
||||
*
|
||||
* @param {Object} block Translation object
|
||||
* @param {Object} [override] Properties of this object will override `block` properties
|
||||
* @return {String} Translation string for a single object
|
||||
*/
|
||||
Compiler.prototype._drawBlock = function(block, override) {
|
||||
|
||||
override = override || {};
|
||||
|
||||
var response = [],
|
||||
comments = override.comments || block.comments,
|
||||
msgctxt = override.msgctxt || block.msgctxt,
|
||||
msgid = override.msgid || block.msgid,
|
||||
msgid_plural = override.msgid_plural || block.msgid_plural,
|
||||
msgstr = [].concat(override.msgstr || block.msgstr);
|
||||
|
||||
|
||||
// add comments
|
||||
if (comments && (comments = this._drawComments(comments))) {
|
||||
response.push(comments);
|
||||
}
|
||||
|
||||
if (msgctxt) {
|
||||
response.push(this._addPOString('msgctxt', msgctxt));
|
||||
}
|
||||
|
||||
response.push(this._addPOString('msgid', msgid || ''));
|
||||
|
||||
if (msgid_plural) {
|
||||
response.push(this._addPOString('msgid_plural', msgid_plural));
|
||||
}
|
||||
|
||||
if (msgstr.length <= 1) {
|
||||
response.push(this._addPOString('msgstr', msgstr[0] || ''));
|
||||
} else {
|
||||
msgstr.forEach((function(msgstr, i) {
|
||||
response.push(this._addPOString('msgstr[' + i + ']', msgstr || ''));
|
||||
}).bind(this));
|
||||
}
|
||||
|
||||
return response.join('\n');
|
||||
};
|
||||
|
||||
/**
|
||||
* Escapes and joins a key and a value for the PO string
|
||||
*
|
||||
* @param {String} key Key name
|
||||
* @param {String} value Key value
|
||||
* @return {String} Joined and escaped key-value pair
|
||||
*/
|
||||
Compiler.prototype._addPOString = function(key, value) {
|
||||
var line;
|
||||
|
||||
key = (key || '').toString();
|
||||
|
||||
// escape newlines and quotes
|
||||
value = (value || '').toString().
|
||||
replace(/\\/g, '\\\\').
|
||||
replace(/"/g, '\\"').
|
||||
replace(/\t/g, '\\t').
|
||||
replace(/\r/g, '\\r').
|
||||
replace(/\n/g, '\\n');
|
||||
|
||||
var lines = sharedFuncs.foldLine(value);
|
||||
|
||||
if (lines.length < 2) {
|
||||
return key + ' "' + (lines.shift() || '') + '"';
|
||||
} else {
|
||||
return key + ' ""\n"' + lines.join('"\n"') + '"';
|
||||
}
|
||||
|
||||
if (value.match(/\n/)) {
|
||||
value = value.replace(/\n/g, '\\n\n').replace(/\n$/, '');
|
||||
line = ('\n' + value).split('\n').map(function(l) {
|
||||
return '"' + l + '"';
|
||||
}).join('\n');
|
||||
} else {
|
||||
line = '"' + value + '"';
|
||||
}
|
||||
|
||||
return key + ' ' + line;
|
||||
};
|
||||
|
||||
/**
|
||||
* Handles header values, replaces or adds (if needed) a charset property
|
||||
*/
|
||||
Compiler.prototype._handleCharset = function() {
|
||||
var parts = (this._table.headers['content-type'] || 'text/plain').split(';');
|
||||
var contentType = parts.shift();
|
||||
var charset = sharedFuncs.formatCharset(this._table.charset);
|
||||
var params = [];
|
||||
|
||||
params = parts.map(function(part) {
|
||||
var parts = part.split('='),
|
||||
key = parts.shift().trim(),
|
||||
value = parts.join('=');
|
||||
|
||||
if (key.toLowerCase() === 'charset') {
|
||||
if (!charset) {
|
||||
charset = sharedFuncs.formatCharset(value.trim() || 'utf-8');
|
||||
}
|
||||
return 'charset=' + charset;
|
||||
}
|
||||
|
||||
return part;
|
||||
});
|
||||
|
||||
if (!charset) {
|
||||
charset = this._table.charset || 'utf-8';
|
||||
params.push('charset=' + charset);
|
||||
}
|
||||
|
||||
this._table.charset = charset;
|
||||
this._table.headers['content-type'] = contentType + '; ' + params.join('; ');
|
||||
|
||||
this._charset = charset;
|
||||
};
|
||||
|
||||
/**
|
||||
* Compiles translation object into a PO object
|
||||
*
|
||||
* @return {Buffer} Compiled PO object
|
||||
*/
|
||||
Compiler.prototype.compile = function() {
|
||||
|
||||
var response = [],
|
||||
headerBlock = this._table.translations[''] && this._table.translations[''][''] || {};
|
||||
|
||||
response.push(this._drawBlock(headerBlock, {
|
||||
msgstr: sharedFuncs.generateHeader(this._table.headers)
|
||||
}));
|
||||
|
||||
Object.keys(this._table.translations).forEach((function(msgctxt) {
|
||||
if (typeof this._table.translations[msgctxt] !== 'object') {
|
||||
return;
|
||||
}
|
||||
Object.keys(this._table.translations[msgctxt]).forEach((function(msgid) {
|
||||
if (typeof this._table.translations[msgctxt][msgid] !== 'object') {
|
||||
return;
|
||||
}
|
||||
if (msgctxt === '' && msgid === '') {
|
||||
return;
|
||||
}
|
||||
|
||||
response.push(this._drawBlock(this._table.translations[msgctxt][msgid]));
|
||||
}).bind(this));
|
||||
}).bind(this));
|
||||
|
||||
if (this._charset === 'utf-8' || this._charset === 'ascii') {
|
||||
return new Buffer(response.join('\n\n'), 'utf-8');
|
||||
} else {
|
||||
return encoding.convert(response.join('\n\n'), this._charset);
|
||||
}
|
||||
};
|
525
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/lib/poparser.js
generated
vendored
Normal file
525
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/lib/poparser.js
generated
vendored
Normal file
@ -0,0 +1,525 @@
|
||||
'use strict';
|
||||
|
||||
var encoding = require('encoding');
|
||||
var sharedFuncs = require('./shared');
|
||||
var Transform = require('stream').Transform;
|
||||
var util = require('util');
|
||||
|
||||
/**
|
||||
* Parses a PO object into translation table
|
||||
*
|
||||
* @param {Buffer|String} buffer PO object
|
||||
* @param {String} [defaultCharset] Default charset to use
|
||||
* @return {Object} Translation object
|
||||
*/
|
||||
module.exports.parse = function(buffer, defaultCharset) {
|
||||
var parser = new Parser(buffer, defaultCharset);
|
||||
return parser.parse();
|
||||
};
|
||||
|
||||
/**
|
||||
* Parses a PO stream, emits translation table in object mode
|
||||
*
|
||||
* @param {String} [defaultCharset] Default charset to use
|
||||
* @param {String} [options] Stream options
|
||||
* @return {Stream} Transform stream
|
||||
*/
|
||||
module.exports.stream = function(defaultCharset, options) {
|
||||
return new PoParserTransform(defaultCharset, options);
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates a PO parser object. If PO object is a string,
|
||||
* UTF-8 will be used as the charset
|
||||
*
|
||||
* @constructor
|
||||
* @param {Buffer|String} fileContents PO object
|
||||
* @param {String} [defaultCharset] Default charset to use
|
||||
*/
|
||||
function Parser(fileContents, defaultCharset) {
|
||||
|
||||
this._charset = defaultCharset || 'iso-8859-1';
|
||||
|
||||
this._lex = [];
|
||||
this._escaped = false;
|
||||
this._node;
|
||||
this._state = this.states.none;
|
||||
|
||||
if (typeof fileContents === 'string') {
|
||||
this._charset = 'utf-8';
|
||||
this._fileContents = fileContents;
|
||||
} else {
|
||||
this._handleCharset(fileContents);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the PO object and returns translation table
|
||||
*
|
||||
* @return {Object} Translation table
|
||||
*/
|
||||
Parser.prototype.parse = function() {
|
||||
this._lexer(this._fileContents);
|
||||
return this._finalize(this._lex);
|
||||
};
|
||||
|
||||
/**
|
||||
* Detects charset for PO strings from the header
|
||||
*
|
||||
* @param {Buffer} headers Header value
|
||||
*/
|
||||
Parser.prototype._handleCharset = function(buf) {
|
||||
var str = (buf || '').toString(),
|
||||
pos, headers = '',
|
||||
match;
|
||||
|
||||
if ((pos = str.search(/^\s*msgid/im)) >= 0) {
|
||||
if ((pos = pos + str.substr(pos + 5).search(/^\s*(msgid|msgctxt)/im))) {
|
||||
headers = str.substr(0, pos);
|
||||
}
|
||||
}
|
||||
|
||||
if ((match = headers.match(/[; ]charset\s*=\s*([\w\-]+)(?:[\s;]|\\n)*"\s*$/mi))) {
|
||||
this._charset = sharedFuncs.formatCharset(match[1], this._charset);
|
||||
}
|
||||
|
||||
if (this._charset === 'utf-8') {
|
||||
this._fileContents = str;
|
||||
} else {
|
||||
this._fileContents = this._toString(buf);
|
||||
}
|
||||
};
|
||||
|
||||
Parser.prototype._toString = function(buf) {
|
||||
return encoding.convert(buf, 'utf-8', this._charset).toString('utf-8');
|
||||
};
|
||||
|
||||
/**
|
||||
* State constants for parsing FSM
|
||||
*/
|
||||
Parser.prototype.states = {
|
||||
none: 0x01,
|
||||
comments: 0x02,
|
||||
key: 0x03,
|
||||
string: 0x04
|
||||
};
|
||||
|
||||
/**
|
||||
* Value types for lexer
|
||||
*/
|
||||
Parser.prototype.types = {
|
||||
comments: 0x01,
|
||||
key: 0x02,
|
||||
string: 0x03
|
||||
};
|
||||
|
||||
/**
|
||||
* String matches for lexer
|
||||
*/
|
||||
Parser.prototype.symbols = {
|
||||
quotes: /["']/,
|
||||
comments: /\#/,
|
||||
whitespace: /\s/,
|
||||
key: /[\w\-\[\]]/
|
||||
};
|
||||
|
||||
/**
|
||||
* Token parser. Parsed state can be found from this._lex
|
||||
*
|
||||
* @param {String} chunk String
|
||||
*/
|
||||
Parser.prototype._lexer = function(chunk) {
|
||||
var chr;
|
||||
|
||||
for (var i = 0, len = chunk.length; i < len; i++) {
|
||||
chr = chunk.charAt(i);
|
||||
switch (this._state) {
|
||||
case this.states.none:
|
||||
if (chr.match(this.symbols.quotes)) {
|
||||
this._node = {
|
||||
type: this.types.string,
|
||||
value: '',
|
||||
quote: chr
|
||||
};
|
||||
this._lex.push(this._node);
|
||||
this._state = this.states.string;
|
||||
} else if (chr.match(this.symbols.comments)) {
|
||||
this._node = {
|
||||
type: this.types.comments,
|
||||
value: ''
|
||||
};
|
||||
this._lex.push(this._node);
|
||||
this._state = this.states.comments;
|
||||
} else if (!chr.match(this.symbols.whitespace)) {
|
||||
this._node = {
|
||||
type: this.types.key,
|
||||
value: chr
|
||||
};
|
||||
this._lex.push(this._node);
|
||||
this._state = this.states.key;
|
||||
}
|
||||
break;
|
||||
case this.states.comments:
|
||||
if (chr === '\n') {
|
||||
this._state = this.states.none;
|
||||
} else if (chr !== '\r') {
|
||||
this._node.value += chr;
|
||||
}
|
||||
break;
|
||||
case this.states.string:
|
||||
if (this._escaped) {
|
||||
switch (chr) {
|
||||
case 't':
|
||||
this._node.value += '\t';
|
||||
break;
|
||||
case 'n':
|
||||
this._node.value += '\n';
|
||||
break;
|
||||
case 'r':
|
||||
this._node.value += '\r';
|
||||
break;
|
||||
default:
|
||||
this._node.value += chr;
|
||||
}
|
||||
this._escaped = false;
|
||||
} else {
|
||||
if (chr === this._node.quote) {
|
||||
this._state = this.states.none;
|
||||
} else if (chr === '\\') {
|
||||
this._escaped = true;
|
||||
break;
|
||||
} else {
|
||||
this._node.value += chr;
|
||||
}
|
||||
this._escaped = false;
|
||||
}
|
||||
break;
|
||||
case this.states.key:
|
||||
if (!chr.match(this.symbols.key)) {
|
||||
this._state = this.states.none;
|
||||
i--;
|
||||
} else {
|
||||
this._node.value += chr;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Join multi line strings
|
||||
*
|
||||
* @param {Object} tokens Parsed tokens
|
||||
* @return {Object} Parsed tokens, with multi line strings joined into one
|
||||
*/
|
||||
Parser.prototype._joinStringValues = function(tokens) {
|
||||
var lastNode, response = [];
|
||||
|
||||
for (var i = 0, len = tokens.length; i < len; i++) {
|
||||
if (lastNode && tokens[i].type === this.types.string && lastNode.type === this.types.string) {
|
||||
lastNode.value += tokens[i].value;
|
||||
} else if (lastNode && tokens[i].type === this.types.comments && lastNode.type === this.types.comments) {
|
||||
lastNode.value += '\n' + tokens[i].value;
|
||||
} else {
|
||||
response.push(tokens[i]);
|
||||
lastNode = tokens[i];
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
};
|
||||
|
||||
/**
|
||||
* Parse comments into separate comment blocks
|
||||
*
|
||||
* @param {Object} tokens Parsed tokens
|
||||
*/
|
||||
Parser.prototype._parseComments = function(tokens) {
|
||||
// parse comments
|
||||
tokens.forEach((function(node) {
|
||||
var comment, lines;
|
||||
|
||||
if (node && node.type === this.types.comments) {
|
||||
comment = {
|
||||
translator: [],
|
||||
extracted: [],
|
||||
reference: [],
|
||||
flag: [],
|
||||
previous: []
|
||||
};
|
||||
lines = (node.value || '').split(/\n/);
|
||||
lines.forEach(function(line) {
|
||||
switch (line.charAt(0) || '') {
|
||||
case ':':
|
||||
comment.reference.push(line.substr(1).trim());
|
||||
break;
|
||||
case '.':
|
||||
comment.extracted.push(line.substr(1).replace(/^\s+/, ''));
|
||||
break;
|
||||
case ',':
|
||||
comment.flag.push(line.substr(1).replace(/^\s+/, ''));
|
||||
break;
|
||||
case '|':
|
||||
comment.previous.push(line.substr(1).replace(/^\s+/, ''));
|
||||
break;
|
||||
default:
|
||||
comment.translator.push(line.replace(/^\s+/, ''));
|
||||
}
|
||||
});
|
||||
|
||||
node.value = {};
|
||||
|
||||
Object.keys(comment).forEach(function(key) {
|
||||
if (comment[key] && comment[key].length) {
|
||||
node.value[key] = comment[key].join('\n');
|
||||
}
|
||||
});
|
||||
}
|
||||
}).bind(this));
|
||||
};
|
||||
|
||||
/**
|
||||
* Join gettext keys with values
|
||||
*
|
||||
* @param {Object} tokens Parsed tokens
|
||||
* @return {Object} Tokens
|
||||
*/
|
||||
Parser.prototype._handleKeys = function(tokens) {
|
||||
var response = [],
|
||||
lastNode;
|
||||
|
||||
for (var i = 0, len = tokens.length; i < len; i++) {
|
||||
if (tokens[i].type === this.types.key) {
|
||||
lastNode = {
|
||||
key: tokens[i].value
|
||||
};
|
||||
if (i && tokens[i - 1].type === this.types.comments) {
|
||||
lastNode.comments = tokens[i - 1].value;
|
||||
}
|
||||
lastNode.value = '';
|
||||
response.push(lastNode);
|
||||
} else if (tokens[i].type === this.types.string && lastNode) {
|
||||
lastNode.value += tokens[i].value;
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
};
|
||||
|
||||
/**
|
||||
* Separate different values into individual translation objects
|
||||
*
|
||||
* @param {Object} tokens Parsed tokens
|
||||
* @return {Object} Tokens
|
||||
*/
|
||||
Parser.prototype._handleValues = function(tokens) {
|
||||
var response = [],
|
||||
lastNode, curContext, curComments;
|
||||
|
||||
for (var i = 0, len = tokens.length; i < len; i++) {
|
||||
if (tokens[i].key.toLowerCase() === 'msgctxt') {
|
||||
curContext = tokens[i].value;
|
||||
curComments = tokens[i].comments;
|
||||
} else if (tokens[i].key.toLowerCase() === 'msgid') {
|
||||
lastNode = {
|
||||
msgid: tokens[i].value
|
||||
};
|
||||
|
||||
if (curContext) {
|
||||
lastNode.msgctxt = curContext;
|
||||
}
|
||||
|
||||
if (curComments) {
|
||||
lastNode.comments = curComments;
|
||||
}
|
||||
|
||||
if (tokens[i].comments && !lastNode.comments) {
|
||||
lastNode.comments = tokens[i].comments;
|
||||
}
|
||||
|
||||
curContext = false;
|
||||
curComments = false;
|
||||
response.push(lastNode);
|
||||
} else if (tokens[i].key.toLowerCase() === 'msgid_plural') {
|
||||
if (lastNode) {
|
||||
lastNode.msgid_plural = tokens[i].value;
|
||||
}
|
||||
|
||||
if (tokens[i].comments && !lastNode.comments) {
|
||||
lastNode.comments = tokens[i].comments;
|
||||
}
|
||||
|
||||
curContext = false;
|
||||
curComments = false;
|
||||
} else if (tokens[i].key.substr(0, 6).toLowerCase() === 'msgstr') {
|
||||
if (lastNode) {
|
||||
lastNode.msgstr = (lastNode.msgstr || []).concat(tokens[i].value);
|
||||
}
|
||||
|
||||
if (tokens[i].comments && !lastNode.comments) {
|
||||
lastNode.comments = tokens[i].comments;
|
||||
}
|
||||
|
||||
curContext = false;
|
||||
curComments = false;
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
};
|
||||
|
||||
/**
|
||||
* Compose a translation table from tokens object
|
||||
*
|
||||
* @param {Object} tokens Parsed tokens
|
||||
* @return {Object} Translation table
|
||||
*/
|
||||
Parser.prototype._normalize = function(tokens) {
|
||||
var msgctxt,
|
||||
table = {
|
||||
charset: this._charset,
|
||||
headers: undefined,
|
||||
translations: {}
|
||||
};
|
||||
|
||||
for (var i = 0, len = tokens.length; i < len; i++) {
|
||||
msgctxt = tokens[i].msgctxt || '';
|
||||
|
||||
if (!table.translations[msgctxt]) {
|
||||
table.translations[msgctxt] = {};
|
||||
}
|
||||
|
||||
if (!table.headers && !msgctxt && !tokens[i].msgid) {
|
||||
table.headers = sharedFuncs.parseHeader(tokens[i].msgstr[0]);
|
||||
}
|
||||
|
||||
table.translations[msgctxt][tokens[i].msgid] = tokens[i];
|
||||
}
|
||||
|
||||
return table;
|
||||
};
|
||||
|
||||
/**
|
||||
* Converts parsed tokens to a translation table
|
||||
*
|
||||
* @param {Object} tokens Parsed tokens
|
||||
* @returns {Object} Translation table
|
||||
*/
|
||||
Parser.prototype._finalize = function(tokens) {
|
||||
var data = this._joinStringValues(tokens);
|
||||
this._parseComments(data);
|
||||
data = this._handleKeys(data);
|
||||
data = this._handleValues(data);
|
||||
|
||||
return this._normalize(data);
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates a transform stream for parsing PO input
|
||||
*
|
||||
* @constructor
|
||||
* @param {String} [defaultCharset] Default charset to use
|
||||
* @param {String} [options] Stream options
|
||||
*/
|
||||
function PoParserTransform(defaultCharset, options) {
|
||||
if (!options && defaultCharset && typeof defaultCharset === 'object') {
|
||||
options = defaultCharset;
|
||||
defaultCharset = undefined;
|
||||
}
|
||||
|
||||
this.defaultCharset = defaultCharset;
|
||||
this._parser = false;
|
||||
this._tokens = {};
|
||||
|
||||
this._cache = [];
|
||||
this._cacheSize = 0;
|
||||
|
||||
this.initialTreshold = options.initialTreshold || 2 * 1024;
|
||||
|
||||
Transform.call(this, options);
|
||||
this._writableState.objectMode = false;
|
||||
this._readableState.objectMode = true;
|
||||
}
|
||||
util.inherits(PoParserTransform, Transform);
|
||||
|
||||
/**
|
||||
* Processes a chunk of the input stream
|
||||
*/
|
||||
PoParserTransform.prototype._transform = function(chunk, encoding, done) {
|
||||
var i, len = 0;
|
||||
|
||||
if (!chunk || !chunk.length) {
|
||||
return done();
|
||||
}
|
||||
|
||||
if (!this._parser) {
|
||||
this._cache.push(chunk);
|
||||
this._cacheSize += chunk.length;
|
||||
|
||||
// wait until the first 1kb before parsing headers for charset
|
||||
if (this._cacheSize < this.initialTreshold) {
|
||||
return setImmediate(done);
|
||||
} else if (this._cacheSize) {
|
||||
chunk = Buffer.concat(this._cache, this._cacheSize);
|
||||
this._cacheSize = 0;
|
||||
this._cache = [];
|
||||
}
|
||||
|
||||
this._parser = new Parser(chunk, this.defaultCharset);
|
||||
} else if (this._cacheSize) {
|
||||
// this only happens if we had an uncompleted 8bit sequence from the last iteration
|
||||
this._cache.push(chunk);
|
||||
this._cacheSize += chunk.length;
|
||||
chunk = Buffer.concat(this._cache, this._cacheSize);
|
||||
this._cacheSize = 0;
|
||||
this._cache = [];
|
||||
}
|
||||
|
||||
// cache 8bit bytes from the end of the chunk
|
||||
// helps if the chunk ends in the middle of an utf-8 sequence
|
||||
for (i = chunk.length - 1; i >= 0; i--) {
|
||||
if (chunk[i] >= 0x80) {
|
||||
len++;
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
// it seems we found some 8bit bytes from the end of the string, so let's cache these
|
||||
if (len) {
|
||||
this._cache = [chunk.slice(chunk.length - len)];
|
||||
this._cacheSize = this._cache[0].length;
|
||||
chunk = chunk.slice(0, chunk.length - len);
|
||||
}
|
||||
|
||||
// chunk might be empty if it only contined of 8bit bytes and these were all cached
|
||||
if (chunk.length) {
|
||||
this._parser._lexer(this._parser._toString(chunk));
|
||||
}
|
||||
|
||||
setImmediate(done);
|
||||
};
|
||||
|
||||
/**
|
||||
* Once all input has been processed emit the parsed translation table as an object
|
||||
*/
|
||||
PoParserTransform.prototype._flush = function(done) {
|
||||
var chunk;
|
||||
|
||||
if (this._cacheSize) {
|
||||
chunk = Buffer.concat(this._cache, this._cacheSize);
|
||||
}
|
||||
|
||||
if (!this._parser && chunk) {
|
||||
this._parser = new Parser(chunk, this.defaultCharset);
|
||||
}
|
||||
|
||||
if (chunk) {
|
||||
this._parser._lexer(this._parser._toString(chunk));
|
||||
}
|
||||
|
||||
if (this._parser) {
|
||||
this.push(this._parser._finalize(this._parser._lex));
|
||||
}
|
||||
|
||||
setImmediate(done);
|
||||
};
|
120
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/lib/shared.js
generated
vendored
Normal file
120
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/lib/shared.js
generated
vendored
Normal file
@ -0,0 +1,120 @@
|
||||
'use strict';
|
||||
|
||||
// Expose to the world
|
||||
module.exports.parseHeader = parseHeader;
|
||||
module.exports.generateHeader = generateHeader;
|
||||
module.exports.formatCharset = formatCharset;
|
||||
module.exports.foldLine = foldLine;
|
||||
|
||||
/**
|
||||
* Parses a header string into an object of key-value pairs
|
||||
*
|
||||
* @param {String} str Header string
|
||||
* @return {Object} An object of key-value pairs
|
||||
*/
|
||||
function parseHeader(str) {
|
||||
var lines = (str || '').split('\n'),
|
||||
headers = {};
|
||||
|
||||
lines.forEach(function(line) {
|
||||
var parts = line.trim().split(':'),
|
||||
key = (parts.shift() || '').trim().toLowerCase(),
|
||||
value = parts.join(':').trim();
|
||||
if (!key) {
|
||||
return;
|
||||
}
|
||||
headers[key] = value;
|
||||
});
|
||||
|
||||
return headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert first letters after - to uppercase, other lowercase
|
||||
*
|
||||
* @param {String} str String to be updated
|
||||
* @return {String} A string with uppercase words
|
||||
*/
|
||||
function upperCaseWords(str) {
|
||||
return (str || '').toLowerCase().trim().replace(/^(MIME|POT?(?=\-)|[a-z])|\-[a-z]/gi, function(str) {
|
||||
return str.toUpperCase();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Joins a header object of key value pairs into a header string
|
||||
*
|
||||
* @param {Object} header Object of key value pairs
|
||||
* @return {String} Header string
|
||||
*/
|
||||
function generateHeader(header) {
|
||||
var lines = [];
|
||||
|
||||
Object.keys(header || {}).forEach(function(key) {
|
||||
if (key) {
|
||||
lines.push(upperCaseWords(key) + ': ' + (header[key] || '').trim());
|
||||
}
|
||||
});
|
||||
|
||||
return lines.join('\n') + (lines.length ? '\n' : '');
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalizes charset name. Converts utf8 to utf-8, WIN1257 to windows-1257 etc.
|
||||
*
|
||||
* @param {String} charset Charset name
|
||||
* @return {String} Normalized charset name
|
||||
*/
|
||||
function formatCharset(charset, defaultCharset) {
|
||||
return (charset || 'iso-8859-1').toString().toLowerCase().
|
||||
replace(/^utf[\-_]?(\d+)$/, 'utf-$1').
|
||||
replace(/^win(?:dows)?[\-_]?(\d+)$/, 'windows-$1').
|
||||
replace(/^latin[\-_]?(\d+)$/, 'iso-8859-$1').
|
||||
replace(/^(us[\-_]?)?ascii$/, 'ascii').
|
||||
replace(/^charset$/, defaultCharset || 'iso-8859-1').
|
||||
trim();
|
||||
}
|
||||
|
||||
/**
|
||||
* Folds long lines according to PO format
|
||||
*
|
||||
* @param {String} str PO formatted string to be folded
|
||||
* @param {Number} [maxLen=76] Maximum allowed length for folded lines
|
||||
* @return {Array} An array of lines
|
||||
*/
|
||||
function foldLine(str, maxLen) {
|
||||
|
||||
maxLen = maxLen || 76;
|
||||
|
||||
var lines = [],
|
||||
curLine = '',
|
||||
pos = 0,
|
||||
len = str.length,
|
||||
match;
|
||||
|
||||
while (pos < len) {
|
||||
curLine = str.substr(pos, maxLen);
|
||||
|
||||
// ensure that the line never ends with a partial escaping
|
||||
// make longer lines if needed
|
||||
while (curLine.substr(-1) === '\\' && pos + curLine.length < len) {
|
||||
curLine += str.charAt(pos + curLine.length);
|
||||
}
|
||||
|
||||
// ensure that if possible, line breaks are done at reasonable places
|
||||
if ((match = curLine.match(/\\n/))) {
|
||||
curLine = curLine.substr(0, match.index + 2);
|
||||
} else if (pos + curLine.length < len) {
|
||||
if ((match = curLine.match(/(\s+)[^\s]*$/)) && match.index > 0) {
|
||||
curLine = curLine.substr(0, match.index + match[1].length);
|
||||
} else if ((match = curLine.match(/([\x21-\x40\x5b-\x60\x7b-\x7e]+)[^\x21-\x40\x5b-\x60\x7b-\x7e]*$/)) && match.index > 0) {
|
||||
curLine = curLine.substr(0, match.index + match[1].length);
|
||||
}
|
||||
}
|
||||
|
||||
lines.push(curLine);
|
||||
pos += curLine.length;
|
||||
}
|
||||
|
||||
return lines;
|
||||
}
|
1
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/.npmignore
generated
vendored
Normal file
1
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/.npmignore
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
node_modules
|
16
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/LICENSE
generated
vendored
Normal file
16
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/LICENSE
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
Copyright (c) 2012-2014 Andris Reinman
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
49
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/README.md
generated
vendored
Normal file
49
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/README.md
generated
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
# Encoding
|
||||
|
||||
**encoding** is a simple wrapper around [node-iconv](https://github.com/bnoordhuis/node-iconv) and [iconv-lite](https://github.com/ashtuchkin/iconv-lite/) to convert strings from one encoding to another. If node-iconv is not available for some reason,
|
||||
iconv-lite will be used instead of it as a fallback.
|
||||
|
||||
## Install
|
||||
|
||||
Install through npm
|
||||
|
||||
npm install encoding
|
||||
|
||||
## Usage
|
||||
|
||||
Require the module
|
||||
|
||||
var encoding = require("encoding");
|
||||
|
||||
Convert with encoding.convert()
|
||||
|
||||
var resultBuffer = encoding.convert(text, toCharset, fromCharset);
|
||||
|
||||
Where
|
||||
|
||||
* **text** is either a Buffer or a String to be converted
|
||||
* **toCharset** is the characterset to convert the string
|
||||
* **fromCharset** (*optional*, defaults to UTF-8) is the source charset
|
||||
|
||||
Output of the conversion is always a Buffer object.
|
||||
|
||||
Example
|
||||
|
||||
var result = encoding.convert("ÕÄÖÜ", "Latin_1");
|
||||
console.log(result); //<Buffer d5 c4 d6 dc>
|
||||
|
||||
## iconv support
|
||||
|
||||
By default only iconv-lite is bundled. If you need node-iconv support, you need to add it
|
||||
as an additional dependency for your project:
|
||||
|
||||
...,
|
||||
"dependencies":{
|
||||
"encoding": "*",
|
||||
"iconv": "*"
|
||||
},
|
||||
...
|
||||
|
||||
## License
|
||||
|
||||
**MIT**
|
120
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/lib/encoding.js
generated
vendored
Normal file
120
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/lib/encoding.js
generated
vendored
Normal file
@ -0,0 +1,120 @@
|
||||
'use strict';
|
||||
|
||||
var iconvLite = require('iconv-lite');
|
||||
var Iconv;
|
||||
|
||||
try {
|
||||
// this is to fool browserify so it doesn't try (in vain) to install iconv.
|
||||
var iconv_package = 'iconv';
|
||||
Iconv = require(iconv_package).Iconv;
|
||||
} catch (E) {
|
||||
// node-iconv not present
|
||||
}
|
||||
|
||||
// Expose to the world
|
||||
module.exports.convert = convert;
|
||||
|
||||
/**
|
||||
* Convert encoding of an UTF-8 string or a buffer
|
||||
*
|
||||
* @param {String|Buffer} str String to be converted
|
||||
* @param {String} to Encoding to be converted to
|
||||
* @param {String} [from='UTF-8'] Encoding to be converted from
|
||||
* @param {Boolean} useLite If set to ture, force to use iconvLite
|
||||
* @return {Buffer} Encoded string
|
||||
*/
|
||||
function convert(str, to, from, useLite) {
|
||||
from = checkEncoding(from || 'UTF-8');
|
||||
to = checkEncoding(to || 'UTF-8');
|
||||
str = str || '';
|
||||
|
||||
var result;
|
||||
|
||||
if (from != 'UTF-8' && typeof str == 'string') {
|
||||
str = new Buffer(str, 'binary');
|
||||
}
|
||||
|
||||
if (from === to) {
|
||||
if (typeof str === 'string') {
|
||||
result = new Buffer(str);
|
||||
} else {
|
||||
result = str;
|
||||
}
|
||||
} else {
|
||||
if (Iconv && !useLite) {
|
||||
try {
|
||||
result = convertIconv(str, to, from);
|
||||
} catch (E) {
|
||||
console.error(E);
|
||||
try {
|
||||
result = convertIconvLite(str, to, from);
|
||||
} catch (E) {
|
||||
console.error(E);
|
||||
result = str;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
result = convertIconvLite(str, to, from);
|
||||
} catch (E) {
|
||||
console.error(E);
|
||||
result = str;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof result == 'string') {
|
||||
result = new Buffer(result, 'utf-8');
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert encoding of a string with node-iconv (if available)
|
||||
*
|
||||
* @param {String|Buffer} str String to be converted
|
||||
* @param {String} to Encoding to be converted to
|
||||
* @param {String} [from='UTF-8'] Encoding to be converted from
|
||||
* @return {Buffer} Encoded string
|
||||
*/
|
||||
function convertIconv(str, to, from) {
|
||||
var response, iconv;
|
||||
iconv = new Iconv(from, to + '//TRANSLIT//IGNORE');
|
||||
response = iconv.convert(str);
|
||||
return response.slice(0, response.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert encoding of astring with iconv-lite
|
||||
*
|
||||
* @param {String|Buffer} str String to be converted
|
||||
* @param {String} to Encoding to be converted to
|
||||
* @param {String} [from='UTF-8'] Encoding to be converted from
|
||||
* @return {Buffer} Encoded string
|
||||
*/
|
||||
function convertIconvLite(str, to, from) {
|
||||
if (to == 'UTF-8') {
|
||||
return iconvLite.decode(str, from);
|
||||
} else if (from == 'UTF-8') {
|
||||
return iconvLite.encode(str, to);
|
||||
} else {
|
||||
return iconvLite.encode(iconvLite.decode(str, from), to);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts charset name if needed
|
||||
*
|
||||
* @param {String} name Character set
|
||||
* @return {String} Character set name
|
||||
*/
|
||||
function checkEncoding(name) {
|
||||
return (name || '').toString().trim().
|
||||
replace(/^latin[\-_]?(\d+)$/i, 'ISO-8859-$1').
|
||||
replace(/^win(?:dows)?[\-_]?(\d+)$/i, 'WINDOWS-$1').
|
||||
replace(/^utf[\-_]?(\d+)$/i, 'UTF-$1').
|
||||
replace(/^ks_c_5601\-1987$/i, 'CP949').
|
||||
replace(/^us[\-_]?ascii$/i, 'ASCII').
|
||||
toUpperCase();
|
||||
}
|
6
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/.npmignore
generated
vendored
Normal file
6
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/.npmignore
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
*~
|
||||
*sublime-*
|
||||
generation
|
||||
test
|
||||
wiki
|
||||
coverage
|
10
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/.travis.yml
generated
vendored
Normal file
10
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.8"
|
||||
- "0.10"
|
||||
- "0.11"
|
||||
- "0.12"
|
||||
- "iojs"
|
||||
|
||||
before_install:
|
||||
- "test $TRAVIS_NODE_VERSION != '0.8' || npm install -g npm@1.2.8000"
|
80
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/Changelog.md
generated
vendored
Normal file
80
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/Changelog.md
generated
vendored
Normal file
@ -0,0 +1,80 @@
|
||||
|
||||
# 0.4.11 / 2015-07-03
|
||||
|
||||
* Added CESU-8 encoding.
|
||||
|
||||
|
||||
# 0.4.10 / 2015-05-26
|
||||
|
||||
* Changed UTF-16 endianness heuristic to take into account any ASCII chars, not
|
||||
just spaces. This should minimize the importance of "default" endianness.
|
||||
|
||||
|
||||
# 0.4.9 / 2015-05-24
|
||||
|
||||
* Streamlined BOM handling: strip BOM by default, add BOM when encoding if
|
||||
addBOM: true. Added docs to Readme.
|
||||
* UTF16 now uses UTF16-LE by default.
|
||||
* Fixed minor issue with big5 encoding.
|
||||
* Added io.js testing on Travis; updated node-iconv version to test against.
|
||||
Now we just skip testing SBCS encodings that node-iconv doesn't support.
|
||||
* (internal refactoring) Updated codec interface to use classes.
|
||||
* Use strict mode in all files.
|
||||
|
||||
|
||||
# 0.4.8 / 2015-04-14
|
||||
|
||||
* added alias UNICODE-1-1-UTF-7 for UTF-7 encoding (#94)
|
||||
|
||||
|
||||
# 0.4.7 / 2015-02-05
|
||||
|
||||
* stop official support of Node.js v0.8. Should still work, but no guarantees.
|
||||
reason: Packages needed for testing are hard to get on Travis CI.
|
||||
* work in environment where Object.prototype is monkey patched with enumerable
|
||||
props (#89).
|
||||
|
||||
|
||||
# 0.4.6 / 2015-01-12
|
||||
|
||||
* fix rare aliases of single-byte encodings (thanks @mscdex)
|
||||
* double the timeout for dbcs tests to make them less flaky on travis
|
||||
|
||||
|
||||
# 0.4.5 / 2014-11-20
|
||||
|
||||
* fix windows-31j and x-sjis encoding support (@nleush)
|
||||
* minor fix: undefined variable reference when internal error happens
|
||||
|
||||
|
||||
# 0.4.4 / 2014-07-16
|
||||
|
||||
* added encodings UTF-7 (RFC2152) and UTF-7-IMAP (RFC3501 Section 5.1.3)
|
||||
* fixed streaming base64 encoding
|
||||
|
||||
|
||||
# 0.4.3 / 2014-06-14
|
||||
|
||||
* added encodings UTF-16BE and UTF-16 with BOM
|
||||
|
||||
|
||||
# 0.4.2 / 2014-06-12
|
||||
|
||||
* don't throw exception if `extendNodeEncodings()` is called more than once
|
||||
|
||||
|
||||
# 0.4.1 / 2014-06-11
|
||||
|
||||
* codepage 808 added
|
||||
|
||||
|
||||
# 0.4.0 / 2014-06-10
|
||||
|
||||
* code is rewritten from scratch
|
||||
* all widespread encodings are supported
|
||||
* streaming interface added
|
||||
* browserify compatibility added
|
||||
* (optional) extend core primitive encodings to make usage even simpler
|
||||
* moved from vows to mocha as the testing framework
|
||||
|
||||
|
21
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/LICENSE
generated
vendored
Normal file
21
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
Copyright (c) 2011 Alexander Shtuchkin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
155
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/README.md
generated
vendored
Normal file
155
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/README.md
generated
vendored
Normal file
@ -0,0 +1,155 @@
|
||||
## Pure JS character encoding conversion [](https://travis-ci.org/ashtuchkin/iconv-lite)
|
||||
|
||||
* Doesn't need native code compilation. Works on Windows and in sandboxed environments like [Cloud9](http://c9.io).
|
||||
* Used in popular projects like [Express.js (body_parser)](https://github.com/expressjs/body-parser),
|
||||
[Grunt](http://gruntjs.com/), [Nodemailer](http://www.nodemailer.com/), [Yeoman](http://yeoman.io/) and others.
|
||||
* Faster than [node-iconv](https://github.com/bnoordhuis/node-iconv) (see below for performance comparison).
|
||||
* Intuitive encode/decode API
|
||||
* Streaming support for Node v0.10+
|
||||
* Can extend Node.js primitives (buffers, streams) to support all iconv-lite encodings.
|
||||
* In-browser usage via [Browserify](https://github.com/substack/node-browserify) (~180k gzip compressed with Buffer shim included).
|
||||
* License: MIT.
|
||||
|
||||
[](https://npmjs.org/packages/iconv-lite/)
|
||||
|
||||
## Usage
|
||||
### Basic API
|
||||
```javascript
|
||||
var iconv = require('iconv-lite');
|
||||
|
||||
// Convert from an encoded buffer to js string.
|
||||
str = iconv.decode(new Buffer([0x68, 0x65, 0x6c, 0x6c, 0x6f]), 'win1251');
|
||||
|
||||
// Convert from js string to an encoded buffer.
|
||||
buf = iconv.encode("Sample input string", 'win1251');
|
||||
|
||||
// Check if encoding is supported
|
||||
iconv.encodingExists("us-ascii")
|
||||
```
|
||||
|
||||
### Streaming API (Node v0.10+)
|
||||
```javascript
|
||||
|
||||
// Decode stream (from binary stream to js strings)
|
||||
http.createServer(function(req, res) {
|
||||
var converterStream = iconv.decodeStream('win1251');
|
||||
req.pipe(converterStream);
|
||||
|
||||
converterStream.on('data', function(str) {
|
||||
console.log(str); // Do something with decoded strings, chunk-by-chunk.
|
||||
});
|
||||
});
|
||||
|
||||
// Convert encoding streaming example
|
||||
fs.createReadStream('file-in-win1251.txt')
|
||||
.pipe(iconv.decodeStream('win1251'))
|
||||
.pipe(iconv.encodeStream('ucs2'))
|
||||
.pipe(fs.createWriteStream('file-in-ucs2.txt'));
|
||||
|
||||
// Sugar: all encode/decode streams have .collect(cb) method to accumulate data.
|
||||
http.createServer(function(req, res) {
|
||||
req.pipe(iconv.decodeStream('win1251')).collect(function(err, body) {
|
||||
assert(typeof body == 'string');
|
||||
console.log(body); // full request body string
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
### Extend Node.js own encodings
|
||||
```javascript
|
||||
// After this call all Node basic primitives will understand iconv-lite encodings.
|
||||
iconv.extendNodeEncodings();
|
||||
|
||||
// Examples:
|
||||
buf = new Buffer(str, 'win1251');
|
||||
buf.write(str, 'gbk');
|
||||
str = buf.toString('latin1');
|
||||
assert(Buffer.isEncoding('iso-8859-15'));
|
||||
Buffer.byteLength(str, 'us-ascii');
|
||||
|
||||
http.createServer(function(req, res) {
|
||||
req.setEncoding('big5');
|
||||
req.collect(function(err, body) {
|
||||
console.log(body);
|
||||
});
|
||||
});
|
||||
|
||||
fs.createReadStream("file.txt", "shift_jis");
|
||||
|
||||
// External modules are also supported (if they use Node primitives, which they probably do).
|
||||
request = require('request');
|
||||
request({
|
||||
url: "http://github.com/",
|
||||
encoding: "cp932"
|
||||
});
|
||||
|
||||
// To remove extensions
|
||||
iconv.undoExtendNodeEncodings();
|
||||
```
|
||||
|
||||
## Supported encodings
|
||||
|
||||
* All node.js native encodings: utf8, ucs2 / utf16-le, ascii, binary, base64, hex.
|
||||
* Additional unicode encodings: utf16, utf16-be, utf-7, utf-7-imap.
|
||||
* All widespread singlebyte encodings: Windows 125x family, ISO-8859 family,
|
||||
IBM/DOS codepages, Macintosh family, KOI8 family, all others supported by iconv library.
|
||||
Aliases like 'latin1', 'us-ascii' also supported.
|
||||
* All widespread multibyte encodings: CP932, CP936, CP949, CP950, GB2313, GBK, GB18030, Big5, Shift_JIS, EUC-JP.
|
||||
|
||||
See [all supported encodings on wiki](https://github.com/ashtuchkin/iconv-lite/wiki/Supported-Encodings).
|
||||
|
||||
Most singlebyte encodings are generated automatically from [node-iconv](https://github.com/bnoordhuis/node-iconv). Thank you Ben Noordhuis and libiconv authors!
|
||||
|
||||
Multibyte encodings are generated from [Unicode.org mappings](http://www.unicode.org/Public/MAPPINGS/) and [WHATWG Encoding Standard mappings](http://encoding.spec.whatwg.org/). Thank you, respective authors!
|
||||
|
||||
|
||||
## Encoding/decoding speed
|
||||
|
||||
Comparison with node-iconv module (1000x256kb, on MacBook Pro, Core i5/2.6 GHz, Node v0.12.0).
|
||||
Note: your results may vary, so please always check on your hardware.
|
||||
|
||||
operation iconv@2.1.4 iconv-lite@0.4.7
|
||||
----------------------------------------------------------
|
||||
encode('win1251') ~96 Mb/s ~320 Mb/s
|
||||
decode('win1251') ~95 Mb/s ~246 Mb/s
|
||||
|
||||
## BOM handling
|
||||
|
||||
* Decoding: BOM is stripped by default, unless overridden by passing `stripBOM: false` in options
|
||||
(f.ex. `iconv.decode(buf, enc, {stripBOM: false})`).
|
||||
A callback might also be given as a `stripBOM` parameter - it'll be called if BOM character was actually found.
|
||||
* Encoding: No BOM added, unless overridden by `addBOM: true` option.
|
||||
|
||||
## UTF-16 Encodings
|
||||
|
||||
This library supports UTF-16LE, UTF-16BE and UTF-16 encodings. First two are straightforward, but UTF-16 is trying to be
|
||||
smart about endianness in the following ways:
|
||||
* Decoding: uses BOM and 'spaces heuristic' to determine input endianness. Default is UTF-16LE, but can be
|
||||
overridden with `defaultEncoding: 'utf-16be'` option. Strips BOM unless `stripBOM: false`.
|
||||
* Encoding: uses UTF-16LE and writes BOM by default. Use `addBOM: false` to override.
|
||||
|
||||
## Other notes
|
||||
|
||||
When decoding, be sure to supply a Buffer to decode() method, otherwise [bad things usually happen](https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding).
|
||||
Untranslatable characters are set to <20> or ?. No transliteration is currently supported.
|
||||
Node versions 0.10.31 and 0.11.13 are buggy, don't use them (see #65, #77).
|
||||
|
||||
## Testing
|
||||
|
||||
```bash
|
||||
$ git clone git@github.com:ashtuchkin/iconv-lite.git
|
||||
$ cd iconv-lite
|
||||
$ npm install
|
||||
$ npm test
|
||||
|
||||
$ # To view performance:
|
||||
$ node test/performance.js
|
||||
|
||||
$ # To view test coverage:
|
||||
$ npm run coverage
|
||||
$ open coverage/lcov-report/index.html
|
||||
```
|
||||
|
||||
## Adoption
|
||||
[](https://nodei.co/npm/iconv-lite/)
|
||||
[](https://www.codeship.io/projects/29053)
|
554
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-codec.js
generated
vendored
Normal file
554
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-codec.js
generated
vendored
Normal file
@ -0,0 +1,554 @@
|
||||
"use strict"
|
||||
|
||||
// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.
|
||||
// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.
|
||||
// To save memory and loading time, we read table files only when requested.
|
||||
|
||||
exports._dbcs = DBCSCodec;
|
||||
|
||||
var UNASSIGNED = -1,
|
||||
GB18030_CODE = -2,
|
||||
SEQ_START = -10,
|
||||
NODE_START = -1000,
|
||||
UNASSIGNED_NODE = new Array(0x100),
|
||||
DEF_CHAR = -1;
|
||||
|
||||
for (var i = 0; i < 0x100; i++)
|
||||
UNASSIGNED_NODE[i] = UNASSIGNED;
|
||||
|
||||
|
||||
// Class DBCSCodec reads and initializes mapping tables.
|
||||
function DBCSCodec(codecOptions, iconv) {
|
||||
this.encodingName = codecOptions.encodingName;
|
||||
if (!codecOptions)
|
||||
throw new Error("DBCS codec is called without the data.")
|
||||
if (!codecOptions.table)
|
||||
throw new Error("Encoding '" + this.encodingName + "' has no data.");
|
||||
|
||||
// Load tables.
|
||||
var mappingTable = codecOptions.table();
|
||||
|
||||
|
||||
// Decode tables: MBCS -> Unicode.
|
||||
|
||||
// decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.
|
||||
// Trie root is decodeTables[0].
|
||||
// Values: >= 0 -> unicode character code. can be > 0xFFFF
|
||||
// == UNASSIGNED -> unknown/unassigned sequence.
|
||||
// == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.
|
||||
// <= NODE_START -> index of the next node in our trie to process next byte.
|
||||
// <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq.
|
||||
this.decodeTables = [];
|
||||
this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.
|
||||
|
||||
// Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here.
|
||||
this.decodeTableSeq = [];
|
||||
|
||||
// Actual mapping tables consist of chunks. Use them to fill up decode tables.
|
||||
for (var i = 0; i < mappingTable.length; i++)
|
||||
this._addDecodeChunk(mappingTable[i]);
|
||||
|
||||
this.defaultCharUnicode = iconv.defaultCharUnicode;
|
||||
|
||||
|
||||
// Encode tables: Unicode -> DBCS.
|
||||
|
||||
// `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.
|
||||
// Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.
|
||||
// Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).
|
||||
// == UNASSIGNED -> no conversion found. Output a default char.
|
||||
// <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence.
|
||||
this.encodeTable = [];
|
||||
|
||||
// `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of
|
||||
// objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key
|
||||
// means end of sequence (needed when one sequence is a strict subsequence of another).
|
||||
// Objects are kept separately from encodeTable to increase performance.
|
||||
this.encodeTableSeq = [];
|
||||
|
||||
// Some chars can be decoded, but need not be encoded.
|
||||
var skipEncodeChars = {};
|
||||
if (codecOptions.encodeSkipVals)
|
||||
for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {
|
||||
var val = codecOptions.encodeSkipVals[i];
|
||||
if (typeof val === 'number')
|
||||
skipEncodeChars[val] = true;
|
||||
else
|
||||
for (var j = val.from; j <= val.to; j++)
|
||||
skipEncodeChars[j] = true;
|
||||
}
|
||||
|
||||
// Use decode trie to recursively fill out encode tables.
|
||||
this._fillEncodeTable(0, 0, skipEncodeChars);
|
||||
|
||||
// Add more encoding pairs when needed.
|
||||
if (codecOptions.encodeAdd) {
|
||||
for (var uChar in codecOptions.encodeAdd)
|
||||
if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))
|
||||
this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);
|
||||
}
|
||||
|
||||
this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];
|
||||
if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];
|
||||
if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0);
|
||||
|
||||
|
||||
// Load & create GB18030 tables when needed.
|
||||
if (typeof codecOptions.gb18030 === 'function') {
|
||||
this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.
|
||||
|
||||
// Add GB18030 decode tables.
|
||||
var thirdByteNodeIdx = this.decodeTables.length;
|
||||
var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0);
|
||||
|
||||
var fourthByteNodeIdx = this.decodeTables.length;
|
||||
var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0);
|
||||
|
||||
for (var i = 0x81; i <= 0xFE; i++) {
|
||||
var secondByteNodeIdx = NODE_START - this.decodeTables[0][i];
|
||||
var secondByteNode = this.decodeTables[secondByteNodeIdx];
|
||||
for (var j = 0x30; j <= 0x39; j++)
|
||||
secondByteNode[j] = NODE_START - thirdByteNodeIdx;
|
||||
}
|
||||
for (var i = 0x81; i <= 0xFE; i++)
|
||||
thirdByteNode[i] = NODE_START - fourthByteNodeIdx;
|
||||
for (var i = 0x30; i <= 0x39; i++)
|
||||
fourthByteNode[i] = GB18030_CODE
|
||||
}
|
||||
}
|
||||
|
||||
DBCSCodec.prototype.encoder = DBCSEncoder;
|
||||
DBCSCodec.prototype.decoder = DBCSDecoder;
|
||||
|
||||
// Decoder helpers
|
||||
DBCSCodec.prototype._getDecodeTrieNode = function(addr) {
|
||||
var bytes = [];
|
||||
for (; addr > 0; addr >>= 8)
|
||||
bytes.push(addr & 0xFF);
|
||||
if (bytes.length == 0)
|
||||
bytes.push(0);
|
||||
|
||||
var node = this.decodeTables[0];
|
||||
for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.
|
||||
var val = node[bytes[i]];
|
||||
|
||||
if (val == UNASSIGNED) { // Create new node.
|
||||
node[bytes[i]] = NODE_START - this.decodeTables.length;
|
||||
this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));
|
||||
}
|
||||
else if (val <= NODE_START) { // Existing node.
|
||||
node = this.decodeTables[NODE_START - val];
|
||||
}
|
||||
else
|
||||
throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16));
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
DBCSCodec.prototype._addDecodeChunk = function(chunk) {
|
||||
// First element of chunk is the hex mbcs code where we start.
|
||||
var curAddr = parseInt(chunk[0], 16);
|
||||
|
||||
// Choose the decoding node where we'll write our chars.
|
||||
var writeTable = this._getDecodeTrieNode(curAddr);
|
||||
curAddr = curAddr & 0xFF;
|
||||
|
||||
// Write all other elements of the chunk to the table.
|
||||
for (var k = 1; k < chunk.length; k++) {
|
||||
var part = chunk[k];
|
||||
if (typeof part === "string") { // String, write as-is.
|
||||
for (var l = 0; l < part.length;) {
|
||||
var code = part.charCodeAt(l++);
|
||||
if (0xD800 <= code && code < 0xDC00) { // Decode surrogate
|
||||
var codeTrail = part.charCodeAt(l++);
|
||||
if (0xDC00 <= codeTrail && codeTrail < 0xE000)
|
||||
writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);
|
||||
else
|
||||
throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]);
|
||||
}
|
||||
else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)
|
||||
var len = 0xFFF - code + 2;
|
||||
var seq = [];
|
||||
for (var m = 0; m < len; m++)
|
||||
seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.
|
||||
|
||||
writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;
|
||||
this.decodeTableSeq.push(seq);
|
||||
}
|
||||
else
|
||||
writeTable[curAddr++] = code; // Basic char
|
||||
}
|
||||
}
|
||||
else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character.
|
||||
var charCode = writeTable[curAddr - 1] + 1;
|
||||
for (var l = 0; l < part; l++)
|
||||
writeTable[curAddr++] = charCode++;
|
||||
}
|
||||
else
|
||||
throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]);
|
||||
}
|
||||
if (curAddr > 0xFF)
|
||||
throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr);
|
||||
}
|
||||
|
||||
// Encoder helpers
|
||||
DBCSCodec.prototype._getEncodeBucket = function(uCode) {
|
||||
var high = uCode >> 8; // This could be > 0xFF because of astral characters.
|
||||
if (this.encodeTable[high] === undefined)
|
||||
this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.
|
||||
return this.encodeTable[high];
|
||||
}
|
||||
|
||||
DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {
|
||||
var bucket = this._getEncodeBucket(uCode);
|
||||
var low = uCode & 0xFF;
|
||||
if (bucket[low] <= SEQ_START)
|
||||
this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.
|
||||
else if (bucket[low] == UNASSIGNED)
|
||||
bucket[low] = dbcsCode;
|
||||
}
|
||||
|
||||
DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {
|
||||
|
||||
// Get the root of character tree according to first character of the sequence.
|
||||
var uCode = seq[0];
|
||||
var bucket = this._getEncodeBucket(uCode);
|
||||
var low = uCode & 0xFF;
|
||||
|
||||
var node;
|
||||
if (bucket[low] <= SEQ_START) {
|
||||
// There's already a sequence with - use it.
|
||||
node = this.encodeTableSeq[SEQ_START-bucket[low]];
|
||||
}
|
||||
else {
|
||||
// There was no sequence object - allocate a new one.
|
||||
node = {};
|
||||
if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.
|
||||
bucket[low] = SEQ_START - this.encodeTableSeq.length;
|
||||
this.encodeTableSeq.push(node);
|
||||
}
|
||||
|
||||
// Traverse the character tree, allocating new nodes as needed.
|
||||
for (var j = 1; j < seq.length-1; j++) {
|
||||
var oldVal = node[uCode];
|
||||
if (typeof oldVal === 'object')
|
||||
node = oldVal;
|
||||
else {
|
||||
node = node[uCode] = {}
|
||||
if (oldVal !== undefined)
|
||||
node[DEF_CHAR] = oldVal
|
||||
}
|
||||
}
|
||||
|
||||
// Set the leaf to given dbcsCode.
|
||||
uCode = seq[seq.length-1];
|
||||
node[uCode] = dbcsCode;
|
||||
}
|
||||
|
||||
DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {
|
||||
var node = this.decodeTables[nodeIdx];
|
||||
for (var i = 0; i < 0x100; i++) {
|
||||
var uCode = node[i];
|
||||
var mbCode = prefix + i;
|
||||
if (skipEncodeChars[mbCode])
|
||||
continue;
|
||||
|
||||
if (uCode >= 0)
|
||||
this._setEncodeChar(uCode, mbCode);
|
||||
else if (uCode <= NODE_START)
|
||||
this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars);
|
||||
else if (uCode <= SEQ_START)
|
||||
this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// == Encoder ==================================================================
|
||||
|
||||
function DBCSEncoder(options, codec) {
|
||||
// Encoder state
|
||||
this.leadSurrogate = -1;
|
||||
this.seqObj = undefined;
|
||||
|
||||
// Static data
|
||||
this.encodeTable = codec.encodeTable;
|
||||
this.encodeTableSeq = codec.encodeTableSeq;
|
||||
this.defaultCharSingleByte = codec.defCharSB;
|
||||
this.gb18030 = codec.gb18030;
|
||||
}
|
||||
|
||||
DBCSEncoder.prototype.write = function(str) {
|
||||
var newBuf = new Buffer(str.length * (this.gb18030 ? 4 : 3)),
|
||||
leadSurrogate = this.leadSurrogate,
|
||||
seqObj = this.seqObj, nextChar = -1,
|
||||
i = 0, j = 0;
|
||||
|
||||
while (true) {
|
||||
// 0. Get next character.
|
||||
if (nextChar === -1) {
|
||||
if (i == str.length) break;
|
||||
var uCode = str.charCodeAt(i++);
|
||||
}
|
||||
else {
|
||||
var uCode = nextChar;
|
||||
nextChar = -1;
|
||||
}
|
||||
|
||||
// 1. Handle surrogates.
|
||||
if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.
|
||||
if (uCode < 0xDC00) { // We've got lead surrogate.
|
||||
if (leadSurrogate === -1) {
|
||||
leadSurrogate = uCode;
|
||||
continue;
|
||||
} else {
|
||||
leadSurrogate = uCode;
|
||||
// Double lead surrogate found.
|
||||
uCode = UNASSIGNED;
|
||||
}
|
||||
} else { // We've got trail surrogate.
|
||||
if (leadSurrogate !== -1) {
|
||||
uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);
|
||||
leadSurrogate = -1;
|
||||
} else {
|
||||
// Incomplete surrogate pair - only trail surrogate found.
|
||||
uCode = UNASSIGNED;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else if (leadSurrogate !== -1) {
|
||||
// Incomplete surrogate pair - only lead surrogate found.
|
||||
nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.
|
||||
leadSurrogate = -1;
|
||||
}
|
||||
|
||||
// 2. Convert uCode character.
|
||||
var dbcsCode = UNASSIGNED;
|
||||
if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence
|
||||
var resCode = seqObj[uCode];
|
||||
if (typeof resCode === 'object') { // Sequence continues.
|
||||
seqObj = resCode;
|
||||
continue;
|
||||
|
||||
} else if (typeof resCode == 'number') { // Sequence finished. Write it.
|
||||
dbcsCode = resCode;
|
||||
|
||||
} else if (resCode == undefined) { // Current character is not part of the sequence.
|
||||
|
||||
// Try default character for this sequence
|
||||
resCode = seqObj[DEF_CHAR];
|
||||
if (resCode !== undefined) {
|
||||
dbcsCode = resCode; // Found. Write it.
|
||||
nextChar = uCode; // Current character will be written too in the next iteration.
|
||||
|
||||
} else {
|
||||
// TODO: What if we have no default? (resCode == undefined)
|
||||
// Then, we should write first char of the sequence as-is and try the rest recursively.
|
||||
// Didn't do it for now because no encoding has this situation yet.
|
||||
// Currently, just skip the sequence and write current char.
|
||||
}
|
||||
}
|
||||
seqObj = undefined;
|
||||
}
|
||||
else if (uCode >= 0) { // Regular character
|
||||
var subtable = this.encodeTable[uCode >> 8];
|
||||
if (subtable !== undefined)
|
||||
dbcsCode = subtable[uCode & 0xFF];
|
||||
|
||||
if (dbcsCode <= SEQ_START) { // Sequence start
|
||||
seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];
|
||||
continue;
|
||||
}
|
||||
|
||||
if (dbcsCode == UNASSIGNED && this.gb18030) {
|
||||
// Use GB18030 algorithm to find character(s) to write.
|
||||
var idx = findIdx(this.gb18030.uChars, uCode);
|
||||
if (idx != -1) {
|
||||
var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);
|
||||
newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;
|
||||
newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;
|
||||
newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;
|
||||
newBuf[j++] = 0x30 + dbcsCode;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Write dbcsCode character.
|
||||
if (dbcsCode === UNASSIGNED)
|
||||
dbcsCode = this.defaultCharSingleByte;
|
||||
|
||||
if (dbcsCode < 0x100) {
|
||||
newBuf[j++] = dbcsCode;
|
||||
}
|
||||
else if (dbcsCode < 0x10000) {
|
||||
newBuf[j++] = dbcsCode >> 8; // high byte
|
||||
newBuf[j++] = dbcsCode & 0xFF; // low byte
|
||||
}
|
||||
else {
|
||||
newBuf[j++] = dbcsCode >> 16;
|
||||
newBuf[j++] = (dbcsCode >> 8) & 0xFF;
|
||||
newBuf[j++] = dbcsCode & 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
this.seqObj = seqObj;
|
||||
this.leadSurrogate = leadSurrogate;
|
||||
return newBuf.slice(0, j);
|
||||
}
|
||||
|
||||
DBCSEncoder.prototype.end = function() {
|
||||
if (this.leadSurrogate === -1 && this.seqObj === undefined)
|
||||
return; // All clean. Most often case.
|
||||
|
||||
var newBuf = new Buffer(10), j = 0;
|
||||
|
||||
if (this.seqObj) { // We're in the sequence.
|
||||
var dbcsCode = this.seqObj[DEF_CHAR];
|
||||
if (dbcsCode !== undefined) { // Write beginning of the sequence.
|
||||
if (dbcsCode < 0x100) {
|
||||
newBuf[j++] = dbcsCode;
|
||||
}
|
||||
else {
|
||||
newBuf[j++] = dbcsCode >> 8; // high byte
|
||||
newBuf[j++] = dbcsCode & 0xFF; // low byte
|
||||
}
|
||||
} else {
|
||||
// See todo above.
|
||||
}
|
||||
this.seqObj = undefined;
|
||||
}
|
||||
|
||||
if (this.leadSurrogate !== -1) {
|
||||
// Incomplete surrogate pair - only lead surrogate found.
|
||||
newBuf[j++] = this.defaultCharSingleByte;
|
||||
this.leadSurrogate = -1;
|
||||
}
|
||||
|
||||
return newBuf.slice(0, j);
|
||||
}
|
||||
|
||||
// Export for testing
|
||||
DBCSEncoder.prototype.findIdx = findIdx;
|
||||
|
||||
|
||||
// == Decoder ==================================================================
|
||||
|
||||
function DBCSDecoder(options, codec) {
|
||||
// Decoder state
|
||||
this.nodeIdx = 0;
|
||||
this.prevBuf = new Buffer(0);
|
||||
|
||||
// Static data
|
||||
this.decodeTables = codec.decodeTables;
|
||||
this.decodeTableSeq = codec.decodeTableSeq;
|
||||
this.defaultCharUnicode = codec.defaultCharUnicode;
|
||||
this.gb18030 = codec.gb18030;
|
||||
}
|
||||
|
||||
DBCSDecoder.prototype.write = function(buf) {
|
||||
var newBuf = new Buffer(buf.length*2),
|
||||
nodeIdx = this.nodeIdx,
|
||||
prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length,
|
||||
seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence.
|
||||
uCode;
|
||||
|
||||
if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later.
|
||||
prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]);
|
||||
|
||||
for (var i = 0, j = 0; i < buf.length; i++) {
|
||||
var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset];
|
||||
|
||||
// Lookup in current trie node.
|
||||
var uCode = this.decodeTables[nodeIdx][curByte];
|
||||
|
||||
if (uCode >= 0) {
|
||||
// Normal character, just use it.
|
||||
}
|
||||
else if (uCode === UNASSIGNED) { // Unknown char.
|
||||
// TODO: Callback with seq.
|
||||
//var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);
|
||||
i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle).
|
||||
uCode = this.defaultCharUnicode.charCodeAt(0);
|
||||
}
|
||||
else if (uCode === GB18030_CODE) {
|
||||
var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);
|
||||
var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30);
|
||||
var idx = findIdx(this.gb18030.gbChars, ptr);
|
||||
uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];
|
||||
}
|
||||
else if (uCode <= NODE_START) { // Go to next trie node.
|
||||
nodeIdx = NODE_START - uCode;
|
||||
continue;
|
||||
}
|
||||
else if (uCode <= SEQ_START) { // Output a sequence of chars.
|
||||
var seq = this.decodeTableSeq[SEQ_START - uCode];
|
||||
for (var k = 0; k < seq.length - 1; k++) {
|
||||
uCode = seq[k];
|
||||
newBuf[j++] = uCode & 0xFF;
|
||||
newBuf[j++] = uCode >> 8;
|
||||
}
|
||||
uCode = seq[seq.length-1];
|
||||
}
|
||||
else
|
||||
throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte);
|
||||
|
||||
// Write the character to buffer, handling higher planes using surrogate pair.
|
||||
if (uCode > 0xFFFF) {
|
||||
uCode -= 0x10000;
|
||||
var uCodeLead = 0xD800 + Math.floor(uCode / 0x400);
|
||||
newBuf[j++] = uCodeLead & 0xFF;
|
||||
newBuf[j++] = uCodeLead >> 8;
|
||||
|
||||
uCode = 0xDC00 + uCode % 0x400;
|
||||
}
|
||||
newBuf[j++] = uCode & 0xFF;
|
||||
newBuf[j++] = uCode >> 8;
|
||||
|
||||
// Reset trie node.
|
||||
nodeIdx = 0; seqStart = i+1;
|
||||
}
|
||||
|
||||
this.nodeIdx = nodeIdx;
|
||||
this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset);
|
||||
return newBuf.slice(0, j).toString('ucs2');
|
||||
}
|
||||
|
||||
DBCSDecoder.prototype.end = function() {
|
||||
var ret = '';
|
||||
|
||||
// Try to parse all remaining chars.
|
||||
while (this.prevBuf.length > 0) {
|
||||
// Skip 1 character in the buffer.
|
||||
ret += this.defaultCharUnicode;
|
||||
var buf = this.prevBuf.slice(1);
|
||||
|
||||
// Parse remaining as usual.
|
||||
this.prevBuf = new Buffer(0);
|
||||
this.nodeIdx = 0;
|
||||
if (buf.length > 0)
|
||||
ret += this.write(buf);
|
||||
}
|
||||
|
||||
this.nodeIdx = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Binary search for GB18030. Returns largest i such that table[i] <= val.
|
||||
function findIdx(table, val) {
|
||||
if (table[0] > val)
|
||||
return -1;
|
||||
|
||||
var l = 0, r = table.length;
|
||||
while (l < r-1) { // always table[l] <= val < table[r]
|
||||
var mid = l + Math.floor((r-l+1)/2);
|
||||
if (table[mid] <= val)
|
||||
l = mid;
|
||||
else
|
||||
r = mid;
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
170
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-data.js
generated
vendored
Normal file
170
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-data.js
generated
vendored
Normal file
@ -0,0 +1,170 @@
|
||||
"use strict"
|
||||
|
||||
// Description of supported double byte encodings and aliases.
|
||||
// Tables are not require()-d until they are needed to speed up library load.
|
||||
// require()-s are direct to support Browserify.
|
||||
|
||||
module.exports = {
|
||||
|
||||
// == Japanese/ShiftJIS ====================================================
|
||||
// All japanese encodings are based on JIS X set of standards:
|
||||
// JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.
|
||||
// JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes.
|
||||
// Has several variations in 1978, 1983, 1990 and 1997.
|
||||
// JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.
|
||||
// JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.
|
||||
// 2 planes, first is superset of 0208, second - revised 0212.
|
||||
// Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)
|
||||
|
||||
// Byte encodings are:
|
||||
// * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte
|
||||
// encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.
|
||||
// Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.
|
||||
// * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.
|
||||
// 0x00-0x7F - lower part of 0201
|
||||
// 0x8E, 0xA1-0xDF - upper part of 0201
|
||||
// (0xA1-0xFE)x2 - 0208 plane (94x94).
|
||||
// 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).
|
||||
// * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.
|
||||
// Used as-is in ISO2022 family.
|
||||
// * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII,
|
||||
// 0201-1976 Roman, 0208-1978, 0208-1983.
|
||||
// * ISO2022-JP-1: Adds esc seq for 0212-1990.
|
||||
// * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.
|
||||
// * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.
|
||||
// * ISO2022-JP-2004: Adds 0213-2004 Plane 1.
|
||||
//
|
||||
// After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.
|
||||
//
|
||||
// Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html
|
||||
|
||||
|
||||
'shiftjis': {
|
||||
type: '_dbcs',
|
||||
table: function() { return require('./tables/shiftjis.json') },
|
||||
encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
|
||||
encodeSkipVals: [{from: 0xED40, to: 0xF940}],
|
||||
},
|
||||
'csshiftjis': 'shiftjis',
|
||||
'mskanji': 'shiftjis',
|
||||
'sjis': 'shiftjis',
|
||||
'windows31j': 'shiftjis',
|
||||
'xsjis': 'shiftjis',
|
||||
'windows932': 'shiftjis',
|
||||
'932': 'shiftjis',
|
||||
'cp932': 'shiftjis',
|
||||
|
||||
'eucjp': {
|
||||
type: '_dbcs',
|
||||
table: function() { return require('./tables/eucjp.json') },
|
||||
encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
|
||||
},
|
||||
|
||||
// TODO: KDDI extension to Shift_JIS
|
||||
// TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.
|
||||
// TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.
|
||||
|
||||
// == Chinese/GBK ==========================================================
|
||||
// http://en.wikipedia.org/wiki/GBK
|
||||
|
||||
// Oldest GB2312 (1981, ~7600 chars) is a subset of CP936
|
||||
'gb2312': 'cp936',
|
||||
'gb231280': 'cp936',
|
||||
'gb23121980': 'cp936',
|
||||
'csgb2312': 'cp936',
|
||||
'csiso58gb231280': 'cp936',
|
||||
'euccn': 'cp936',
|
||||
'isoir58': 'gbk',
|
||||
|
||||
// Microsoft's CP936 is a subset and approximation of GBK.
|
||||
// TODO: Euro = 0x80 in cp936, but not in GBK (where it's valid but undefined)
|
||||
'windows936': 'cp936',
|
||||
'936': 'cp936',
|
||||
'cp936': {
|
||||
type: '_dbcs',
|
||||
table: function() { return require('./tables/cp936.json') },
|
||||
},
|
||||
|
||||
// GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.
|
||||
'gbk': {
|
||||
type: '_dbcs',
|
||||
table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },
|
||||
},
|
||||
'xgbk': 'gbk',
|
||||
|
||||
// GB18030 is an algorithmic extension of GBK.
|
||||
'gb18030': {
|
||||
type: '_dbcs',
|
||||
table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },
|
||||
gb18030: function() { return require('./tables/gb18030-ranges.json') },
|
||||
},
|
||||
|
||||
'chinese': 'gb18030',
|
||||
|
||||
// TODO: Support GB18030 (~27000 chars + whole unicode mapping, cp54936)
|
||||
// http://icu-project.org/docs/papers/gb18030.html
|
||||
// http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml
|
||||
// http://www.khngai.com/chinese/charmap/tblgbk.php?page=0
|
||||
|
||||
// == Korean ===============================================================
|
||||
// EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.
|
||||
'windows949': 'cp949',
|
||||
'949': 'cp949',
|
||||
'cp949': {
|
||||
type: '_dbcs',
|
||||
table: function() { return require('./tables/cp949.json') },
|
||||
},
|
||||
|
||||
'cseuckr': 'cp949',
|
||||
'csksc56011987': 'cp949',
|
||||
'euckr': 'cp949',
|
||||
'isoir149': 'cp949',
|
||||
'korean': 'cp949',
|
||||
'ksc56011987': 'cp949',
|
||||
'ksc56011989': 'cp949',
|
||||
'ksc5601': 'cp949',
|
||||
|
||||
|
||||
// == Big5/Taiwan/Hong Kong ================================================
|
||||
// There are lots of tables for Big5 and cp950. Please see the following links for history:
|
||||
// http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html
|
||||
// Variations, in roughly number of defined chars:
|
||||
// * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
|
||||
// * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/
|
||||
// * Big5-2003 (Taiwan standard) almost superset of cp950.
|
||||
// * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.
|
||||
// * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard.
|
||||
// many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.
|
||||
// Plus, it has 4 combining sequences.
|
||||
// Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299
|
||||
// because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.
|
||||
// Implementations are not consistent within browsers; sometimes labeled as just big5.
|
||||
// MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.
|
||||
// Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31
|
||||
// In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.
|
||||
// Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt
|
||||
// http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt
|
||||
//
|
||||
// Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder
|
||||
// Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.
|
||||
|
||||
'windows950': 'cp950',
|
||||
'950': 'cp950',
|
||||
'cp950': {
|
||||
type: '_dbcs',
|
||||
table: function() { return require('./tables/cp950.json') },
|
||||
},
|
||||
|
||||
// Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.
|
||||
'big5': 'big5hkscs',
|
||||
'big5hkscs': {
|
||||
type: '_dbcs',
|
||||
table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },
|
||||
encodeSkipVals: [0xa2cc],
|
||||
},
|
||||
|
||||
'cnbig5': 'big5hkscs',
|
||||
'csbig5': 'big5hkscs',
|
||||
'xxbig5': 'big5hkscs',
|
||||
|
||||
};
|
22
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/encodings/index.js
generated
vendored
Normal file
22
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/encodings/index.js
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
"use strict"
|
||||
|
||||
// Update this array if you add/rename/remove files in this directory.
|
||||
// We support Browserify by skipping automatic module discovery and requiring modules directly.
|
||||
var modules = [
|
||||
require("./internal"),
|
||||
require("./utf16"),
|
||||
require("./utf7"),
|
||||
require("./sbcs-codec"),
|
||||
require("./sbcs-data"),
|
||||
require("./sbcs-data-generated"),
|
||||
require("./dbcs-codec"),
|
||||
require("./dbcs-data"),
|
||||
];
|
||||
|
||||
// Put all encoding/alias/codec definitions to single object and export it.
|
||||
for (var i = 0; i < modules.length; i++) {
|
||||
var module = modules[i];
|
||||
for (var enc in module)
|
||||
if (Object.prototype.hasOwnProperty.call(module, enc))
|
||||
exports[enc] = module[enc];
|
||||
}
|
119
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/encodings/internal.js
generated
vendored
Normal file
119
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/encodings/internal.js
generated
vendored
Normal file
@ -0,0 +1,119 @@
|
||||
"use strict"
|
||||
|
||||
// Export Node.js internal encodings.
|
||||
|
||||
module.exports = {
|
||||
// Encodings
|
||||
utf8: { type: "_internal", bomAware: true},
|
||||
cesu8: { type: "_internal", bomAware: true},
|
||||
unicode11utf8: "utf8",
|
||||
|
||||
ucs2: { type: "_internal", bomAware: true},
|
||||
utf16le: "ucs2",
|
||||
|
||||
binary: { type: "_internal" },
|
||||
base64: { type: "_internal" },
|
||||
hex: { type: "_internal" },
|
||||
|
||||
// Codec.
|
||||
_internal: InternalCodec,
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
function InternalCodec(codecOptions) {
|
||||
this.enc = codecOptions.encodingName;
|
||||
this.bomAware = codecOptions.bomAware;
|
||||
|
||||
if (this.enc === "base64")
|
||||
this.encoder = InternalEncoderBase64;
|
||||
else if (this.enc === "cesu8") {
|
||||
this.enc = "utf8"; // Use utf8 for decoding.
|
||||
this.encoder = InternalEncoderCesu8;
|
||||
}
|
||||
}
|
||||
|
||||
InternalCodec.prototype.encoder = InternalEncoder;
|
||||
InternalCodec.prototype.decoder = InternalDecoder;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// We use node.js internal decoder. It's signature is the same as ours.
|
||||
var StringDecoder = require('string_decoder').StringDecoder;
|
||||
|
||||
if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.
|
||||
StringDecoder.prototype.end = function() {};
|
||||
|
||||
|
||||
function InternalDecoder(options, codec) {
|
||||
StringDecoder.call(this, codec.enc);
|
||||
}
|
||||
|
||||
InternalDecoder.prototype = StringDecoder.prototype;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Encoder is mostly trivial
|
||||
|
||||
function InternalEncoder(options, codec) {
|
||||
this.enc = codec.enc;
|
||||
}
|
||||
|
||||
InternalEncoder.prototype.write = function(str) {
|
||||
return new Buffer(str, this.enc);
|
||||
}
|
||||
|
||||
InternalEncoder.prototype.end = function() {
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Except base64 encoder, which must keep its state.
|
||||
|
||||
function InternalEncoderBase64(options, codec) {
|
||||
this.prevStr = '';
|
||||
}
|
||||
|
||||
InternalEncoderBase64.prototype.write = function(str) {
|
||||
str = this.prevStr + str;
|
||||
var completeQuads = str.length - (str.length % 4);
|
||||
this.prevStr = str.slice(completeQuads);
|
||||
str = str.slice(0, completeQuads);
|
||||
|
||||
return new Buffer(str, "base64");
|
||||
}
|
||||
|
||||
InternalEncoderBase64.prototype.end = function() {
|
||||
return new Buffer(this.prevStr, "base64");
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// CESU-8 encoder is also special.
|
||||
|
||||
function InternalEncoderCesu8(options, codec) {
|
||||
}
|
||||
|
||||
InternalEncoderCesu8.prototype.write = function(str) {
|
||||
var buf = new Buffer(str.length * 3), bufIdx = 0;
|
||||
for (var i = 0; i < str.length; i++) {
|
||||
var charCode = str.charCodeAt(i);
|
||||
// Naive implementation, but it works because CESU-8 is especially easy
|
||||
// to convert from UTF-16 (which all JS strings are encoded in).
|
||||
if (charCode < 0x80)
|
||||
buf[bufIdx++] = charCode;
|
||||
else if (charCode < 0x800) {
|
||||
buf[bufIdx++] = 0xC0 + (charCode >>> 6);
|
||||
buf[bufIdx++] = 0x80 + (charCode & 0x3f);
|
||||
}
|
||||
else { // charCode will always be < 0x10000 in javascript.
|
||||
buf[bufIdx++] = 0xE0 + (charCode >>> 12);
|
||||
buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);
|
||||
buf[bufIdx++] = 0x80 + (charCode & 0x3f);
|
||||
}
|
||||
}
|
||||
return buf.slice(0, bufIdx);
|
||||
}
|
||||
|
||||
InternalEncoderCesu8.prototype.end = function() {
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
"use strict"
|
||||
|
||||
// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that
|
||||
// correspond to encoded bytes (if 128 - then lower half is ASCII).
|
||||
|
||||
exports._sbcs = SBCSCodec;
|
||||
function SBCSCodec(codecOptions, iconv) {
|
||||
if (!codecOptions)
|
||||
throw new Error("SBCS codec is called without the data.")
|
||||
|
||||
// Prepare char buffer for decoding.
|
||||
if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))
|
||||
throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)");
|
||||
|
||||
if (codecOptions.chars.length === 128) {
|
||||
var asciiString = "";
|
||||
for (var i = 0; i < 128; i++)
|
||||
asciiString += String.fromCharCode(i);
|
||||
codecOptions.chars = asciiString + codecOptions.chars;
|
||||
}
|
||||
|
||||
this.decodeBuf = new Buffer(codecOptions.chars, 'ucs2');
|
||||
|
||||
// Encoding buffer.
|
||||
var encodeBuf = new Buffer(65536);
|
||||
encodeBuf.fill(iconv.defaultCharSingleByte.charCodeAt(0));
|
||||
|
||||
for (var i = 0; i < codecOptions.chars.length; i++)
|
||||
encodeBuf[codecOptions.chars.charCodeAt(i)] = i;
|
||||
|
||||
this.encodeBuf = encodeBuf;
|
||||
}
|
||||
|
||||
SBCSCodec.prototype.encoder = SBCSEncoder;
|
||||
SBCSCodec.prototype.decoder = SBCSDecoder;
|
||||
|
||||
|
||||
function SBCSEncoder(options, codec) {
|
||||
this.encodeBuf = codec.encodeBuf;
|
||||
}
|
||||
|
||||
SBCSEncoder.prototype.write = function(str) {
|
||||
var buf = new Buffer(str.length);
|
||||
for (var i = 0; i < str.length; i++)
|
||||
buf[i] = this.encodeBuf[str.charCodeAt(i)];
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
SBCSEncoder.prototype.end = function() {
|
||||
}
|
||||
|
||||
|
||||
function SBCSDecoder(options, codec) {
|
||||
this.decodeBuf = codec.decodeBuf;
|
||||
}
|
||||
|
||||
SBCSDecoder.prototype.write = function(buf) {
|
||||
// Strings are immutable in JS -> we use ucs2 buffer to speed up computations.
|
||||
var decodeBuf = this.decodeBuf;
|
||||
var newBuf = new Buffer(buf.length*2);
|
||||
var idx1 = 0, idx2 = 0;
|
||||
for (var i = 0; i < buf.length; i++) {
|
||||
idx1 = buf[i]*2; idx2 = i*2;
|
||||
newBuf[idx2] = decodeBuf[idx1];
|
||||
newBuf[idx2+1] = decodeBuf[idx1+1];
|
||||
}
|
||||
return newBuf.toString('ucs2');
|
||||
}
|
||||
|
||||
SBCSDecoder.prototype.end = function() {
|
||||
}
|
@ -0,0 +1,451 @@
|
||||
"use strict"
|
||||
|
||||
// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.
|
||||
module.exports = {
|
||||
"437": "cp437",
|
||||
"737": "cp737",
|
||||
"775": "cp775",
|
||||
"850": "cp850",
|
||||
"852": "cp852",
|
||||
"855": "cp855",
|
||||
"856": "cp856",
|
||||
"857": "cp857",
|
||||
"858": "cp858",
|
||||
"860": "cp860",
|
||||
"861": "cp861",
|
||||
"862": "cp862",
|
||||
"863": "cp863",
|
||||
"864": "cp864",
|
||||
"865": "cp865",
|
||||
"866": "cp866",
|
||||
"869": "cp869",
|
||||
"874": "windows874",
|
||||
"922": "cp922",
|
||||
"1046": "cp1046",
|
||||
"1124": "cp1124",
|
||||
"1125": "cp1125",
|
||||
"1129": "cp1129",
|
||||
"1133": "cp1133",
|
||||
"1161": "cp1161",
|
||||
"1162": "cp1162",
|
||||
"1163": "cp1163",
|
||||
"1250": "windows1250",
|
||||
"1251": "windows1251",
|
||||
"1252": "windows1252",
|
||||
"1253": "windows1253",
|
||||
"1254": "windows1254",
|
||||
"1255": "windows1255",
|
||||
"1256": "windows1256",
|
||||
"1257": "windows1257",
|
||||
"1258": "windows1258",
|
||||
"28591": "iso88591",
|
||||
"28592": "iso88592",
|
||||
"28593": "iso88593",
|
||||
"28594": "iso88594",
|
||||
"28595": "iso88595",
|
||||
"28596": "iso88596",
|
||||
"28597": "iso88597",
|
||||
"28598": "iso88598",
|
||||
"28599": "iso88599",
|
||||
"28600": "iso885910",
|
||||
"28601": "iso885911",
|
||||
"28603": "iso885913",
|
||||
"28604": "iso885914",
|
||||
"28605": "iso885915",
|
||||
"28606": "iso885916",
|
||||
"windows874": {
|
||||
"type": "_sbcs",
|
||||
"chars": "€<><E282AC><EFBFBD><EFBFBD>…<EFBFBD><E280A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>‘’“”•–—<E28093><E28094><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู<E0B8B9><E0B8BA><EFBFBD><EFBFBD>฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛<E0B99A><E0B99B><EFBFBD><EFBFBD>"
|
||||
},
|
||||
"win874": "windows874",
|
||||
"cp874": "windows874",
|
||||
"windows1250": {
|
||||
"type": "_sbcs",
|
||||
"chars": "€<>‚<EFBFBD>„…†‡<E280A0>‰Š‹ŚŤŽŹ<C5BD>‘’“”•–—<E28093>™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
|
||||
},
|
||||
"win1250": "windows1250",
|
||||
"cp1250": "windows1250",
|
||||
"windows1251": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—<E28093>™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
|
||||
},
|
||||
"win1251": "windows1251",
|
||||
"cp1251": "windows1251",
|
||||
"windows1252": {
|
||||
"type": "_sbcs",
|
||||
"chars": "€<>‚ƒ„…†‡ˆ‰Š‹Œ<E280B9>Ž<EFBFBD><C5BD>‘’“”•–—˜™š›œ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
|
||||
},
|
||||
"win1252": "windows1252",
|
||||
"cp1252": "windows1252",
|
||||
"windows1253": {
|
||||
"type": "_sbcs",
|
||||
"chars": "€<>‚ƒ„…†‡<E280A0>‰<EFBFBD>‹<EFBFBD><E280B9><EFBFBD><EFBFBD><EFBFBD>‘’“”•–—<E28093>™<EFBFBD>›<EFBFBD><E280BA><EFBFBD><EFBFBD> ΅Ά£¤¥¦§¨©<C2A8>«¬®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ<CEA0>ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ<CF8D>"
|
||||
},
|
||||
"win1253": "windows1253",
|
||||
"cp1253": "windows1253",
|
||||
"windows1254": {
|
||||
"type": "_sbcs",
|
||||
"chars": "€<>‚ƒ„…†‡ˆ‰Š‹Œ<E280B9><C592><EFBFBD><EFBFBD>‘’“”•–—˜™š›œ<E280BA><C593>Ÿ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
|
||||
},
|
||||
"win1254": "windows1254",
|
||||
"cp1254": "windows1254",
|
||||
"windows1255": {
|
||||
"type": "_sbcs",
|
||||
"chars": "€<>‚ƒ„…†‡ˆ‰<CB86>‹<EFBFBD><E280B9><EFBFBD><EFBFBD><EFBFBD>‘’“”•–—˜™<CB9C>›<EFBFBD><E280BA><EFBFBD><EFBFBD> ¡¢£₪¥¦§¨©×«¬®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹ<D6B8>ֻּֽ־ֿ׀ׁׂ׃װױײ׳״<D7B3><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>אבגדהוזחטיךכלםמןנסעףפץצקרשת<D7A9><D7AA><E2808E>"
|
||||
},
|
||||
"win1255": "windows1255",
|
||||
"cp1255": "windows1255",
|
||||
"windows1256": {
|
||||
"type": "_sbcs",
|
||||
"chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œں ،¢£¤¥¦§¨©ھ«¬®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûüے"
|
||||
},
|
||||
"win1256": "windows1256",
|
||||
"cp1256": "windows1256",
|
||||
"windows1257": {
|
||||
"type": "_sbcs",
|
||||
"chars": "€<>‚<EFBFBD>„…†‡<E280A0>‰<EFBFBD>‹<EFBFBD>¨ˇ¸<CB87>‘’“”•–—<E28093>™<EFBFBD>›<EFBFBD>¯˛<C2AF> <EFBFBD>¢£¤<C2A3>¦§Ø©Ŗ«¬®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"
|
||||
},
|
||||
"win1257": "windows1257",
|
||||
"cp1257": "windows1257",
|
||||
"windows1258": {
|
||||
"type": "_sbcs",
|
||||
"chars": "€<>‚ƒ„…†‡ˆ‰<CB86>‹Œ<E280B9><C592><EFBFBD><EFBFBD>‘’“”•–—˜™<CB9C>›œ<E280BA><C593>Ÿ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
|
||||
},
|
||||
"win1258": "windows1258",
|
||||
"cp1258": "windows1258",
|
||||
"iso88591": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
|
||||
},
|
||||
"cp28591": "iso88591",
|
||||
"iso88592": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
Ą˘Ł¤ĽŚ§¨ŠŞŤŹŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
|
||||
},
|
||||
"cp28592": "iso88592",
|
||||
"iso88593": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
Ħ˘£¤<C2A3>Ĥ§¨İŞĞĴ<C4B4>ݰħ²³´µĥ·¸ışğĵ½<C4B5>żÀÁÂ<C381>ÄĊĈÇÈÉÊËÌÍÎÏ<C38E>ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ<C3A1>äċĉçèéêëìíîï<C3AE>ñòóôġö÷ĝùúûüŭŝ˙"
|
||||
},
|
||||
"cp28593": "iso88593",
|
||||
"iso88594": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
ĄĸŖ¤Ĩϧ¨ŠĒĢŦޝ°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"
|
||||
},
|
||||
"cp28594": "iso88594",
|
||||
"iso88595": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
ЁЂЃЄЅІЇЈЉЊЋЌЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"
|
||||
},
|
||||
"cp28595": "iso88595",
|
||||
"iso88596": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
<C29F><C2A0><EFBFBD>¤<EFBFBD><C2A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>،<D88C><C2AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>؛<EFBFBD><D89B><EFBFBD>؟<EFBFBD>ءآأؤإئابةتثجحخدذرزسشصضطظعغ<D8B9><D8BA><EFBFBD><EFBFBD><EFBFBD>ـفقكلمنهوىيًٌٍَُِّْ<D991><D992><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
},
|
||||
"cp28596": "iso88596",
|
||||
"iso88597": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
‘’£€₯¦§¨©ͺ«¬<C2AC>―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ<CEA0>ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ<CF8D>"
|
||||
},
|
||||
"cp28597": "iso88597",
|
||||
"iso88598": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
<C29F>¢£¤¥¦§¨©×«¬®¯°±²³´µ¶·¸¹÷»¼½¾<C2BD><C2BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>‗אבגדהוזחטיךכלםמןנסעףפץצקרשת<D7A9><D7AA><E2808E>"
|
||||
},
|
||||
"cp28598": "iso88598",
|
||||
"iso88599": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
|
||||
},
|
||||
"cp28599": "iso88599",
|
||||
"iso885910": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
ĄĒĢĪĨͧĻĐŠŦŽŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ"
|
||||
},
|
||||
"cp28600": "iso885910",
|
||||
"iso885911": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู<E0B8B9><E0B8BA><EFBFBD><EFBFBD>฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛<E0B99A><E0B99B><EFBFBD><EFBFBD>"
|
||||
},
|
||||
"cp28601": "iso885911",
|
||||
"iso885913": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
”¢£¤„¦§Ø©Ŗ«¬®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’"
|
||||
},
|
||||
"cp28603": "iso885913",
|
||||
"iso885914": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ"
|
||||
},
|
||||
"cp28604": "iso885914",
|
||||
"iso885915": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
|
||||
},
|
||||
"cp28605": "iso885915",
|
||||
"iso885916": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
ĄąŁ€„Чš©Ș«ŹźŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ"
|
||||
},
|
||||
"cp28606": "iso885916",
|
||||
"cp437": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
|
||||
},
|
||||
"ibm437": "cp437",
|
||||
"csibm437": "cp437",
|
||||
"cp737": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ "
|
||||
},
|
||||
"ibm737": "cp737",
|
||||
"csibm737": "cp737",
|
||||
"cp775": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’±“¾¶§÷„°∙·¹³²■ "
|
||||
},
|
||||
"ibm775": "cp775",
|
||||
"csibm775": "cp775",
|
||||
"cp850": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´±‗¾¶§÷¸°¨·¹³²■ "
|
||||
},
|
||||
"ibm850": "cp850",
|
||||
"csibm850": "cp850",
|
||||
"cp852": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´˝˛ˇ˘§÷¸°¨˙űŘř■ "
|
||||
},
|
||||
"ibm852": "cp852",
|
||||
"csibm852": "cp852",
|
||||
"cp855": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№ыЫзЗшШэЭщЩчЧ§■ "
|
||||
},
|
||||
"ibm855": "cp855",
|
||||
"csibm855": "cp855",
|
||||
"cp856": {
|
||||
"type": "_sbcs",
|
||||
"chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת<D7A9>£<EFBFBD>×<EFBFBD><C397><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>®¬½¼<C2BD>«»░▒▓│┤<E29482><E294A4><EFBFBD>©╣║╗╝¢¥┐└┴┬├─┼<E29480><E294BC>╚╔╩╦╠═╬¤<E295AC><C2A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>┘┌█▄¦<E29684>▀<EFBFBD><E29680><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¯´±‗¾¶§÷¸°¨·¹³²■ "
|
||||
},
|
||||
"ibm856": "cp856",
|
||||
"csibm856": "cp856",
|
||||
"cp857": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ<C38B>ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ<C395>×ÚÛÙìÿ¯´±<C2AD>¾¶§÷¸°¨·¹³²■ "
|
||||
},
|
||||
"ibm857": "cp857",
|
||||
"csibm857": "cp857",
|
||||
"cp858": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´±‗¾¶§÷¸°¨·¹³²■ "
|
||||
},
|
||||
"ibm858": "cp858",
|
||||
"csibm858": "cp858",
|
||||
"cp860": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
|
||||
},
|
||||
"ibm860": "cp860",
|
||||
"csibm860": "cp860",
|
||||
"cp861": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
|
||||
},
|
||||
"ibm861": "cp861",
|
||||
"csibm861": "cp861",
|
||||
"cp862": {
|
||||
"type": "_sbcs",
|
||||
"chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
|
||||
},
|
||||
"ibm862": "cp862",
|
||||
"csibm862": "cp862",
|
||||
"cp863": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
|
||||
},
|
||||
"ibm863": "cp863",
|
||||
"csibm863": "cp863",
|
||||
"cp864": {
|
||||
"type": "_sbcs",
|
||||
"chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ<EFBBB7><EFBBB8>ﻻﻼ<EFBBBB> ﺂ£¤ﺄ<C2A4><EFBA84>ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■<EFBBB1>"
|
||||
},
|
||||
"ibm864": "cp864",
|
||||
"csibm864": "cp864",
|
||||
"cp865": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
|
||||
},
|
||||
"ibm865": "cp865",
|
||||
"csibm865": "cp865",
|
||||
"cp866": {
|
||||
"type": "_sbcs",
|
||||
"chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "
|
||||
},
|
||||
"ibm866": "cp866",
|
||||
"csibm866": "cp866",
|
||||
"cp869": {
|
||||
"type": "_sbcs",
|
||||
"chars": "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ά<EFBFBD>·¬¦‘’Έ―ΉΊΪΌ<CEAA><CE8C>ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄±υφχ§ψ΅°¨ωϋΰώ■ "
|
||||
},
|
||||
"ibm869": "cp869",
|
||||
"csibm869": "cp869",
|
||||
"cp922": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
¡¢£¤¥¦§¨©ª«¬®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"
|
||||
},
|
||||
"ibm922": "cp922",
|
||||
"csibm922": "cp922",
|
||||
"cp1046": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ<EFBBAC>"
|
||||
},
|
||||
"ibm1046": "cp1046",
|
||||
"csibm1046": "cp1046",
|
||||
"cp1124": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
ЁЂҐЄЅІЇЈЉЊЋЌЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"
|
||||
},
|
||||
"ibm1124": "cp1124",
|
||||
"csibm1124": "cp1124",
|
||||
"cp1125": {
|
||||
"type": "_sbcs",
|
||||
"chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "
|
||||
},
|
||||
"ibm1125": "cp1125",
|
||||
"csibm1125": "cp1125",
|
||||
"cp1129": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
¡¢£¤¥¦§œ©ª«¬®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
|
||||
},
|
||||
"ibm1129": "cp1129",
|
||||
"csibm1129": "cp1129",
|
||||
"cp1133": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ<E0BAAD><E0BAAE><EFBFBD>ຯະາຳິີຶືຸູຼັົຽ<E0BABB><E0BABD><EFBFBD>ເແໂໃໄ່້໊໋໌ໍໆ<E0BB8D>ໜໝ₭<E0BB9D><E282AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>໐໑໒໓໔໕໖໗໘໙<E0BB98><E0BB99>¢¬¦<C2AC>"
|
||||
},
|
||||
"ibm1133": "cp1133",
|
||||
"csibm1133": "cp1133",
|
||||
"cp1161": {
|
||||
"type": "_sbcs",
|
||||
"chars": "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "
|
||||
},
|
||||
"ibm1161": "cp1161",
|
||||
"csibm1161": "cp1161",
|
||||
"cp1162": {
|
||||
"type": "_sbcs",
|
||||
"chars": "€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู<E0B8B9><E0B8BA><EFBFBD><EFBFBD>฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛<E0B99A><E0B99B><EFBFBD><EFBFBD>"
|
||||
},
|
||||
"ibm1162": "cp1162",
|
||||
"csibm1162": "cp1162",
|
||||
"cp1163": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
¡¢£€¥¦§œ©ª«¬®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
|
||||
},
|
||||
"ibm1163": "cp1163",
|
||||
"csibm1163": "cp1163",
|
||||
"maccroatian": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊<C3B7>©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"
|
||||
},
|
||||
"maccyrillic": {
|
||||
"type": "_sbcs",
|
||||
"chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
|
||||
},
|
||||
"macgreek": {
|
||||
"type": "_sbcs",
|
||||
"chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ<CE90>"
|
||||
},
|
||||
"maciceland": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ<C393>ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
|
||||
},
|
||||
"macroman": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ<C393>ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
|
||||
},
|
||||
"macromania": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ<C393>ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
|
||||
},
|
||||
"macthai": {
|
||||
"type": "_sbcs",
|
||||
"chars": "«»…“”<E2809D>•‘’<E28098> กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©<C2AE><C2A9><EFBFBD><EFBFBD>"
|
||||
},
|
||||
"macturkish": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ<C393>ÒÚÛÙ<C39B>ˆ˜¯˘˙˚¸˝˛ˇ"
|
||||
},
|
||||
"macukraine": {
|
||||
"type": "_sbcs",
|
||||
"chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
|
||||
},
|
||||
"koi8r": {
|
||||
"type": "_sbcs",
|
||||
"chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
|
||||
},
|
||||
"koi8u": {
|
||||
"type": "_sbcs",
|
||||
"chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
|
||||
},
|
||||
"koi8ru": {
|
||||
"type": "_sbcs",
|
||||
"chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
|
||||
},
|
||||
"koi8t": {
|
||||
"type": "_sbcs",
|
||||
"chars": "қғ‚Ғ„…†‡<E280A0>‰ҳ‹ҲҷҶ<D2B7>Қ‘’“”•–—<E28093>™<EFBFBD>›<EFBFBD><E280BA><EFBFBD><EFBFBD><EFBFBD>ӯӮё¤ӣ¦§<C2A6><C2A7><EFBFBD>«¬®<C2AD>°±²Ё<C2B2>Ӣ¶·<C2B6>№<EFBFBD>»<EFBFBD><C2BB><EFBFBD>©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
|
||||
},
|
||||
"armscii8": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
<C29F>և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚<D686>"
|
||||
},
|
||||
"rk1048": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—<E28093>™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
|
||||
},
|
||||
"tcvn": {
|
||||
"type": "_sbcs",
|
||||
"chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"
|
||||
},
|
||||
"georgianacademy": {
|
||||
"type": "_sbcs",
|
||||
"chars": "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
|
||||
},
|
||||
"georgianps": {
|
||||
"type": "_sbcs",
|
||||
"chars": "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
|
||||
},
|
||||
"pt154": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
|
||||
},
|
||||
"viscii": {
|
||||
"type": "_sbcs",
|
||||
"chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"
|
||||
},
|
||||
"iso646cn": {
|
||||
"type": "_sbcs",
|
||||
"chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾<E280BE><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
},
|
||||
"iso646jp": {
|
||||
"type": "_sbcs",
|
||||
"chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾<E280BE><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
},
|
||||
"hproman8": {
|
||||
"type": "_sbcs",
|
||||
"chars": "
ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±<C2BB>"
|
||||
},
|
||||
"macintosh": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ<C393>ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
|
||||
},
|
||||
"ascii": {
|
||||
"type": "_sbcs",
|
||||
"chars": "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
},
|
||||
"tis620": {
|
||||
"type": "_sbcs",
|
||||
"chars": "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู<E0B8B9><E0B8BA><EFBFBD><EFBFBD>฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛<E0B99A><E0B99B><EFBFBD><EFBFBD>"
|
||||
}
|
||||
}
|
169
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data.js
generated
vendored
Normal file
169
tasks/makepot/node_modules/grunt-wp-i18n/node_modules/gettext-parser/node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data.js
generated
vendored
Normal file
@ -0,0 +1,169 @@
|
||||
"use strict"
|
||||
|
||||
// Manually added data to be used by sbcs codec in addition to generated one.
|
||||
|
||||
module.exports = {
|
||||
// Not supported by iconv, not sure why.
|
||||
"10029": "maccenteuro",
|
||||
"maccenteuro": {
|
||||
"type": "_sbcs",
|
||||
"chars": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"
|
||||
},
|
||||
|
||||
"808": "cp808",
|
||||
"ibm808": "cp808",
|
||||
"cp808": {
|
||||
"type": "_sbcs",
|
||||
"chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "
|
||||
},
|
||||
|
||||
// Aliases of generated encodings.
|
||||
"ascii8bit": "ascii",
|
||||
"usascii": "ascii",
|
||||
"ansix34": "ascii",
|
||||
"ansix341968": "ascii",
|
||||
"ansix341986": "ascii",
|
||||
"csascii": "ascii",
|
||||
"cp367": "ascii",
|
||||
"ibm367": "ascii",
|
||||
"isoir6": "ascii",
|
||||
"iso646us": "ascii",
|
||||
"iso646irv": "ascii",
|
||||
"us": "ascii",
|
||||
|
||||
"latin1": "iso88591",
|
||||
"latin2": "iso88592",
|
||||
"latin3": "iso88593",
|
||||
"latin4": "iso88594",
|
||||
"latin5": "iso88599",
|
||||
"latin6": "iso885910",
|
||||
"latin7": "iso885913",
|
||||
"latin8": "iso885914",
|
||||
"latin9": "iso885915",
|
||||
"latin10": "iso885916",
|
||||
|
||||
"csisolatin1": "iso88591",
|
||||
"csisolatin2": "iso88592",
|
||||
"csisolatin3": "iso88593",
|
||||
"csisolatin4": "iso88594",
|
||||
"csisolatincyrillic": "iso88595",
|
||||
"csisolatinarabic": "iso88596",
|
||||
"csisolatingreek" : "iso88597",
|
||||
"csisolatinhebrew": "iso88598",
|
||||
"csisolatin5": "iso88599",
|
||||
"csisolatin6": "iso885910",
|
||||
|
||||
"l1": "iso88591",
|
||||
"l2": "iso88592",
|
||||
"l3": "iso88593",
|
||||
"l4": "iso88594",
|
||||
"l5": "iso88599",
|
||||
"l6": "iso885910",
|
||||
"l7": "iso885913",
|
||||
"l8": "iso885914",
|
||||
"l9": "iso885915",
|
||||
"l10": "iso885916",
|
||||
|
||||
"isoir14": "iso646jp",
|
||||
"isoir57": "iso646cn",
|
||||
"isoir100": "iso88591",
|
||||
"isoir101": "iso88592",
|
||||
"isoir109": "iso88593",
|
||||
"isoir110": "iso88594",
|
||||
"isoir144": "iso88595",
|
||||
"isoir127": "iso88596",
|
||||
"isoir126": "iso88597",
|
||||
"isoir138": "iso88598",
|
||||
"isoir148": "iso88599",
|
||||
"isoir157": "iso885910",
|
||||
"isoir166": "tis620",
|
||||
"isoir179": "iso885913",
|
||||
"isoir199": "iso885914",
|
||||
"isoir203": "iso885915",
|
||||
"isoir226": "iso885916",
|
||||
|
||||
"cp819": "iso88591",
|
||||
"ibm819": "iso88591",
|
||||
|
||||
"cyrillic": "iso88595",
|
||||
|
||||
"arabic": "iso88596",
|
||||
"arabic8": "iso88596",
|
||||
"ecma114": "iso88596",
|
||||
"asmo708": "iso88596",
|
||||
|
||||
"greek" : "iso88597",
|
||||
"greek8" : "iso88597",
|
||||
"ecma118" : "iso88597",
|
||||
"elot928" : "iso88597",
|
||||
|
||||
"hebrew": "iso88598",
|
||||
"hebrew8": "iso88598",
|
||||
|
||||
"turkish": "iso88599",
|
||||
"turkish8": "iso88599",
|
||||
|
||||
"thai": "iso885911",
|
||||
"thai8": "iso885911",
|
||||
|
||||
"celtic": "iso885914",
|
||||
"celtic8": "iso885914",
|
||||
"isoceltic": "iso885914",
|
||||
|
||||
"tis6200": "tis620",
|
||||
"tis62025291": "tis620",
|
||||
"tis62025330": "tis620",
|
||||
|
||||
"10000": "macroman",
|
||||
"10006": "macgreek",
|
||||
"10007": "maccyrillic",
|
||||
"10079": "maciceland",
|
||||
"10081": "macturkish",
|
||||
|
||||
"cspc8codepage437": "cp437",
|
||||
"cspc775baltic": "cp775",
|
||||
"cspc850multilingual": "cp850",
|
||||
"cspcp852": "cp852",
|
||||
"cspc862latinhebrew": "cp862",
|
||||
"cpgr": "cp869",
|
||||
|
||||
"msee": "cp1250",
|
||||
"mscyrl": "cp1251",
|
||||
"msansi": "cp1252",
|
||||
"msgreek": "cp1253",
|
||||
"msturk": "cp1254",
|
||||
"mshebr": "cp1255",
|
||||
"msarab": "cp1256",
|
||||
"winbaltrim": "cp1257",
|
||||
|
||||
"cp20866": "koi8r",
|
||||
"20866": "koi8r",
|
||||
"ibm878": "koi8r",
|
||||
"cskoi8r": "koi8r",
|
||||
|
||||
"cp21866": "koi8u",
|
||||
"21866": "koi8u",
|
||||
"ibm1168": "koi8u",
|
||||
|
||||
"strk10482002": "rk1048",
|
||||
|
||||
"tcvn5712": "tcvn",
|
||||
"tcvn57121": "tcvn",
|
||||
|
||||
"gb198880": "iso646cn",
|
||||
"cn": "iso646cn",
|
||||
|
||||
"csiso14jisc6220ro": "iso646jp",
|
||||
"jisc62201969ro": "iso646jp",
|
||||
"jp": "iso646jp",
|
||||
|
||||
"cshproman8": "hproman8",
|
||||
"r8": "hproman8",
|
||||
"roman8": "hproman8",
|
||||
"xroman8": "hproman8",
|
||||
"ibm1051": "hproman8",
|
||||
|
||||
"mac": "macintosh",
|
||||
"csmacintosh": "macintosh",
|
||||
};
|
||||
|
@ -0,0 +1,122 @@
|
||||
[
|
||||
["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],
|
||||
["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],
|
||||
["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],
|
||||
["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒÊ̄ẾÊ̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],
|
||||
["88a1","ǜüê̄ếê̌ềêɡ⏚⏛"],
|
||||
["8940","𪎩𡅅"],
|
||||
["8943","攊"],
|
||||
["8946","丽滝鵎釟"],
|
||||
["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],
|
||||
["89a1","琑糼緍楆竉刧"],
|
||||
["89ab","醌碸酞肼"],
|
||||
["89b0","贋胶𠧧"],
|
||||
["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],
|
||||
["89c1","溚舾甙"],
|
||||
["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],
|
||||
["8a40","𧶄唥"],
|
||||
["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],
|
||||
["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],
|
||||
["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],
|
||||
["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],
|
||||
["8aac","䠋𠆩㿺塳𢶍"],
|
||||
["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],
|
||||
["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],
|
||||
["8ac9","𪘁𠸉𢫏𢳉"],
|
||||
["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],
|
||||
["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],
|
||||
["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],
|
||||
["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],
|
||||
["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],
|
||||
["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],
|
||||
["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],
|
||||
["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],
|
||||
["8ca1","𣏹椙橃𣱣泿"],
|
||||
["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],
|
||||
["8cc9","顨杫䉶圽"],
|
||||
["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],
|
||||
["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],
|
||||
["8d40","𠮟"],
|
||||
["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],
|
||||
["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],
|
||||
["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],
|
||||
["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],
|
||||
["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],
|
||||
["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],
|
||||
["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],
|
||||
["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],
|
||||
["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],
|
||||
["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],
|
||||
["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],
|
||||
["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],
|
||||
["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],
|
||||
["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],
|
||||
["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],
|
||||
["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],
|
||||
["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],
|
||||
["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],
|
||||
["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],
|
||||
["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],
|
||||
["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],
|
||||
["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],
|
||||
["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],
|
||||
["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],
|
||||
["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],
|
||||
["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],
|
||||
["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],
|
||||
["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],
|
||||
["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],
|
||||
["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],
|
||||
["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],
|
||||
["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],
|
||||
["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],
|
||||
["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],
|
||||
["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],
|
||||
["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],
|
||||
["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],
|
||||
["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],
|
||||
["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],
|
||||
["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],
|
||||
["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],
|
||||
["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],
|
||||
["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],
|
||||
["9fae","酙隁酜"],
|
||||
["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],
|
||||
["9fc1","𤤙盖鮝个𠳔莾衂"],
|
||||
["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],
|
||||
["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],
|
||||
["9fe7","毺蠘罸"],
|
||||
["9feb","嘠𪙊蹷齓"],
|
||||
["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],
|
||||
["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],
|
||||
["a055","𡠻𦸅"],
|
||||
["a058","詾𢔛"],
|
||||
["a05b","惽癧髗鵄鍮鮏蟵"],
|
||||
["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],
|
||||
["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],
|
||||
["a0a1","嵗𨯂迚𨸹"],
|
||||
["a0a6","僙𡵆礆匲阸𠼻䁥"],
|
||||
["a0ae","矾"],
|
||||
["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],
|
||||
["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],
|
||||
["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],
|
||||
["a3c0","␀",31,"␡"],
|
||||
["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23],
|
||||
["c740","す",58,"ァアィイ"],
|
||||
["c7a1","ゥ",81,"А",5,"ЁЖ",4],
|
||||
["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],
|
||||
["c8a1","龰冈龱𧘇"],
|
||||
["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],
|
||||
["c8f5","ʃɐɛɔɵœøŋʊɪ"],
|
||||
["f9fe","■"],
|
||||
["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],
|
||||
["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],
|
||||
["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],
|
||||
["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],
|
||||
["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],
|
||||
["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],
|
||||
["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],
|
||||
["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],
|
||||
["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],
|
||||
["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]
|
||||
]
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user