Skip to content

Commit 0b21830

Browse files
committed
saving to github
0 parents  commit 0b21830

17 files changed

+534
-0
lines changed

.bowerrc

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"directory": "bower_components",
3+
"interactive": false
4+
}

.gitignore

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
*/*.iml
2+
*.iml
3+
.idea
4+
*/log/*
5+
log/
6+
logs/
7+
tmp/
8+
.log
9+
#OSX
10+
.DS_Store
11+
nohup.out
12+
13+
*.xml
14+
coverage/
15+
node_modules/
16+
build/
17+
npm-debug.log
18+
bower_components/

.travis.yml

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
language: node_js
2+
node_js:
3+
- "0.12"
4+
branches:
5+
only:
6+
- master
7+
8+
sudo: false

README.md

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
angular-simple-logger (nemLogging.nemSimpleLogger)
2+
==============
3+
[![Dependencies](https://david-dm.org/nmccready/angular-simple-logger.png)](https://david-dm.org/nmccready/angular-simple-logger) 
4+
[![Dependencies](https://david-dm.org/nmccready/angular-simple-logger.png)](https://david-dm.org/nmccready/angular-simple-logger) 
5+
[![Build Status](https://travis-ci.org/nmccready/angular-simple-logger.png?branch=master)](https://travis-ci.org/nmccready/angular-simple-logger)
6+
7+
8+
### Purpose:
9+
To have simplified log levels where a supporting angular module's log levels are independent of the application.
10+
11+
12+
### Basic use:
13+
14+
```js
15+
angular.module('someApp', ['nemLogging'])
16+
//note this can be any type of injectable angular dependency (factory, service.. etc)
17+
.controller("someController", function ($scope, nemLogger) {
18+
nemLogger.doLog = true; //default is true
19+
nemLogger.currentLevel = nemLogger.LEVELS.debug;//defaults to error only
20+
});
21+
```
22+
23+
### Create a Custom Independent Loggers
24+
*(maybe 3 for one lib)*
25+
26+
```js
27+
angular.module('someApp', ['nemLogging'])
28+
//note this can be any type of injectable angular dependency (factory, service.. etc)
29+
.service("apiLogger", function ($scope, nemLogger) {
30+
var logger = nemLogger.spawn();
31+
logger.currentLevel = logger.LEVELS.warn;
32+
return logger;
33+
})
34+
.service("businessLogicLogger", function ($scope, nemLogger) {
35+
var logger = nemLogger.spawn();
36+
logger.currentLevel = logger.LEVELS.error;
37+
return logger;
38+
})
39+
.service("terseLogger", function ($scope, nemLogger) {
40+
var logger = nemLogger.spawn();
41+
logger.currentLevel = logger.LEVELS.info;
42+
return logger;
43+
});
44+
```
45+
46+
### API
47+
Underneath it all it is still calling `$log` so calling the logger for logging itself is the same.
48+
49+
- LEVELS: available are `log, info, debug, warn, error`
50+
51+
- doLog (boolean) - deaults to true. If set to false all logging for that logger instance is disabled.
52+
53+
- currentLevel (number) - defaults to `error: 5` corresponds to the current log level provided by `LEVELS`.

bower.json

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "angular-simple-logger",
3+
"version": "0.0.1",
4+
"description": "Basic logger with level logging which can also be independent.",
5+
"main": "./dist/index.js",
6+
"homepage": "https://github.com/nmccready/angular-simple-logger",
7+
"repository": {
8+
"type": "git",
9+
"url": "git://github.com/nmccready/angular-simple-logger.git"
10+
},
11+
"author": "Nicholas McCready",
12+
"license": "MIT",
13+
"dependencies": {
14+
"angular": "^1.2"
15+
},
16+
"devDependencies": {
17+
"angular-mocks": "^1.2"
18+
}
19+
}

coffeelint.json

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
{
2+
"camel_case_classes": {
3+
"level": "error"
4+
},
5+
"max_line_length": {
6+
"value": 125,
7+
"level": "ignore",
8+
"limitComments": false
9+
},
10+
"no_backticks": {
11+
"level": "ignore"
12+
},
13+
"no_debugger": {
14+
"level": "warn"
15+
},
16+
"no_plusplus": {
17+
"level": "error"
18+
},
19+
"no_stand_alone_at": {
20+
"level": "ignore"
21+
},
22+
"no_tabs": {
23+
"level": "error"
24+
},
25+
"no_throwing_strings": {
26+
"level": "warn"
27+
},
28+
"no_trailing_semicolons": {
29+
"level": "error"
30+
},
31+
"no_trailing_whitespace": {
32+
"level": "error",
33+
"allowed_in_comments": true,
34+
"allowed_in_empty_lines": true
35+
},
36+
"no_unnecessary_double_quotes": {
37+
"level": "error"
38+
},
39+
"no_unnecessary_fat_arrows": {
40+
"level": "error"
41+
},
42+
"non_empty_constructor_needs_parens": {
43+
"level": "ignore"
44+
},
45+
"no_interpolation_in_single_quotes":{
46+
"level": "error"
47+
}
48+
}

dist/index.js

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/**
2+
* angular-simple-logger
3+
*
4+
* @version: 0.0.1
5+
* @author: Nicholas McCready
6+
* @date: Thu Sep 03 2015 03:19:15 GMT-0400 (EDT)
7+
* @license: MIT
8+
*/angular.module('nemLogging', []).service('nemSimpleLogger', [
9+
'$log', function($log) {
10+
var LEVELS, Logger, _fns, log, maybeExecLevel;
11+
_fns = ['log', 'info', 'debug', 'warn', 'error'];
12+
LEVELS = {
13+
log: 1,
14+
info: 2,
15+
debug: 3,
16+
warn: 4,
17+
error: 5
18+
};
19+
maybeExecLevel = function(level, current, fn) {
20+
if (level >= current) {
21+
return fn();
22+
}
23+
};
24+
log = function(logLevelFnName, msg) {
25+
if ($log != null) {
26+
return $log[logLevelFnName](msg);
27+
} else {
28+
return console[logLevelFnName](msg);
29+
}
30+
};
31+
Logger = (function() {
32+
function Logger() {
33+
var logFns;
34+
this.doLog = true;
35+
logFns = {};
36+
_fns.forEach((function(_this) {
37+
return function(level) {
38+
return logFns[level] = function(msg) {
39+
if (_this.doLog) {
40+
return maybeExecLevel(LEVELS[level], _this.currentLevel, function() {
41+
return log(level, msg);
42+
});
43+
}
44+
};
45+
};
46+
})(this));
47+
this.LEVELS = LEVELS;
48+
this.currentLevel = LEVELS.error;
49+
_fns.forEach((function(_this) {
50+
return function(fnName) {
51+
return _this[fnName] = logFns[fnName];
52+
};
53+
})(this));
54+
}
55+
56+
Logger.prototype.spawn = function() {
57+
return new Logger();
58+
};
59+
60+
Logger.prototype.setLog = function(someLogger) {
61+
return $log = someLogger;
62+
};
63+
64+
return Logger;
65+
66+
})();
67+
return new Logger();
68+
}
69+
]);

