linkedin2cv 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.buildpacks +2 -0
- data/.bundle/config +1 -0
- data/.gitignore +7 -0
- data/.node +1 -0
- data/.travis.yml +21 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +119 -0
- data/Procfile +3 -0
- data/README.md +32 -0
- data/Rakefile +6 -0
- data/Vagrantfile +16 -0
- data/app/routes/api.rb +101 -0
- data/app/routes/web.rb +132 -0
- data/app/views/hello.erb +36 -0
- data/app/views/home.erb +12 -0
- data/app/views/index.haml +11 -0
- data/app.rb +26 -0
- data/config.ru +6 -0
- data/config.yml +31 -0
- data/lib/linkedin2cv/cli/command.rb +46 -0
- data/lib/linkedin2cv/converter.rb +116 -0
- data/lib/linkedin2cv/logging.rb +35 -0
- data/lib/linkedin2cv/renderer/latex_renderer.rb +64 -0
- data/lib/linkedin2cv/version.rb +3 -0
- data/linkedin2cv.gemspec +49 -0
- data/public/.bowerrc +3 -0
- data/public/.editorconfig +21 -0
- data/public/.gitattributes +1 -0
- data/public/.gitignore +5 -0
- data/public/.jshintrc +24 -0
- data/public/.travis.yml +7 -0
- data/public/Gruntfile.js +487 -0
- data/public/app/.buildignore +1 -0
- data/public/app/.htaccess +543 -0
- data/public/app/404.html +157 -0
- data/public/app/favicon.ico +0 -0
- data/public/app/images/yeoman.png +0 -0
- data/public/app/index.html +73 -0
- data/public/app/robots.txt +3 -0
- data/public/app/scripts/app.js +20 -0
- data/public/app/scripts/controllers/main.js +21 -0
- data/public/app/scripts/services/linkedin2cv.js +93 -0
- data/public/app/styles/main.scss +95 -0
- data/public/app/views/main.html +23 -0
- data/public/bower.json +19 -0
- data/public/karma-e2e.conf.js +54 -0
- data/public/karma.conf.js +56 -0
- data/public/package.json +41 -0
- data/public/test/.jshintrc +36 -0
- data/public/test/runner.html +10 -0
- data/public/test/spec/controllers/main.js +22 -0
- data/public/test/spec/services/happyapi.js +18 -0
- data/public/test/spec/services/happyservice.js +18 -0
- data/spec/converter_spec.rb +83 -0
- data/spec/mocks/config.yml +31 -0
- data/spec/mocks/profile.json +866 -0
- data/spec/spec_helper.rb +13 -0
- data/templates/cv.erb +327 -0
- data/templates/foo.asciidoc +11 -0
- data/templates/foo.latex +230 -0
- data/test.rb +109 -0
- data/test.sh +6 -0
- data/teust.rb +75 -0
- metadata +434 -0
Binary file
|
Binary file
|
@@ -0,0 +1,73 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
3
|
+
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
4
|
+
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
5
|
+
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
|
6
|
+
<head>
|
7
|
+
<meta charset="utf-8">
|
8
|
+
<title>Linkedin2CV | Linkedin2CV things</title>
|
9
|
+
<meta name="description" content="">
|
10
|
+
<meta name="viewport" content="width=device-width">
|
11
|
+
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
|
12
|
+
<!-- build:css styles/vendor.css -->
|
13
|
+
<!-- bower:css -->
|
14
|
+
<!-- endbower -->
|
15
|
+
<!-- endbuild -->
|
16
|
+
<!-- build:css({.tmp,app}) styles/main.css -->
|
17
|
+
<link rel="stylesheet" href="styles/main.css">
|
18
|
+
<!-- endbuild -->
|
19
|
+
</head>
|
20
|
+
<body ng-app="linkedin2cv App">
|
21
|
+
<!--[if lt IE 7]>
|
22
|
+
<p class="browselinkedin2cv ">You are using an <strong>outdated</strong> browser. Please <a href="http://browselinkedin2cv .com/">upgrade your browser</a> to improve your experience.</p>
|
23
|
+
<![endif]-->
|
24
|
+
|
25
|
+
<!-- Add your site or application content here -->
|
26
|
+
<div class="container" ng-view=""></div>
|
27
|
+
|
28
|
+
<!-- Google Analytics: change UA-XXXXX-X to be your site's ID -->
|
29
|
+
<script>
|
30
|
+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
31
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
32
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
33
|
+
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
34
|
+
|
35
|
+
ga('create', 'UA-XXXXX-X');
|
36
|
+
ga('send', 'pageview');
|
37
|
+
</script>
|
38
|
+
|
39
|
+
<!--[if lt IE 9]>
|
40
|
+
<script src="bower_components/es5-shim/es5-shim.js"></script>
|
41
|
+
<script src="bower_components/json3/lib/json3.min.js"></script>
|
42
|
+
<![endif]-->
|
43
|
+
|
44
|
+
<!-- build:js scripts/vendor.js -->
|
45
|
+
<!-- bower:js -->
|
46
|
+
<script src="bower_components/jquery/dist/jquery.js"></script>
|
47
|
+
<script src="bower_components/angular/angular.js"></script>
|
48
|
+
<script src="bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/affix.js"></script>
|
49
|
+
<script src="bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/alert.js"></script>
|
50
|
+
<script src="bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/button.js"></script>
|
51
|
+
<script src="bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/carousel.js"></script>
|
52
|
+
<script src="bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/collapse.js"></script>
|
53
|
+
<script src="bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/dropdown.js"></script>
|
54
|
+
<script src="bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/tab.js"></script>
|
55
|
+
<script src="bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/transition.js"></script>
|
56
|
+
<script src="bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/scrollspy.js"></script>
|
57
|
+
<script src="bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/modal.js"></script>
|
58
|
+
<script src="bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/tooltip.js"></script>
|
59
|
+
<script src="bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/popover.js"></script>
|
60
|
+
<script src="bower_components/angular-resource/angular-resource.js"></script>
|
61
|
+
<script src="bower_components/angular-cookies/angular-cookies.js"></script>
|
62
|
+
<script src="bower_components/angular-sanitize/angular-sanitize.js"></script>
|
63
|
+
<script src="bower_components/angular-route/angular-route.js"></script>
|
64
|
+
<!-- endbower -->
|
65
|
+
<!-- endbuild -->
|
66
|
+
|
67
|
+
<!-- build:js({.tmp,app}) scripts/scripts.js -->
|
68
|
+
<script src="scripts/app.js"></script>
|
69
|
+
<script src="scripts/controllers/main.js"></script>
|
70
|
+
<script src="scripts/services/linkedin2cv api.js"></script>
|
71
|
+
<!-- endbuild -->
|
72
|
+
</body>
|
73
|
+
</html>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
angular
|
4
|
+
.module('linkedin2cv App', [
|
5
|
+
'ngCookies',
|
6
|
+
'ngResource',
|
7
|
+
'ngSanitize',
|
8
|
+
'ngRoute',
|
9
|
+
'linkedin2cv Services'
|
10
|
+
])
|
11
|
+
.config(function ($routeProvider) {
|
12
|
+
$routeProvider
|
13
|
+
.when('/', {
|
14
|
+
templateUrl: 'views/main.html',
|
15
|
+
controller: 'MainCtrl'
|
16
|
+
})
|
17
|
+
.otherwise({
|
18
|
+
redirectTo: '/'
|
19
|
+
});
|
20
|
+
});
|
@@ -0,0 +1,21 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
angular.module('linkedin2cv App')
|
4
|
+
.controller('MainCtrl', ['$scope', '$http', 'Linkedin2CV', function ($scope, $http, Linkedin2CV) {
|
5
|
+
|
6
|
+
// Default website
|
7
|
+
$scope.message = 'Sockets will replace me - enter stuff above to find out!'
|
8
|
+
|
9
|
+
/**
|
10
|
+
* Generate a Linkedin2CV
|
11
|
+
*/
|
12
|
+
$scope.generateLinkedin2CV = function (ping) {
|
13
|
+
|
14
|
+
var data = Linkedin2CV.getResponse({'message': ping})
|
15
|
+
data.then(function (result) {
|
16
|
+
console.log(result)
|
17
|
+
|
18
|
+
$scope.message = 'API said: ' + result.message;
|
19
|
+
});
|
20
|
+
}
|
21
|
+
}]);
|
@@ -0,0 +1,93 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var linkedin2cv Services = angular.module('linkedin2cv Services', ['ngResource']);
|
4
|
+
|
5
|
+
linkedin2cv Services.factory('Linkedin2CV', ['$q', '$rootScope', '$interval', function($q, $rootScope, $interval) {
|
6
|
+
// We return this object to anything injecting our service
|
7
|
+
var Service = {};
|
8
|
+
|
9
|
+
// Keep a pending request here
|
10
|
+
var callback = {};
|
11
|
+
|
12
|
+
var pongCallback = {};
|
13
|
+
|
14
|
+
var url = 'websocketurl';
|
15
|
+
var ws = new WebSocket(url);
|
16
|
+
|
17
|
+
ws.onopen = function(){
|
18
|
+
console.log("Socket has been opened!");
|
19
|
+
|
20
|
+
pingPong()
|
21
|
+
console.log("Setup game of ping-pong")
|
22
|
+
};
|
23
|
+
|
24
|
+
ws.onclose = function(){
|
25
|
+
console.log("Socket has been closed!");
|
26
|
+
};
|
27
|
+
|
28
|
+
ws.onmessage = function(response) {
|
29
|
+
// Check for ping!
|
30
|
+
var obj = JSON.parse(response.data)
|
31
|
+
console.log(obj.message)
|
32
|
+
|
33
|
+
if (obj.message != 'pong') {
|
34
|
+
listener(obj);
|
35
|
+
}
|
36
|
+
};
|
37
|
+
|
38
|
+
/**
|
39
|
+
* Play ping/pong with the server to ensure keep alive.
|
40
|
+
*
|
41
|
+
* This requires the API to behave. Just send a 'pong' response
|
42
|
+
*
|
43
|
+
* @returns {*}
|
44
|
+
*/
|
45
|
+
function pingPong() {
|
46
|
+
|
47
|
+
var pong = function() {
|
48
|
+
var request = JSON.stringify({'message': 'ping'});
|
49
|
+
console.log('Sending pong request: ' + request);
|
50
|
+
ws.send(request);
|
51
|
+
}
|
52
|
+
|
53
|
+
// Set refresh to every 10s
|
54
|
+
var promise = $interval(pong, 10000);
|
55
|
+
promise.then(function(result) {
|
56
|
+
console.log("got pong result: " + result)
|
57
|
+
});
|
58
|
+
}
|
59
|
+
|
60
|
+
/**
|
61
|
+
* Send a socket request.
|
62
|
+
*
|
63
|
+
* @param request The JSON request.
|
64
|
+
* @param _callback An optional request callback. Generally this is not required.
|
65
|
+
* @returns {*}
|
66
|
+
*/
|
67
|
+
function sendRequest(request, _callback) {
|
68
|
+
var defer = $q.defer();
|
69
|
+
|
70
|
+
if (_callback == null) {
|
71
|
+
callback = {
|
72
|
+
time: new Date(),
|
73
|
+
cb:defer
|
74
|
+
};
|
75
|
+
|
76
|
+
}
|
77
|
+
console.log('Sending request', request);
|
78
|
+
ws.send(JSON.stringify(request));
|
79
|
+
return defer.promise;
|
80
|
+
}
|
81
|
+
|
82
|
+
function listener(data) {
|
83
|
+
$rootScope.$apply(callback.cb.resolve(data));
|
84
|
+
}
|
85
|
+
|
86
|
+
// Define a "getter" for getting some socket data
|
87
|
+
Service.getResponse = function(message) {
|
88
|
+
// Returns a $q.$promise
|
89
|
+
return sendRequest(message);
|
90
|
+
}
|
91
|
+
|
92
|
+
return Service;
|
93
|
+
}]);
|
@@ -0,0 +1,95 @@
|
|
1
|
+
$icon-font-path: "/bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/";
|
2
|
+
|
3
|
+
@import 'bootstrap-sass-official/vendor/assets/stylesheets/bootstrap';
|
4
|
+
|
5
|
+
// bower:scss
|
6
|
+
@import "../bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap.scss";
|
7
|
+
// endbower
|
8
|
+
|
9
|
+
.browselinkedin2cv {
|
10
|
+
margin: 0.2em 0;
|
11
|
+
background: #ccc;
|
12
|
+
color: #000;
|
13
|
+
padding: 0.2em 0;
|
14
|
+
}
|
15
|
+
|
16
|
+
/* Space out content a bit */
|
17
|
+
body {
|
18
|
+
padding-top: 20px;
|
19
|
+
padding-bottom: 20px;
|
20
|
+
}
|
21
|
+
|
22
|
+
/* Everything but the jumbotron gets side spacing for mobile first views */
|
23
|
+
.header,
|
24
|
+
.marketing,
|
25
|
+
.footer {
|
26
|
+
padding-left: 15px;
|
27
|
+
padding-right: 15px;
|
28
|
+
}
|
29
|
+
|
30
|
+
/* Custom page header */
|
31
|
+
.header {
|
32
|
+
border-bottom: 1px solid #e5e5e5;
|
33
|
+
}
|
34
|
+
|
35
|
+
/* Make the masthead heading the same height as the navigation */
|
36
|
+
.header h3 {
|
37
|
+
margin-top: 0;
|
38
|
+
margin-bottom: 0;
|
39
|
+
line-height: 40px;
|
40
|
+
padding-bottom: 19px;
|
41
|
+
}
|
42
|
+
|
43
|
+
/* Custom page footer */
|
44
|
+
.footer {
|
45
|
+
padding-top: 19px;
|
46
|
+
color: #777;
|
47
|
+
border-top: 1px solid #e5e5e5;
|
48
|
+
}
|
49
|
+
|
50
|
+
.container-narrow > hr {
|
51
|
+
margin: 30px 0;
|
52
|
+
}
|
53
|
+
|
54
|
+
/* Main marketing message and sign up button */
|
55
|
+
.jumbotron {
|
56
|
+
text-align: center;
|
57
|
+
border-bottom: 1px solid #e5e5e5;
|
58
|
+
}
|
59
|
+
|
60
|
+
.jumbotron .btn {
|
61
|
+
font-size: 21px;
|
62
|
+
padding: 14px 24px;
|
63
|
+
}
|
64
|
+
|
65
|
+
/* Supporting marketing content */
|
66
|
+
.marketing {
|
67
|
+
margin: 40px 0;
|
68
|
+
}
|
69
|
+
|
70
|
+
.marketing p + h4 {
|
71
|
+
margin-top: 28px;
|
72
|
+
}
|
73
|
+
|
74
|
+
/* Responsive: Portrait tablets and up */
|
75
|
+
@media screen and (min-width: 768px) {
|
76
|
+
.container {
|
77
|
+
max-width: 730px;
|
78
|
+
}
|
79
|
+
|
80
|
+
/* Remove the padding we set earlier */
|
81
|
+
.header,
|
82
|
+
.marketing,
|
83
|
+
.footer {
|
84
|
+
padding-left: 0;
|
85
|
+
padding-right: 0;
|
86
|
+
}
|
87
|
+
/* Space out the masthead */
|
88
|
+
.header {
|
89
|
+
margin-bottom: 30px;
|
90
|
+
}
|
91
|
+
/* Remove the bottom border on the jumbotron for visual effect */
|
92
|
+
.jumbotron {
|
93
|
+
border-bottom: 0;
|
94
|
+
}
|
95
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<div class="header">
|
2
|
+
<ul class="nav nav-pills pull-right">
|
3
|
+
<li class="active"><a ng-href="#">Home</a></li>
|
4
|
+
<li><a ng-href="http://github.com/mefellows/linkedin2cv -generator">About</a></li>
|
5
|
+
</ul>
|
6
|
+
<h1 class="text-muted">Linkedin2CV App</h1>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="jumbotron">
|
10
|
+
<h2>Enter your website</h2 >
|
11
|
+
<input ng-model="website" />
|
12
|
+
<p><a class="btn btn-lg btn-success" ng-click='generateLinkedin2CV(website)'>Search<span class="glyphicon glyphicon-ok"></span></a></p>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<div class="row marketing">
|
16
|
+
<h3 ng-model="message">{{message}}</h3>
|
17
|
+
</table>
|
18
|
+
</div>
|
19
|
+
|
20
|
+
|
21
|
+
<div class="footer">
|
22
|
+
<p>Built with <span class="glyphicon glyphicon-heart"></span> by <a href="http://www.onegeek.com.au">Matt Fellows</a></p>
|
23
|
+
</div>
|
data/public/bower.json
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
{
|
2
|
+
"name": "linkedin2cv -generator",
|
3
|
+
"version": "0.0.0",
|
4
|
+
"dependencies": {
|
5
|
+
"angular": "1.2.15",
|
6
|
+
"json3": "~3.2.6",
|
7
|
+
"es5-shim": "~2.1.0",
|
8
|
+
"jquery": "~1.11.0",
|
9
|
+
"bootstrap-sass-official": "~3.1.0",
|
10
|
+
"angular-resource": "1.2.15",
|
11
|
+
"angular-cookies": "1.2.15",
|
12
|
+
"angular-sanitize": "1.2.15",
|
13
|
+
"angular-route": "1.2.15"
|
14
|
+
},
|
15
|
+
"devDependencies": {
|
16
|
+
"angular-mocks": "1.2.15",
|
17
|
+
"angular-scenario": "1.2.15"
|
18
|
+
}
|
19
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
// Karma configuration
|
2
|
+
// http://karma-runner.github.io/0.10/config/configuration-file.html
|
3
|
+
|
4
|
+
module.exports = function(config) {
|
5
|
+
config.set({
|
6
|
+
// base path, that will be used to resolve files and exclude
|
7
|
+
basePath: '',
|
8
|
+
|
9
|
+
// testing framework to use (jasmine/mocha/qunit/...)
|
10
|
+
frameworks: ['ng-scenario'],
|
11
|
+
|
12
|
+
// list of files / patterns to load in the browser
|
13
|
+
files: [
|
14
|
+
'test/e2e/**/*.js'
|
15
|
+
],
|
16
|
+
|
17
|
+
// list of files / patterns to exclude
|
18
|
+
exclude: [],
|
19
|
+
|
20
|
+
// web server port
|
21
|
+
port: 8080,
|
22
|
+
|
23
|
+
// level of logging
|
24
|
+
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
|
25
|
+
logLevel: config.LOG_INFO,
|
26
|
+
|
27
|
+
|
28
|
+
// enable / disable watching file and executing tests whenever any file changes
|
29
|
+
autoWatch: false,
|
30
|
+
|
31
|
+
|
32
|
+
// Start these browsers, currently available:
|
33
|
+
// - Chrome
|
34
|
+
// - ChromeCanary
|
35
|
+
// - Firefox
|
36
|
+
// - Opera
|
37
|
+
// - Safari (only Mac)
|
38
|
+
// - PhantomJS
|
39
|
+
// - IE (only Windows)
|
40
|
+
browsers: ['Chrome'],
|
41
|
+
|
42
|
+
|
43
|
+
// Continuous Integration mode
|
44
|
+
// if true, it capture browsers, run tests and exit
|
45
|
+
singleRun: false
|
46
|
+
|
47
|
+
// Uncomment the following lines if you are using grunt's server to run the tests
|
48
|
+
// proxies: {
|
49
|
+
// '/': 'http://localhost:9000/'
|
50
|
+
// },
|
51
|
+
// URL root prevent conflicts with the site root
|
52
|
+
// urlRoot: '_karma_'
|
53
|
+
});
|
54
|
+
};
|
@@ -0,0 +1,56 @@
|
|
1
|
+
// Karma configuration
|
2
|
+
// http://karma-runner.github.io/0.10/config/configuration-file.html
|
3
|
+
|
4
|
+
module.exports = function(config) {
|
5
|
+
config.set({
|
6
|
+
// base path, that will be used to resolve files and exclude
|
7
|
+
basePath: '',
|
8
|
+
|
9
|
+
// testing framework to use (jasmine/mocha/qunit/...)
|
10
|
+
frameworks: ['jasmine'],
|
11
|
+
|
12
|
+
// list of files / patterns to load in the browser
|
13
|
+
files: [
|
14
|
+
'app/bower_components/angular/angular.js',
|
15
|
+
'app/bower_components/angular-mocks/angular-mocks.js',
|
16
|
+
'app/bower_components/angular-resource/angular-resource.js',
|
17
|
+
'app/bower_components/angular-cookies/angular-cookies.js',
|
18
|
+
'app/bower_components/angular-sanitize/angular-sanitize.js',
|
19
|
+
'app/bower_components/angular-route/angular-route.js',
|
20
|
+
'app/scripts/*.js',
|
21
|
+
'app/scripts/**/*.js',
|
22
|
+
'test/mock/**/*.js',
|
23
|
+
'test/spec/**/*.js'
|
24
|
+
],
|
25
|
+
|
26
|
+
// list of files / patterns to exclude
|
27
|
+
exclude: [],
|
28
|
+
|
29
|
+
// web server port
|
30
|
+
port: 8080,
|
31
|
+
|
32
|
+
// level of logging
|
33
|
+
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
|
34
|
+
logLevel: config.LOG_INFO,
|
35
|
+
|
36
|
+
|
37
|
+
// enable / disable watching file and executing tests whenever any file changes
|
38
|
+
autoWatch: false,
|
39
|
+
|
40
|
+
|
41
|
+
// Start these browsers, currently available:
|
42
|
+
// - Chrome
|
43
|
+
// - ChromeCanary
|
44
|
+
// - Firefox
|
45
|
+
// - Opera
|
46
|
+
// - Safari (only Mac)
|
47
|
+
// - PhantomJS
|
48
|
+
// - IE (only Windows)
|
49
|
+
browsers: ['Chrome'],
|
50
|
+
|
51
|
+
|
52
|
+
// Continuous Integration mode
|
53
|
+
// if true, it capture browsers, run tests and exit
|
54
|
+
singleRun: false
|
55
|
+
});
|
56
|
+
};
|
data/public/package.json
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
{
|
2
|
+
"name": "linkedin2cv generator",
|
3
|
+
"version": "0.0.0",
|
4
|
+
"dependencies": {},
|
5
|
+
"devDependencies": {
|
6
|
+
"grunt": "~0.4.1",
|
7
|
+
"grunt-autoprefixer": "~0.4.0",
|
8
|
+
"grunt-bower-install": "~1.0.0",
|
9
|
+
"grunt-concurrent": "~0.5.0",
|
10
|
+
"grunt-contrib-clean": "~0.5.0",
|
11
|
+
"grunt-contrib-compass": "~0.7.2",
|
12
|
+
"grunt-contrib-concat": "~0.3.0",
|
13
|
+
"grunt-contrib-connect": "~0.5.0",
|
14
|
+
"grunt-contrib-copy": "~0.4.1",
|
15
|
+
"grunt-contrib-cssmin": "~0.7.0",
|
16
|
+
"grunt-contrib-htmlmin": "~0.1.3",
|
17
|
+
"grunt-contrib-imagemin": "~0.3.0",
|
18
|
+
"grunt-contrib-jshint": "~0.7.1",
|
19
|
+
"grunt-contrib-uglify": "~0.2.0",
|
20
|
+
"grunt-contrib-watch": "~0.5.2",
|
21
|
+
"grunt-google-cdn": "~0.2.0",
|
22
|
+
"grunt-newer": "~0.6.1",
|
23
|
+
"grunt-ngmin": "~0.0.2",
|
24
|
+
"grunt-rev": "~0.1.0",
|
25
|
+
"grunt-svgmin": "~0.2.0",
|
26
|
+
"grunt-usemin": "~2.0.0",
|
27
|
+
"jshint-stylish": "~0.1.3",
|
28
|
+
"load-grunt-tasks": "~0.4.0",
|
29
|
+
"time-grunt": "~0.2.1",
|
30
|
+
"karma-ng-scenario": "^0.1.0",
|
31
|
+
"grunt-karma": "^0.8.3",
|
32
|
+
"karma": "^0.12.16",
|
33
|
+
"karma-ng-html2js-preprocessor": "^0.1.0"
|
34
|
+
},
|
35
|
+
"engines": {
|
36
|
+
"node": ">=0.10.0"
|
37
|
+
},
|
38
|
+
"scripts": {
|
39
|
+
"test": "grunt test"
|
40
|
+
}
|
41
|
+
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
{
|
2
|
+
"node": true,
|
3
|
+
"browser": true,
|
4
|
+
"esnext": true,
|
5
|
+
"bitwise": true,
|
6
|
+
"camelcase": true,
|
7
|
+
"curly": true,
|
8
|
+
"eqeqeq": true,
|
9
|
+
"immed": true,
|
10
|
+
"indent": 2,
|
11
|
+
"latedef": true,
|
12
|
+
"newcap": true,
|
13
|
+
"noarg": true,
|
14
|
+
"quotmark": "single",
|
15
|
+
"regexp": true,
|
16
|
+
"undef": true,
|
17
|
+
"unused": true,
|
18
|
+
"strict": true,
|
19
|
+
"trailing": true,
|
20
|
+
"smarttabs": true,
|
21
|
+
"globals": {
|
22
|
+
"after": false,
|
23
|
+
"afterEach": false,
|
24
|
+
"angular": false,
|
25
|
+
"before": false,
|
26
|
+
"beforeEach": false,
|
27
|
+
"browser": false,
|
28
|
+
"describe": false,
|
29
|
+
"expect": false,
|
30
|
+
"inject": false,
|
31
|
+
"it": false,
|
32
|
+
"jasmine": false,
|
33
|
+
"spyOn": false
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
describe('Controller: MainCtrl', function () {
|
4
|
+
|
5
|
+
// load the controller's module
|
6
|
+
beforeEach(module('linkedin2cv GeneratorApp'));
|
7
|
+
|
8
|
+
var MainCtrl,
|
9
|
+
scope;
|
10
|
+
|
11
|
+
// Initialize the controller and a mock scope
|
12
|
+
beforeEach(inject(function ($controller, $rootScope) {
|
13
|
+
scope = $rootScope.$new();
|
14
|
+
MainCtrl = $controller('MainCtrl', {
|
15
|
+
$scope: scope
|
16
|
+
});
|
17
|
+
}));
|
18
|
+
|
19
|
+
it('should attach a list of awesomeThings to the scope', function () {
|
20
|
+
expect(scope.awesomeThings.length).toBe(3);
|
21
|
+
});
|
22
|
+
});
|
@@ -0,0 +1,18 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
describe('Service: linkedin2cv Api', function () {
|
4
|
+
|
5
|
+
// load the service's module
|
6
|
+
beforeEach(module('linkedin2cv GeneratorApp'));
|
7
|
+
|
8
|
+
// instantiate service
|
9
|
+
var linkedin2cv Api;
|
10
|
+
beforeEach(inject(function (_linkedin2cv Api_) {
|
11
|
+
linkedin2cv Api = _linkedin2cv Api_;
|
12
|
+
}));
|
13
|
+
|
14
|
+
it('should do something', function () {
|
15
|
+
expect(!!linkedin2cv Api).toBe(true);
|
16
|
+
});
|
17
|
+
|
18
|
+
});
|
@@ -0,0 +1,18 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
describe('Service: Linkedin2CVservice', function () {
|
4
|
+
|
5
|
+
// load the service's module
|
6
|
+
beforeEach(module('linkedin2cv GeneratorApp'));
|
7
|
+
|
8
|
+
// instantiate service
|
9
|
+
var Linkedin2CVservice;
|
10
|
+
beforeEach(inject(function (_Linkedin2CVservice_) {
|
11
|
+
Linkedin2CVservice = _Linkedin2CVservice_;
|
12
|
+
}));
|
13
|
+
|
14
|
+
it('should do something', function () {
|
15
|
+
expect(!!Linkedin2CVservice).toBe(true);
|
16
|
+
});
|
17
|
+
|
18
|
+
});
|