linkedin2cv 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
});
|