gulp/index.coffee

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
require './tasks/'
2+
gulp = require 'gulp'
3+
4+
gulp.task 'default', gulp.series 'clean', 'build', 'spec' #, 'watch'

gulp/tasks/build.coffee

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
gulp = require 'gulp'
2+
gulpif = require 'gulp-if'
3+
insert = require 'gulp-insert'
4+
ourPackage = require '../../package.json'
5+
coffeelint = require 'gulp-coffeelint'
6+
coffee = require 'gulp-coffee'
7+
concat = require 'gulp-concat'
8+
{log} = require 'gulp-util'
9+
10+
coffeeOptions =
11+
bare: true
12+
date = new Date()
13+
14+
header =
15+
"""
16+
/**
17+
* #{ourPackage.name}
18+
*
19+
* @version: #{ourPackage.version}
20+
* @author: #{ourPackage.author}
21+
* @date: #{date.toString()}
22+
* @license: #{ourPackage.license}
23+
*/
24+
"""
25+
26+
gulp.task 'build', ->
27+
gulp.src('src/*.coffee')
28+
.pipe gulpif(/[.]coffee$/,coffeelint())
29+
.pipe gulpif(/[.]coffee$/,coffeelint.reporter())
30+
.pipe gulpif(/[.]coffee$/,coffee(coffeeOptions).on('error', log))
31+
.pipe(insert.prepend(header))
32+
.pipe concat 'index.js'
33+
.pipe(gulp.dest 'dist' )

gulp/tasks/clean.coffee

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
gulp = require 'gulp'
2+
del = require 'del'
3+
4+
gulp.task 'clean', (done) ->
5+
del ['dist', '*.log'], done

gulp/tasks/index.coffee

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
requireDirectory = require 'require-directory'
2+
module.exports = requireDirectory(module)

