Closes #47. Add Google Analytics.

This commit is contained in:
Glavin Wiechert 2014-07-12 12:02:21 -03:00
parent 667bdececb
commit d8fb27289d
4 changed files with 57 additions and 5 deletions

View File

@ -2,8 +2,8 @@
> [Beautify](https://github.com/einars/js-beautify) > [Beautify](https://github.com/einars/js-beautify)
HTML (including [Handlebars](http://handlebarsjs.com/)), HTML (including [Handlebars](http://handlebarsjs.com/)),
CSS (including [Sass](http://sass-lang.com/) and [LESS](http://lesscss.org/)) CSS (including [Sass](http://sass-lang.com/) and [LESS](http://lesscss.org/)),
and JavaScript in Atom. JavaScript, and much more in Atom.
Atom Package: https://atom.io/packages/atom-beautify Atom Package: https://atom.io/packages/atom-beautify
@ -40,10 +40,29 @@ It will only beautify selected text, if a selection is found - if not, the whole
You can also type `ctrl-alt-b` as a shortcut or click `Packages > Beautify` in the menu. You can also type `ctrl-alt-b` as a shortcut or click `Packages > Beautify` in the menu.
#### Custom Keyboard Shortcuts
See [Keymaps In-Depth](https://atom.io/docs/latest/advanced/keymaps) for more details.
For example:
```coffeescript
'.editor': # Available from Editor only
'ctrl-alt-b': 'beautify'
```
### Package Options ### Package Options
- `beautifyOnSave`
You can also choose to beautify on every file save. You can also choose to beautify on every file save.
- `googleAnalytics`
There is Google Analytics to track what languages
are being used the most and other stats.
Everything is anonymized and no personal information,
such as source code, is sent to Google.
See https://github.com/Glavin001/atom-beautify/issues/47
for more details.
## Configuration ## Configuration

View File

@ -297,6 +297,7 @@ function handleSaveEvent() {
} }
plugin.configDefaults = _.merge({ plugin.configDefaults = _.merge({
googleAnalytics: true,
beautifyOnSave: false beautifyOnSave: false
}, defaultLanguageOptions); }, defaultLanguageOptions);

View File

@ -14,6 +14,8 @@ var beautifySQL = require('./langs/sql-beautify');
var beautifyPHP = require('./langs/php-beautify'); var beautifyPHP = require('./langs/php-beautify');
var beautifyPython = require('./langs/python-beautify'); var beautifyPython = require('./langs/python-beautify');
var beautifyRuby = require('./langs/ruby-beautify'); var beautifyRuby = require('./langs/ruby-beautify');
var NA = require('nodealytics');
var pkg = require('../package.json');
module.exports = { module.exports = {
@ -68,6 +70,8 @@ module.exports = {
// Process each language // Process each language
beautify: function (text, grammar, allOptions, beautifyCompleted) { beautify: function (text, grammar, allOptions, beautifyCompleted) {
var self = this; var self = this;
// Beautify!
var unsupportedGrammar = false;
switch (grammar) { switch (grammar) {
case 'JSON': case 'JSON':
// Treat JSON as JavaScript, because it will support comments. // Treat JSON as JavaScript, because it will support comments.
@ -104,14 +108,41 @@ module.exports = {
beautifyPHP(text, self.getOptions('php', allOptions), beautifyCompleted); beautifyPHP(text, self.getOptions('php', allOptions), beautifyCompleted);
break; break;
case 'Python': case 'Python':
beautifyPython(text, self.getOptions('python', allOptions), beautifyCompleted); beautifyPython(text, self.getOptions('python', allOptions),
beautifyCompleted);
break; break;
case 'Ruby': case 'Ruby':
beautifyRuby(text, self.getOptions('ruby', allOptions), beautifyCompleted); beautifyRuby(text, self.getOptions('ruby', allOptions), beautifyCompleted);
break; break;
default: default:
return; unsupportedGrammar = true;
} }
// Google Analytics
if (atom.config.get('atom-beautify.googleAnalytics')) {
NA.initialize('UA-52729731-2', 'https://atom.io/packages/atom-beautify',
function () {
// category, action, label, value
NA.trackEvent('grammar', grammar, function (err, resp) {
// console.log(err, resp);
// if (!err && resp.statusCode === 200) {
// console.log('Event has been tracked with Google Analytics');
// }
});
NA.trackEvent('version', pkg.version, function (err, resp) {
// console.log(err, resp);
// if (!err && resp.statusCode === 200) {
// console.log('Event has been tracked with Google Analytics');
// }
});
if (unsupportedGrammar) {
NA.trackEvent('unsupportedGrammar', grammar, function (err, resp) {
//
});
}
});
}
}, },
getOptions: function (selection, allOptions) { getOptions: function (selection, allOptions) {

View File

@ -72,7 +72,8 @@
"lodash": "2.4.1", "lodash": "2.4.1",
"strip-json-comments": "^0.1.3", "strip-json-comments": "^0.1.3",
"js-yaml": "^3.0.2", "js-yaml": "^3.0.2",
"temp": "^0.8.0" "temp": "^0.8.0",
"nodealytics": "0.0.6"
}, },
"activationEvents": [ "activationEvents": [
"beautify" "beautify"