gulp/tasks/spec.coffee

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
gulp = require 'gulp'
2+
Karma = require('karma').Server
3+
open = require 'gulp-open'
4+
{log} = require 'gulp-util'
5+
6+
karmaConf = require.resolve('../../karma.conf.coffee')
7+
8+
karmaRunner = (done) ->
9+
log '-- Karma Setup --'
10+
try
11+
server = new Karma
12+
configFile: karmaConf
13+
singleRun: true, (code) ->
14+
log "Karma Callback Code: #{code}"
15+
done(code)
16+
server.start()
17+
catch e
18+
log "KARMA ERROR: #{e}"
19+
done(e)
20+
21+
gulp.task 'karma', (done) ->
22+
karmaRunner(done)
23+
24+
gulp.task 'spec', gulp.series 'karma'

gulpfile.coffee

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
###
2+
gulpfile.js
3+
===========
4+
Rather than manage one giant configuration file responsible
5+
for creating multiple tasks, each task has been broken out into
6+
its own file in gulp/tasks. Any file in that folder gets automatically
7+
required by the loop in ./gulp/index.js (required below).
8+
9+
To add a new task, simply add a new task file to gulp/tasks.
10+
###
11+
require('./gulp')

karma.conf.coffee

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
2+
module.exports = (config) ->
3+
config.set
4+
# base path that will be used to resolve all patterns (eg. files, exclude)
5+
basePath: './'
6+
7+
# frameworks to use
8+
# available frameworks: https://npmjs.org/browse/keyword/karma-adapter
9+
frameworks: ['jasmine']
10+
11+
# preprocess matching files before serving them to the browser
12+
# available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
13+
preprocessors: {
14+
'spec/**/*.coffee': ['coffee']
15+
#'_public/*.js': ['coverage']
16+
}
17+
18+
coverageReporter:
19+
reporters:[
20+
{ type : 'html', dir : '_public/coverage/', subdir: 'lib' }
21+
{ type : 'cobertura', dir : '_public/coverage/', subdir: 'lib' }
22+
]
23+
24+
# list of files / patterns to load in the browser
25+
files: [
26+
'node_modules/angular/angular.js'
27+
'node_modules/angular-mocks/angular-mocks.js'
28+
'dist/index.js'
29+
'spec/**/*.spec.coffee'
30+
#do not include those specs for jasmine html runner by karma kama_jasmine_runner.html
31+
{pattern:'*coffee', included: false}
32+
]
33+
34+
# list of files to exclude
35+
exclude: [
36+
]
37+
38+
# test results reporter to use
39+
# possible values: 'dots', 'progress'
40+
# available reporters: https://npmjs.org/browse/keyword/karma-reporter
41+
# NOTE , TODO 'html' reporter use if you want to hit the karma jasmine runner (frequently causes karma to blow up at the end of run),
42+
# test results reporter to use
43+
# possible values: 'dots', 'progress', 'mocha'
44+
reporters: ['mocha']
45+
46+
# htmlReporter:
47+
# middlePathDir: "chrome"
48+
# outputDir: '_public/karma_html',
49+
# templatePath: 'spec/karma_jasmine_runner.html'
50+
51+
# web server port
52+
port: 9876
53+
54+
# enable / disable colors in the output (reporters and logs)
55+
colors: true
56+
57+
# level of logging
58+
# possible values:
59+
# - config.LOG_DISABLE
60+
# - config.LOG_ERROR
61+
# - config.LOG_WARN
62+
# - config.LOG_INFO
63+
# - config.LOG_DEBUG
64+
logLevel: config.LOG_INFO
65+
66+
# enable / disable watching file and executing tests whenever any file changes
67+
autoWatch: false
68+
69+
# start these browsers
70+
# available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
71+
browsers: ['PhantomJS']# options Chrome, PhantomJS
72+
#browserNoActivityTimeout: 200000000000000000000000000000000
73+
# If browser does not capture in given timeout [ms], kill it
74+
captureTimeout: 60000
75+
# Continuous Integration mode
76+
# if true, Karma captures browsers, runs the tests and exits
77+
singleRun: false
78+
79+
plugins: [
80+
'karma-mocha-reporter'
81+
'karma-jasmine'
82+
'karma-coverage'
83+
'karma-chrome-launcher'
84+
'karma-phantomjs-launcher'
85+
'karma-coffee-preprocessor'
86+
]

0 commit comments

Comments
 (0)