slather 1.7.1 → 1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/README.md +20 -9
- data/assets/highlight.pack.js +1 -0
- data/assets/list.min.js +1 -0
- data/assets/slather.css +316 -0
- data/bin/slather +9 -1
- data/lib/slather.rb +2 -0
- data/lib/slather/coverage_file.rb +1 -1
- data/lib/slather/coverage_service/coveralls.rb +55 -10
- data/lib/slather/coverage_service/hardcover.rb +61 -0
- data/lib/slather/coverage_service/html_output.rb +244 -0
- data/lib/slather/project.rb +10 -7
- data/lib/slather/version.rb +1 -1
- data/spec/fixtures/fixtures_html/Branches.m.html +261 -0
- data/spec/fixtures/fixtures_html/BranchesTests.m.html +228 -0
- data/spec/fixtures/fixtures_html/Empty.m.html +30 -0
- data/spec/fixtures/fixtures_html/fixtures.m.html +151 -0
- data/spec/fixtures/fixtures_html/fixturesTests.m.html +216 -0
- data/spec/fixtures/fixtures_html/fixtures_cpp.cpp.html +30 -0
- data/spec/fixtures/fixtures_html/fixtures_m.m.html +30 -0
- data/spec/fixtures/fixtures_html/fixtures_mm.mm.html +30 -0
- data/spec/fixtures/fixtures_html/index.html +134 -0
- data/spec/fixtures/fixtures_html/peekaview.m.html +190 -0
- data/spec/fixtures/fixtures_html/peekaviewTests.m.html +206 -0
- data/spec/slather/coverage_service/coveralls_spec.rb +25 -6
- data/spec/slather/coverage_service/hardcover_spec.rb +87 -0
- data/spec/slather/coverage_service/html_output_spec.rb +179 -0
- data/spec/slather/project_spec.rb +13 -6
- data/spec/spec_helper.rb +2 -1
- metadata +33 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0543ac96785b6224de86808634fd33fcde079345
|
4
|
+
data.tar.gz: 1a1140a367ffb402a6dfc30e4332f818f7ec497c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 231888e483d2fb0c1ed96564ce96855071162b0ff957df74b4fc845d945ed55e71c114eace3f264890d30b02d054b28af078281da94c2f2336fce92e71d392d1
|
7
|
+
data.tar.gz: d481a7f652450089125a50da6e04b2b0cc353666943444674efa373c293d7b681f372b7dc26a246e335abc2fed4aca836b2e472166f06c6792b9bbcf5aed0a3a
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -34,7 +34,7 @@ $ bundle
|
|
34
34
|
|
35
35
|
## Usage
|
36
36
|
|
37
|
-
|
37
|
+
Set up your project for test coverage:
|
38
38
|
|
39
39
|
```sh
|
40
40
|
$ slather setup path/to/project.xcodeproj
|
@@ -43,13 +43,13 @@ $ slather setup path/to/project.xcodeproj
|
|
43
43
|
This will enable the `Generate Test Coverage` and `Instrument Program Flow` flags for your project.
|
44
44
|
|
45
45
|
|
46
|
-
To
|
46
|
+
To verify you're ready to generate test coverage, run your test suite on your project, and then run:
|
47
47
|
|
48
48
|
```sh
|
49
49
|
$ slather coverage -s path/to/project.xcodeproj
|
50
50
|
```
|
51
51
|
|
52
|
-
### Coveralls
|
52
|
+
### Usage with Coveralls
|
53
53
|
|
54
54
|
Login to [Coveralls](https://coveralls.io/) and enable your repository. Right now, `slather` supports Coveralls via [Travis CI](https://travis-ci.org) and [CircleCI](https://circleci.com).
|
55
55
|
|
@@ -84,7 +84,7 @@ test:
|
|
84
84
|
|
85
85
|
```
|
86
86
|
|
87
|
-
#### Travis CI Pro
|
87
|
+
#### Usage with Travis CI Pro
|
88
88
|
|
89
89
|
To use Coveralls with Travis CI Pro (for private repos), add following lines along with other settings to `.slather.yml`:
|
90
90
|
|
@@ -92,10 +92,10 @@ To use Coveralls with Travis CI Pro (for private repos), add following lines alo
|
|
92
92
|
# .slather.yml
|
93
93
|
|
94
94
|
ci_service: travis_pro
|
95
|
-
|
95
|
+
coverage_access_token: <YOUR ACCESS TOKEN>
|
96
96
|
```
|
97
97
|
|
98
|
-
|
98
|
+
The coverage token can be found at [Coveralls](https://coveralls.io/) repo page. Or it can be passed in via the `COVERAGE_ACCESS_TOKEN` environment var.
|
99
99
|
|
100
100
|
### Cobertura
|
101
101
|
|
@@ -113,23 +113,33 @@ ignore:
|
|
113
113
|
- ProjectTestsGroup/*
|
114
114
|
```
|
115
115
|
|
116
|
-
Or use the command line options `--cobertura-xml` or `-x` and `--
|
116
|
+
Or use the command line options `--cobertura-xml` or `-x` and `--output-directory`:
|
117
117
|
|
118
118
|
```sh
|
119
119
|
$ slather coverage -x --output-directory path/to/xml_report
|
120
120
|
```
|
121
121
|
|
122
|
+
### Static HTML
|
123
|
+
|
124
|
+
To create a report as static html pages, use the command line options `--html` or `-h`:
|
125
|
+
|
126
|
+
```sh
|
127
|
+
$ slather coverage -h path/to/project.xcodeproj
|
128
|
+
```
|
129
|
+
|
130
|
+
This will make a directory called `html` in your directory (unless output directory is specified) and generate all the static html pages inside the directory.
|
131
|
+
|
122
132
|
### Coverage for code included via CocoaPods
|
123
133
|
|
124
134
|
If you're trying to compute the coverage of code that has been included via
|
125
|
-
CocoaPods, you will need to tell CocoaPods to use the
|
135
|
+
CocoaPods, you will need to tell CocoaPods to use the Slather plugin by
|
126
136
|
adding the following to your `Podfile`.
|
127
137
|
|
128
138
|
```ruby
|
129
139
|
plugin 'slather'
|
130
140
|
```
|
131
141
|
|
132
|
-
You will also need to tell
|
142
|
+
You will also need to tell Slather where to find the source files for your Pod.
|
133
143
|
|
134
144
|
```yml
|
135
145
|
# .slather.yml
|
@@ -152,3 +162,4 @@ Please make sure to follow our general coding style and add test coverage for ne
|
|
152
162
|
* [@tpoulos](https://github.com/tpoulos), the perfect logo.
|
153
163
|
* [@ayanonagon](https://github.com/ayanonagon) and [@kylef](https://github.com/kylef), feedback and testing.
|
154
164
|
* [@jhersh](https://github.com/jhersh), CircleCI support.
|
165
|
+
* [@ixnixnixn](https://github.com/ixnixnixn), html support.
|
@@ -0,0 +1 @@
|
|
1
|
+
!function(e){"undefined"!=typeof exports?e(exports):(window.hljs=e({}),"function"==typeof define&&define.amd&&define("hljs",[],function(){return window.hljs}))}(function(e){function n(e){return e.replace(/&/gm,"&").replace(/</gm,"<").replace(/>/gm,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0==t.index}function a(e){return/no-?highlight|plain|text/.test(e)}function i(e){var n,t,r,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=/\blang(?:uage)?-([\w-]+)\b/.exec(i))return E(t[1])?t[1]:"no-highlight";for(i=i.split(/\s+/),n=0,r=i.length;r>n;n++)if(E(i[n])||a(i[n]))return i[n]}function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t];return r}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3==i.nodeType?a+=i.nodeValue.length:1==i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!=r[0].offset?e[0].offset<r[0].offset?e:r:"start"==r[0].event?e:r:e.length?e:r}function o(e){function r(e){return" "+e.nodeName+'="'+n(e.value)+'"'}f+="<"+t(e)+Array.prototype.map.call(e.attributes,r).join("")+">"}function u(e){f+="</"+t(e)+">"}function c(e){("start"==e.event?o:u)(e.node)}for(var s=0,f="",l=[];e.length||r.length;){var g=i();if(f+=n(a.substr(s,g[0].offset-s)),s=g[0].offset,g==e){l.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g==e&&g.length&&g[0].offset==s);l.reverse().forEach(o)}else"start"==g[0].event?l.push(g[0].node):l.pop(),c(g.splice(0,1)[0])}return f+n(a.substr(s))}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var u={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");u[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?c("keyword",a.k):Object.keys(a.k).forEach(function(e){c(e,a.k[e])}),a.k=u}a.lR=t(a.l||/\b\w+\b/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),void 0===a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push("self"==e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var f=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=f.length?t(f.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){for(var t=0;t<n.c.length;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function g(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function h(e,n,t,r){var a=r?"":w.classPrefix,i='<span class="'+a,o=t?"":"</span>";return i+=e+'">',i+n+o}function p(){if(!L.k)return n(B);var e="",t=0;L.lR.lastIndex=0;for(var r=L.lR.exec(B);r;){e+=n(B.substr(t,r.index-t));var a=g(L,r);a?(y+=a[1],e+=h(a[0],n(r[0]))):e+=n(r[0]),t=L.lR.lastIndex,r=L.lR.exec(B)}return e+n(B.substr(t))}function d(){if(L.sL&&!x[L.sL])return n(B);var e=L.sL?f(L.sL,B,!0,M[L.sL]):l(B);return L.r>0&&(y+=e.r),"continuous"==L.subLanguageMode&&(M[L.sL]=e.top),h(e.language,e.value,!1,!0)}function b(){return void 0!==L.sL?d():p()}function v(e,t){var r=e.cN?h(e.cN,"",!0):"";e.rB?(k+=r,B=""):e.eB?(k+=n(t)+r,B=""):(k+=r,B=t),L=Object.create(e,{parent:{value:L}})}function m(e,t){if(B+=e,void 0===t)return k+=b(),0;var r=o(t,L);if(r)return k+=b(),v(r,t),r.rB?0:t.length;var a=u(L,t);if(a){var i=L;i.rE||i.eE||(B+=t),k+=b();do L.cN&&(k+="</span>"),y+=L.r,L=L.parent;while(L!=a.parent);return i.eE&&(k+=n(t)),B="",a.starts&&v(a.starts,""),i.rE?0:t.length}if(c(t,L))throw new Error('Illegal lexeme "'+t+'" for mode "'+(L.cN||"<unnamed>")+'"');return B+=t,t.length||1}var N=E(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var R,L=i||N,M={},k="";for(R=L;R!=N;R=R.parent)R.cN&&(k=h(R.cN,"",!0)+k);var B="",y=0;try{for(var C,j,I=0;;){if(L.t.lastIndex=I,C=L.t.exec(t),!C)break;j=m(t.substr(I,C.index-I),C[0]),I=C.index+j}for(m(t.substr(I)),R=L;R.parent;R=R.parent)R.cN&&(k+="</span>");return{r:y,value:k,language:e,top:L}}catch(O){if(-1!=O.message.indexOf("Illegal"))return{r:0,value:n(t)};throw O}}function l(e,t){t=t||w.languages||Object.keys(x);var r={r:0,value:n(e)},a=r;return t.forEach(function(n){if(E(n)){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}}),a.language&&(r.second_best=a),r}function g(e){return w.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,function(e,n){return n.replace(/\t/g,w.tabReplace)})),w.useBR&&(e=e.replace(/\n/g,"<br>")),e}function h(e,n,t){var r=n?R[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function p(e){var n=i(e);if(!a(n)){var t;w.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n")):t=e;var r=t.textContent,o=n?f(n,r,!0):l(r),s=u(t);if(s.length){var p=document.createElementNS("http://www.w3.org/1999/xhtml","div");p.innerHTML=o.value,o.value=c(s,u(p),r)}o.value=g(o.value),e.innerHTML=o.value,e.className=h(e.className,n,o.language),e.result={language:o.language,re:o.r},o.second_best&&(e.second_best={language:o.second_best.language,re:o.second_best.r})}}function d(e){w=o(w,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");Array.prototype.forEach.call(e,p)}}function v(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function m(n,t){var r=x[n]=t(e);r.aliases&&r.aliases.forEach(function(e){R[e]=n})}function N(){return Object.keys(x)}function E(e){return x[e]||x[R[e]]}var w={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},x={},R={};return e.highlight=f,e.highlightAuto=l,e.fixMarkup=g,e.highlightBlock=p,e.configure=d,e.initHighlighting=b,e.initHighlightingOnLoad=v,e.registerLanguage=m,e.listLanguages=N,e.getLanguage=E,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="\\b(0[xX][a-fA-F0-9]+|(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",bK:"TODO FIXME NOTE BUG XXX",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e});hljs.registerLanguage("json",function(e){var t={literal:"true false null"},i=[e.QSM,e.CNM],l={cN:"value",e:",",eW:!0,eE:!0,c:i,k:t},c={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:!0,eE:!0,c:[e.BE],i:"\\n",starts:l}],i:"\\S"},n={b:"\\[",e:"\\]",c:[e.inherit(l,{cN:null})],i:"\\S"};return i.splice(i.length,0,c,n),{c:i,k:t,i:"\\S"}});hljs.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"(AV|CA|CF|CG|CI|MK|MP|NS|UI)\\w+"},i={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},o=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:i,l:o,i:"</",c:[t,e.CLCM,e.CBCM,e.CNM,e.QSM,{cN:"string",v:[{b:'@"',e:'"',i:"\\n",c:[e.BE]},{b:"'",e:"[^\\\\]'",i:"[^\\\\][^']"}]},{cN:"preprocessor",b:"#",e:"$",c:[{cN:"title",v:[{b:'"',e:'"'},{b:"<",e:">"}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:o,c:[e.UTM]},{cN:"variable",b:"\\."+e.UIR,r:0}]}});hljs.registerLanguage("cpp",function(t){var e={cN:"keyword",b:"[a-z\\d_]*_t"},r={keyword:"false int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using true class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept nullptr static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong",built_in:"std string cin cout cerr clog stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf"};return{aliases:["c","cc","h","c++","h++","hpp"],k:r,i:"</",c:[e,t.CLCM,t.CBCM,{cN:"string",v:[t.inherit(t.QSM,{b:'((u8?|U)|L)?"'}),{b:'(u8?|U)?R"',e:'"',c:[t.BE]},{b:"'\\\\?.",e:"'",i:"."}]},{cN:"number",b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},t.CNM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line pragma",c:[{b:/\\\n/,r:0},{b:'include\\s*[<"]',e:'[>"]',k:"include",i:"\\n"},t.CLCM]},{b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:r,c:["self",e]},{b:t.IR+"::",k:r},{bK:"new throw return else",r:0},{cN:"function",b:"("+t.IR+"\\s+)+"+t.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:t.IR+"\\s*\\(",rB:!0,c:[t.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:r,r:0,c:[t.CBCM]},t.CLCM,t.CBCM]}]}});
|
data/assets/list.min.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
!function(){function a(b,c,d){var e=a.resolve(b);if(null==e){d=d||b,c=c||"root";var f=new Error('Failed to require "'+d+'" from "'+c+'"');throw f.path=d,f.parent=c,f.require=!0,f}var g=a.modules[e];if(!g._resolving&&!g.exports){var h={};h.exports={},h.client=h.component=!0,g._resolving=!0,g.call(this,h.exports,a.relative(e),h),delete g._resolving,g.exports=h.exports}return g.exports}a.modules={},a.aliases={},a.resolve=function(b){"/"===b.charAt(0)&&(b=b.slice(1));for(var c=[b,b+".js",b+".json",b+"/index.js",b+"/index.json"],d=0;d<c.length;d++){var b=c[d];if(a.modules.hasOwnProperty(b))return b;if(a.aliases.hasOwnProperty(b))return a.aliases[b]}},a.normalize=function(a,b){var c=[];if("."!=b.charAt(0))return b;a=a.split("/"),b=b.split("/");for(var d=0;d<b.length;++d)".."==b[d]?a.pop():"."!=b[d]&&""!=b[d]&&c.push(b[d]);return a.concat(c).join("/")},a.register=function(b,c){a.modules[b]=c},a.alias=function(b,c){if(!a.modules.hasOwnProperty(b))throw new Error('Failed to alias "'+b+'", it does not exist');a.aliases[c]=b},a.relative=function(b){function c(a,b){for(var c=a.length;c--;)if(a[c]===b)return c;return-1}function d(c){var e=d.resolve(c);return a(e,b,c)}var e=a.normalize(b,"..");return d.resolve=function(d){var f=d.charAt(0);if("/"==f)return d.slice(1);if("."==f)return a.normalize(e,d);var g=b.split("/"),h=c(g,"deps")+1;return h||(h=0),d=g.slice(0,h+1).join("/")+"/deps/"+d},d.exists=function(b){return a.modules.hasOwnProperty(d.resolve(b))},d},a.register("component-classes/index.js",function(a,b,c){function d(a){if(!a)throw new Error("A DOM element reference is required");this.el=a,this.list=a.classList}var e=b("indexof"),f=/\s+/,g=Object.prototype.toString;c.exports=function(a){return new d(a)},d.prototype.add=function(a){if(this.list)return this.list.add(a),this;var b=this.array(),c=e(b,a);return~c||b.push(a),this.el.className=b.join(" "),this},d.prototype.remove=function(a){if("[object RegExp]"==g.call(a))return this.removeMatching(a);if(this.list)return this.list.remove(a),this;var b=this.array(),c=e(b,a);return~c&&b.splice(c,1),this.el.className=b.join(" "),this},d.prototype.removeMatching=function(a){for(var b=this.array(),c=0;c<b.length;c++)a.test(b[c])&&this.remove(b[c]);return this},d.prototype.toggle=function(a,b){return this.list?("undefined"!=typeof b?b!==this.list.toggle(a,b)&&this.list.toggle(a):this.list.toggle(a),this):("undefined"!=typeof b?b?this.add(a):this.remove(a):this.has(a)?this.remove(a):this.add(a),this)},d.prototype.array=function(){var a=this.el.className.replace(/^\s+|\s+$/g,""),b=a.split(f);return""===b[0]&&b.shift(),b},d.prototype.has=d.prototype.contains=function(a){return this.list?this.list.contains(a):!!~e(this.array(),a)}}),a.register("segmentio-extend/index.js",function(a,b,c){c.exports=function(a){for(var b,c=Array.prototype.slice.call(arguments,1),d=0;b=c[d];d++)if(b)for(var e in b)a[e]=b[e];return a}}),a.register("component-indexof/index.js",function(a,b,c){c.exports=function(a,b){if(a.indexOf)return a.indexOf(b);for(var c=0;c<a.length;++c)if(a[c]===b)return c;return-1}}),a.register("component-event/index.js",function(a){var b=window.addEventListener?"addEventListener":"attachEvent",c=window.removeEventListener?"removeEventListener":"detachEvent",d="addEventListener"!==b?"on":"";a.bind=function(a,c,e,f){return a[b](d+c,e,f||!1),e},a.unbind=function(a,b,e,f){return a[c](d+b,e,f||!1),e}}),a.register("timoxley-to-array/index.js",function(a,b,c){function d(a){return"[object Array]"===Object.prototype.toString.call(a)}c.exports=function(a){if("undefined"==typeof a)return[];if(null===a)return[null];if(a===window)return[window];if("string"==typeof a)return[a];if(d(a))return a;if("number"!=typeof a.length)return[a];if("function"==typeof a&&a instanceof Function)return[a];for(var b=[],c=0;c<a.length;c++)(Object.prototype.hasOwnProperty.call(a,c)||c in a)&&b.push(a[c]);return b.length?b:[]}}),a.register("javve-events/index.js",function(a,b){var c=b("event"),d=b("to-array");a.bind=function(a,b,e,f){a=d(a);for(var g=0;g<a.length;g++)c.bind(a[g],b,e,f)},a.unbind=function(a,b,e,f){a=d(a);for(var g=0;g<a.length;g++)c.unbind(a[g],b,e,f)}}),a.register("javve-get-by-class/index.js",function(a,b,c){c.exports=function(){return document.getElementsByClassName?function(a,b,c){return c?a.getElementsByClassName(b)[0]:a.getElementsByClassName(b)}:document.querySelector?function(a,b,c){return b="."+b,c?a.querySelector(b):a.querySelectorAll(b)}:function(a,b,c){var d=[],e="*";null==a&&(a=document);for(var f=a.getElementsByTagName(e),g=f.length,h=new RegExp("(^|\\s)"+b+"(\\s|$)"),i=0,j=0;g>i;i++)if(h.test(f[i].className)){if(c)return f[i];d[j]=f[i],j++}return d}}()}),a.register("javve-get-attribute/index.js",function(a,b,c){c.exports=function(a,b){var c=a.getAttribute&&a.getAttribute(b)||null;if(!c)for(var d=a.attributes,e=d.length,f=0;e>f;f++)void 0!==b[f]&&b[f].nodeName===b&&(c=b[f].nodeValue);return c}}),a.register("javve-natural-sort/index.js",function(a,b,c){c.exports=function(a,b,c){var d,e,f=/(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,g=/(^[ ]*|[ ]*$)/g,h=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,i=/^0x[0-9a-f]+$/i,j=/^0/,c=c||{},k=function(a){return c.insensitive&&(""+a).toLowerCase()||""+a},l=k(a).replace(g,"")||"",m=k(b).replace(g,"")||"",n=l.replace(f,"\x00$1\x00").replace(/\0$/,"").replace(/^\0/,"").split("\x00"),o=m.replace(f,"\x00$1\x00").replace(/\0$/,"").replace(/^\0/,"").split("\x00"),p=parseInt(l.match(i))||1!=n.length&&l.match(h)&&Date.parse(l),q=parseInt(m.match(i))||p&&m.match(h)&&Date.parse(m)||null,r=c.desc?-1:1;if(q){if(q>p)return-1*r;if(p>q)return 1*r}for(var s=0,t=Math.max(n.length,o.length);t>s;s++){if(d=!(n[s]||"").match(j)&&parseFloat(n[s])||n[s]||0,e=!(o[s]||"").match(j)&&parseFloat(o[s])||o[s]||0,isNaN(d)!==isNaN(e))return isNaN(d)?1:-1;if(typeof d!=typeof e&&(d+="",e+=""),e>d)return-1*r;if(d>e)return 1*r}return 0}}),a.register("javve-to-string/index.js",function(a,b,c){c.exports=function(a){return a=void 0===a?"":a,a=null===a?"":a,a=a.toString()}}),a.register("component-type/index.js",function(a,b,c){var d=Object.prototype.toString;c.exports=function(a){switch(d.call(a)){case"[object Date]":return"date";case"[object RegExp]":return"regexp";case"[object Arguments]":return"arguments";case"[object Array]":return"array";case"[object Error]":return"error"}return null===a?"null":void 0===a?"undefined":a!==a?"nan":a&&1===a.nodeType?"element":typeof a.valueOf()}}),a.register("list.js/index.js",function(a,b,c){!function(a,d){"use strict";var e=a.document,f=b("get-by-class"),g=b("extend"),h=b("indexof"),i=function(a,c,i){var j,k=this,l=b("./src/item")(k),m=b("./src/add-async")(k),n=b("./src/parse")(k);j={start:function(){k.listClass="list",k.searchClass="search",k.sortClass="sort",k.page=200,k.i=1,k.items=[],k.visibleItems=[],k.matchingItems=[],k.searched=!1,k.filtered=!1,k.handlers={updated:[]},k.plugins={},k.helpers={getByClass:f,extend:g,indexOf:h},g(k,c),k.listContainer="string"==typeof a?e.getElementById(a):a,k.listContainer&&(k.list=f(k.listContainer,k.listClass,!0),k.templater=b("./src/templater")(k),k.search=b("./src/search")(k),k.filter=b("./src/filter")(k),k.sort=b("./src/sort")(k),this.items(),k.update(),this.plugins())},items:function(){n(k.list),i!==d&&k.add(i)},plugins:function(){for(var a=0;a<k.plugins.length;a++){var b=k.plugins[a];k[b.name]=b,b.init(k)}}},this.add=function(a,b){if(b)return m(a,b),void 0;var c=[],e=!1;a[0]===d&&(a=[a]);for(var f=0,g=a.length;g>f;f++){var h=null;a[f]instanceof l?(h=a[f],h.reload()):(e=k.items.length>k.page?!0:!1,h=new l(a[f],d,e)),k.items.push(h),c.push(h)}return k.update(),c},this.show=function(a,b){return this.i=a,this.page=b,k.update(),k},this.remove=function(a,b,c){for(var d=0,e=0,f=k.items.length;f>e;e++)k.items[e].values()[a]==b&&(k.templater.remove(k.items[e],c),k.items.splice(e,1),f--,e--,d++);return k.update(),d},this.get=function(a,b){for(var c=[],d=0,e=k.items.length;e>d;d++){var f=k.items[d];f.values()[a]==b&&c.push(f)}return c},this.size=function(){return k.items.length},this.clear=function(){return k.templater.clear(),k.items=[],k},this.on=function(a,b){return k.handlers[a].push(b),k},this.off=function(a,b){var c=k.handlers[a],d=h(c,b);return d>-1&&c.splice(d,1),k},this.trigger=function(a){for(var b=k.handlers[a].length;b--;)k.handlers[a][b](k);return k},this.reset={filter:function(){for(var a=k.items,b=a.length;b--;)a[b].filtered=!1;return k},search:function(){for(var a=k.items,b=a.length;b--;)a[b].found=!1;return k}},this.update=function(){var a=k.items,b=a.length;k.visibleItems=[],k.matchingItems=[],k.templater.clear();for(var c=0;b>c;c++)a[c].matching()&&k.matchingItems.length+1>=k.i&&k.visibleItems.length<k.page?(a[c].show(),k.visibleItems.push(a[c]),k.matchingItems.push(a[c])):a[c].matching()?(k.matchingItems.push(a[c]),a[c].hide()):a[c].hide();return k.trigger("updated"),k},j.start()};c.exports=i}(window)}),a.register("list.js/src/search.js",function(a,b,c){var d=b("events"),e=b("get-by-class"),f=b("to-string");c.exports=function(a){var b,c,g,h,i={resetList:function(){a.i=1,a.templater.clear(),h=void 0},setOptions:function(a){2==a.length&&a[1]instanceof Array?c=a[1]:2==a.length&&"function"==typeof a[1]?h=a[1]:3==a.length&&(c=a[1],h=a[2])},setColumns:function(){c=void 0===c?i.toArray(a.items[0].values()):c},setSearchString:function(a){a=f(a).toLowerCase(),a=a.replace(/[-[\]{}()*+?.,\\^$|#]/g,"\\$&"),g=a},toArray:function(a){var b=[];for(var c in a)b.push(c);return b}},j={list:function(){for(var b=0,c=a.items.length;c>b;b++)j.item(a.items[b])},item:function(a){a.found=!1;for(var b=0,d=c.length;d>b;b++)if(j.values(a.values(),c[b]))return a.found=!0,void 0},values:function(a,c){return a.hasOwnProperty(c)&&(b=f(a[c]).toLowerCase(),""!==g&&b.search(g)>-1)?!0:!1},reset:function(){a.reset.search(),a.searched=!1}},k=function(b){return a.trigger("searchStart"),i.resetList(),i.setSearchString(b),i.setOptions(arguments),i.setColumns(),""===g?j.reset():(a.searched=!0,h?h(g,c):j.list()),a.update(),a.trigger("searchComplete"),a.visibleItems};return a.handlers.searchStart=a.handlers.searchStart||[],a.handlers.searchComplete=a.handlers.searchComplete||[],d.bind(e(a.listContainer,a.searchClass),"keyup",function(b){var c=b.target||b.srcElement,d=""===c.value&&!a.searched;d||k(c.value)}),d.bind(e(a.listContainer,a.searchClass),"input",function(a){var b=a.target||a.srcElement;""===b.value&&k("")}),a.helpers.toString=f,k}}),a.register("list.js/src/sort.js",function(a,b,c){var d=b("natural-sort"),e=b("classes"),f=b("events"),g=b("get-by-class"),h=b("get-attribute");c.exports=function(a){a.sortFunction=a.sortFunction||function(a,b,c){return c.desc="desc"==c.order?!0:!1,d(a.values()[c.valueName],b.values()[c.valueName],c)};var b={els:void 0,clear:function(){for(var a=0,c=b.els.length;c>a;a++)e(b.els[a]).remove("asc"),e(b.els[a]).remove("desc")},getOrder:function(a){var b=h(a,"data-order");return"asc"==b||"desc"==b?b:e(a).has("desc")?"asc":e(a).has("asc")?"desc":"asc"},getInSensitive:function(a,b){var c=h(a,"data-insensitive");b.insensitive="true"===c?!0:!1},setOrder:function(a){for(var c=0,d=b.els.length;d>c;c++){var f=b.els[c];if(h(f,"data-sort")===a.valueName){var g=h(f,"data-order");"asc"==g||"desc"==g?g==a.order&&e(f).add(a.order):e(f).add(a.order)}}}},c=function(){a.trigger("sortStart"),options={};var c=arguments[0].currentTarget||arguments[0].srcElement||void 0;c?(options.valueName=h(c,"data-sort"),b.getInSensitive(c,options),options.order=b.getOrder(c)):(options=arguments[1]||options,options.valueName=arguments[0],options.order=options.order||"asc",options.insensitive="undefined"==typeof options.insensitive?!0:options.insensitive),b.clear(),b.setOrder(options),options.sortFunction=options.sortFunction||a.sortFunction,a.items.sort(function(a,b){return options.sortFunction(a,b,options)}),a.update(),a.trigger("sortComplete")};return a.handlers.sortStart=a.handlers.sortStart||[],a.handlers.sortComplete=a.handlers.sortComplete||[],b.els=g(a.listContainer,a.sortClass),f.bind(b.els,"click",c),a.on("searchStart",b.clear),a.on("filterStart",b.clear),a.helpers.classes=e,a.helpers.naturalSort=d,a.helpers.events=f,a.helpers.getAttribute=h,c}}),a.register("list.js/src/item.js",function(a,b,c){c.exports=function(a){return function(b,c,d){var e=this;this._values={},this.found=!1,this.filtered=!1;var f=function(b,c,d){if(void 0===c)d?e.values(b,d):e.values(b);else{e.elm=c;var f=a.templater.get(e,b);e.values(f)}};this.values=function(b,c){if(void 0===b)return e._values;for(var d in b)e._values[d]=b[d];c!==!0&&a.templater.set(e,e.values())},this.show=function(){a.templater.show(e)},this.hide=function(){a.templater.hide(e)},this.matching=function(){return a.filtered&&a.searched&&e.found&&e.filtered||a.filtered&&!a.searched&&e.filtered||!a.filtered&&a.searched&&e.found||!a.filtered&&!a.searched},this.visible=function(){return e.elm.parentNode==a.list?!0:!1},f(b,c,d)}}}),a.register("list.js/src/templater.js",function(a,b,c){var d=b("get-by-class"),e=function(a){function b(b){if(void 0===b){for(var c=a.list.childNodes,d=0,e=c.length;e>d;d++)if(void 0===c[d].data)return c[d];return null}if(-1!==b.indexOf("<")){var f=document.createElement("div");return f.innerHTML=b,f.firstChild}return document.getElementById(a.item)}var c=b(a.item),e=this;this.get=function(a,b){e.create(a);for(var c={},f=0,g=b.length;g>f;f++){var h=d(a.elm,b[f],!0);c[b[f]]=h?h.innerHTML:""}return c},this.set=function(a,b){if(!e.create(a))for(var c in b)if(b.hasOwnProperty(c)){var f=d(a.elm,c,!0);f&&("IMG"===f.tagName&&""!==b[c]?f.src=b[c]:f.innerHTML=b[c])}},this.create=function(a){if(void 0!==a.elm)return!1;var b=c.cloneNode(!0);return b.removeAttribute("id"),a.elm=b,e.set(a,a.values()),!0},this.remove=function(b){a.list.removeChild(b.elm)},this.show=function(b){e.create(b),a.list.appendChild(b.elm)},this.hide=function(b){void 0!==b.elm&&b.elm.parentNode===a.list&&a.list.removeChild(b.elm)},this.clear=function(){if(a.list.hasChildNodes())for(;a.list.childNodes.length>=1;)a.list.removeChild(a.list.firstChild)}};c.exports=function(a){return new e(a)}}),a.register("list.js/src/filter.js",function(a,b,c){c.exports=function(a){return a.handlers.filterStart=a.handlers.filterStart||[],a.handlers.filterComplete=a.handlers.filterComplete||[],function(b){if(a.trigger("filterStart"),a.i=1,a.reset.filter(),void 0===b)a.filtered=!1;else{a.filtered=!0;for(var c=a.items,d=0,e=c.length;e>d;d++){var f=c[d];f.filtered=b(f)?!0:!1}}return a.update(),a.trigger("filterComplete"),a.visibleItems}}}),a.register("list.js/src/add-async.js",function(a,b,c){c.exports=function(a){return function(b,c,d){var e=b.splice(0,100);d=d||[],d=d.concat(a.add(e)),b.length>0?setTimeout(function(){addAsync(b,c,d)},10):(a.update(),c(d))}}}),a.register("list.js/src/parse.js",function(a,b,c){c.exports=function(a){var c=b("./item")(a),d=function(a){for(var b=a.childNodes,c=[],d=0,e=b.length;e>d;d++)void 0===b[d].data&&c.push(b[d]);return c},e=function(b,d){for(var e=0,f=b.length;f>e;e++)a.items.push(new c(d,b[e]))},f=function(b,c){var d=b.splice(0,100);e(d,c),b.length>0?setTimeout(function(){init.items.indexAsync(b,c)},10):a.update()};return function(){var b=d(a.list),c=a.valueNames;a.indexAsync?f(b,c):e(b,c)}}}),a.alias("component-classes/index.js","list.js/deps/classes/index.js"),a.alias("component-classes/index.js","classes/index.js"),a.alias("component-indexof/index.js","component-classes/deps/indexof/index.js"),a.alias("segmentio-extend/index.js","list.js/deps/extend/index.js"),a.alias("segmentio-extend/index.js","extend/index.js"),a.alias("component-indexof/index.js","list.js/deps/indexof/index.js"),a.alias("component-indexof/index.js","indexof/index.js"),a.alias("javve-events/index.js","list.js/deps/events/index.js"),a.alias("javve-events/index.js","events/index.js"),a.alias("component-event/index.js","javve-events/deps/event/index.js"),a.alias("timoxley-to-array/index.js","javve-events/deps/to-array/index.js"),a.alias("javve-get-by-class/index.js","list.js/deps/get-by-class/index.js"),a.alias("javve-get-by-class/index.js","get-by-class/index.js"),a.alias("javve-get-attribute/index.js","list.js/deps/get-attribute/index.js"),a.alias("javve-get-attribute/index.js","get-attribute/index.js"),a.alias("javve-natural-sort/index.js","list.js/deps/natural-sort/index.js"),a.alias("javve-natural-sort/index.js","natural-sort/index.js"),a.alias("javve-to-string/index.js","list.js/deps/to-string/index.js"),a.alias("javve-to-string/index.js","list.js/deps/to-string/index.js"),a.alias("javve-to-string/index.js","to-string/index.js"),a.alias("javve-to-string/index.js","javve-to-string/index.js"),a.alias("component-type/index.js","list.js/deps/type/index.js"),a.alias("component-type/index.js","type/index.js"),"object"==typeof exports?module.exports=a("list.js"):"function"==typeof define&&define.amd?define(function(){return a("list.js")}):this.List=a("list.js")}();
|
data/assets/slather.css
ADDED
@@ -0,0 +1,316 @@
|
|
1
|
+
/* --------------------------------------------------------
|
2
|
+
Slather stylesheet
|
3
|
+
|
4
|
+
version: 0.1
|
5
|
+
author: Ikhsan Assaat (@ixnixnixn)
|
6
|
+
----------------------------------------------------------*/
|
7
|
+
|
8
|
+
/* General */
|
9
|
+
html {
|
10
|
+
position: relative;
|
11
|
+
min-height: 100%;
|
12
|
+
}
|
13
|
+
body {
|
14
|
+
font: 16px "Helvetica", sans-serif;
|
15
|
+
margin: 0 0 120px;
|
16
|
+
color: #333;
|
17
|
+
}
|
18
|
+
.row { margin: 0 2em; }
|
19
|
+
|
20
|
+
/* Header */
|
21
|
+
header { margin-top: 1em; }
|
22
|
+
header img { width: auto; height: 120px; }
|
23
|
+
|
24
|
+
/* Coverage */
|
25
|
+
#reports > h2 { margin-bottom: 0; }
|
26
|
+
#reports > h4 { margin-top: 5px; }
|
27
|
+
.percentage {
|
28
|
+
padding: 4px ;
|
29
|
+
font-weight: bold;
|
30
|
+
}
|
31
|
+
.cov_high { color: #67CF7C; }
|
32
|
+
.cov_medium { color: #F89404; }
|
33
|
+
.cov_low { color: #F86769; }
|
34
|
+
.cov_title { margin-bottom: 0; }
|
35
|
+
.cov_subtitle { margin-top: 0.2em; }
|
36
|
+
.cov_filepath { font-style: italic; }
|
37
|
+
|
38
|
+
/* Index Table */
|
39
|
+
table.coverage_list {
|
40
|
+
width: 90%;
|
41
|
+
min-width: 400px;
|
42
|
+
}
|
43
|
+
table.coverage_list th,
|
44
|
+
table.coverage_list td {
|
45
|
+
padding: .6em .5em;
|
46
|
+
text-align: left;
|
47
|
+
}
|
48
|
+
table.coverage_list th.col_num { width: 70px; }
|
49
|
+
table.coverage_list th.col_percent { width: 75px; }
|
50
|
+
table.coverage_list thead, tfoot { background: #FDCD9B; }
|
51
|
+
table.coverage_list tbody tr:hover { background: #FCF2E6; }
|
52
|
+
table.coverage_list tbody td { border-bottom: 1px solid #CCC; }
|
53
|
+
table.coverage_list td a {
|
54
|
+
color: #333;
|
55
|
+
text-decoration: none;
|
56
|
+
border-bottom: 1px dotted;
|
57
|
+
}
|
58
|
+
table.coverage_list td a:hover {
|
59
|
+
border-bottom: none;
|
60
|
+
}
|
61
|
+
|
62
|
+
/* Source Code */
|
63
|
+
table.source_code {
|
64
|
+
width: 100%;
|
65
|
+
max-width: 1200px;
|
66
|
+
min-width: 400px;
|
67
|
+
font-size: 13px;
|
68
|
+
border-spacing: 0;
|
69
|
+
background: #FCF2E6;
|
70
|
+
padding: 1.2em 1em;
|
71
|
+
margin-bottom: 2em;
|
72
|
+
}
|
73
|
+
|
74
|
+
table.source_code td {
|
75
|
+
padding-bottom: 0.3em;
|
76
|
+
}
|
77
|
+
table.source_code tr.missed td { background-color: rgba(248, 103, 105, 0.2); }
|
78
|
+
table.source_code tr.covered td { background-color: rgba(103, 207, 124, 0.2); }
|
79
|
+
table.source_code td.num {
|
80
|
+
border-right: 1px rgba(0,0,0,0.1) solid;
|
81
|
+
text-align: right;
|
82
|
+
padding-right: 1em;
|
83
|
+
width: 30px;
|
84
|
+
}
|
85
|
+
table.source_code td.src {
|
86
|
+
border-left: 1px rgba(255,255,255,0.7) solid;
|
87
|
+
padding-left: 1em;
|
88
|
+
}
|
89
|
+
table.source_code td.src pre {
|
90
|
+
white-space: pre-wrap;
|
91
|
+
white-space: -moz-pre-wrap;
|
92
|
+
white-space: -pre-wrap;
|
93
|
+
white-space: -o-pre-wrap;
|
94
|
+
word-wrap: break-word;
|
95
|
+
margin: 0;
|
96
|
+
}
|
97
|
+
table.source_code td.src pre code { font: 13px "Menlo", "Courier New"; }
|
98
|
+
|
99
|
+
table.source_code td.coverage {
|
100
|
+
text-align: right;
|
101
|
+
padding-right: 0.5em;
|
102
|
+
}
|
103
|
+
|
104
|
+
/* Footer */
|
105
|
+
footer {
|
106
|
+
background-color: #67CDCF;
|
107
|
+
height: 80px;
|
108
|
+
|
109
|
+
position: absolute;
|
110
|
+
left: 0;
|
111
|
+
bottom: 0;
|
112
|
+
width: 100%;
|
113
|
+
overflow:hidden;
|
114
|
+
}
|
115
|
+
|
116
|
+
footer p, footer a {
|
117
|
+
color: #ffffff;
|
118
|
+
font-weight: bold;
|
119
|
+
text-align: center;
|
120
|
+
}
|
121
|
+
|
122
|
+
|
123
|
+
/* ----------------------------------------------------------
|
124
|
+
Syntax Highlighting using highlight.js (https://highlightjs.org)
|
125
|
+
------------------------------------------------------------- */
|
126
|
+
.hljs {
|
127
|
+
display: block;
|
128
|
+
overflow-x: auto;
|
129
|
+
-webkit-text-size-adjust: none;
|
130
|
+
}
|
131
|
+
|
132
|
+
.hljs,
|
133
|
+
.hljs-subst,
|
134
|
+
.hljs-tag .hljs-title,
|
135
|
+
.nginx .hljs-title {
|
136
|
+
color: #333;
|
137
|
+
}
|
138
|
+
|
139
|
+
.hljs-string,
|
140
|
+
.hljs-title,
|
141
|
+
.hljs-constant,
|
142
|
+
.hljs-parent,
|
143
|
+
.hljs-tag .hljs-value,
|
144
|
+
.hljs-rule .hljs-value,
|
145
|
+
.hljs-preprocessor,
|
146
|
+
.hljs-pragma,
|
147
|
+
.hljs-name,
|
148
|
+
.haml .hljs-symbol,
|
149
|
+
.ruby .hljs-symbol,
|
150
|
+
.ruby .hljs-symbol .hljs-string,
|
151
|
+
.hljs-template_tag,
|
152
|
+
.django .hljs-variable,
|
153
|
+
.smalltalk .hljs-class,
|
154
|
+
.hljs-addition,
|
155
|
+
.hljs-flow,
|
156
|
+
.hljs-stream,
|
157
|
+
.bash .hljs-variable,
|
158
|
+
.pf .hljs-variable,
|
159
|
+
.apache .hljs-tag,
|
160
|
+
.apache .hljs-cbracket,
|
161
|
+
.tex .hljs-command,
|
162
|
+
.tex .hljs-special,
|
163
|
+
.erlang_repl .hljs-function_or_atom,
|
164
|
+
.asciidoc .hljs-header,
|
165
|
+
.markdown .hljs-header,
|
166
|
+
.coffeescript .hljs-attribute,
|
167
|
+
.tp .hljs-variable {
|
168
|
+
color: #D14F4F;
|
169
|
+
}
|
170
|
+
|
171
|
+
.smartquote,
|
172
|
+
.hljs-comment,
|
173
|
+
.hljs-annotation,
|
174
|
+
.diff .hljs-header,
|
175
|
+
.hljs-chunk,
|
176
|
+
.asciidoc .hljs-blockquote,
|
177
|
+
.markdown .hljs-blockquote {
|
178
|
+
color: #888;
|
179
|
+
}
|
180
|
+
|
181
|
+
.hljs-number,
|
182
|
+
.hljs-date,
|
183
|
+
.hljs-regexp,
|
184
|
+
.hljs-literal,
|
185
|
+
.hljs-hexcolor,
|
186
|
+
.smalltalk .hljs-symbol,
|
187
|
+
.smalltalk .hljs-char,
|
188
|
+
.go .hljs-constant,
|
189
|
+
.hljs-change,
|
190
|
+
.lasso .hljs-variable,
|
191
|
+
.makefile .hljs-variable,
|
192
|
+
.asciidoc .hljs-bullet,
|
193
|
+
.markdown .hljs-bullet,
|
194
|
+
.asciidoc .hljs-link_url,
|
195
|
+
.markdown .hljs-link_url {
|
196
|
+
color: #05A5A8;
|
197
|
+
}
|
198
|
+
|
199
|
+
.hljs-label,
|
200
|
+
.ruby .hljs-string,
|
201
|
+
.hljs-decorator,
|
202
|
+
.hljs-filter .hljs-argument,
|
203
|
+
.hljs-localvars,
|
204
|
+
.hljs-array,
|
205
|
+
.hljs-attr_selector,
|
206
|
+
.hljs-important,
|
207
|
+
.hljs-pseudo,
|
208
|
+
.hljs-pi,
|
209
|
+
.haml .hljs-bullet,
|
210
|
+
.hljs-doctype,
|
211
|
+
.hljs-deletion,
|
212
|
+
.hljs-envvar,
|
213
|
+
.hljs-shebang,
|
214
|
+
.apache .hljs-sqbracket,
|
215
|
+
.nginx .hljs-built_in,
|
216
|
+
.tex .hljs-formula,
|
217
|
+
.erlang_repl .hljs-reserved,
|
218
|
+
.hljs-prompt,
|
219
|
+
.asciidoc .hljs-link_label,
|
220
|
+
.markdown .hljs-link_label,
|
221
|
+
.vhdl .hljs-attribute,
|
222
|
+
.clojure .hljs-attribute,
|
223
|
+
.asciidoc .hljs-attribute,
|
224
|
+
.lasso .hljs-attribute,
|
225
|
+
.coffeescript .hljs-property,
|
226
|
+
.hljs-phony {
|
227
|
+
color: #087599;
|
228
|
+
}
|
229
|
+
|
230
|
+
.hljs-keyword,
|
231
|
+
.hljs-id,
|
232
|
+
.hljs-title,
|
233
|
+
.hljs-built_in,
|
234
|
+
.css .hljs-tag,
|
235
|
+
.hljs-doctag,
|
236
|
+
.smalltalk .hljs-class,
|
237
|
+
.hljs-winutils,
|
238
|
+
.bash .hljs-variable,
|
239
|
+
.pf .hljs-variable,
|
240
|
+
.apache .hljs-tag,
|
241
|
+
.hljs-type,
|
242
|
+
.hljs-typename,
|
243
|
+
.tex .hljs-command,
|
244
|
+
.asciidoc .hljs-strong,
|
245
|
+
.markdown .hljs-strong,
|
246
|
+
.hljs-request,
|
247
|
+
.hljs-status,
|
248
|
+
.tp .hljs-data,
|
249
|
+
.tp .hljs-io {
|
250
|
+
font-weight: bold;
|
251
|
+
}
|
252
|
+
|
253
|
+
.asciidoc .hljs-emphasis,
|
254
|
+
.markdown .hljs-emphasis,
|
255
|
+
.tp .hljs-units {
|
256
|
+
font-style: italic;
|
257
|
+
}
|
258
|
+
|
259
|
+
.nginx .hljs-built_in {
|
260
|
+
font-weight: normal;
|
261
|
+
}
|
262
|
+
|
263
|
+
.coffeescript .javascript,
|
264
|
+
.javascript .xml,
|
265
|
+
.lasso .markup,
|
266
|
+
.tex .hljs-formula,
|
267
|
+
.xml .javascript,
|
268
|
+
.xml .vbscript,
|
269
|
+
.xml .css,
|
270
|
+
.xml .hljs-cdata {
|
271
|
+
opacity: 0.5;
|
272
|
+
}
|
273
|
+
|
274
|
+
/* -------------------------------------------------------
|
275
|
+
Sorting & Filtering with List.js (http://www.listjs.com/)
|
276
|
+
------------------------------------------------------- */
|
277
|
+
|
278
|
+
input.search {
|
279
|
+
border:solid 1px #ccc;
|
280
|
+
border-radius: 4px;
|
281
|
+
padding:7px;
|
282
|
+
margin-bottom:10px;
|
283
|
+
font-size: 12px;
|
284
|
+
}
|
285
|
+
input.search:focus {
|
286
|
+
outline:none;
|
287
|
+
border-color:#aaa;
|
288
|
+
}
|
289
|
+
|
290
|
+
th.sort::-moz-selection { background:transparent; }
|
291
|
+
th.sort::selection { background:transparent; }
|
292
|
+
th.sort { cursor:pointer; }
|
293
|
+
th.sort:after {
|
294
|
+
content:'';
|
295
|
+
display:inline-block;
|
296
|
+
width: 0;
|
297
|
+
height: 0;
|
298
|
+
position: relative;
|
299
|
+
top: -3px;
|
300
|
+
right: -6px;
|
301
|
+
border-width:0 4px 4px;
|
302
|
+
border-style:solid;
|
303
|
+
border-color:#404040 transparent;
|
304
|
+
visibility:hidden;
|
305
|
+
}
|
306
|
+
th.sort:hover:after { visibility:visible; }
|
307
|
+
th.sort.desc:after,
|
308
|
+
th.sort.asc:after,
|
309
|
+
th.sort.asc:hover:after {
|
310
|
+
visibility:visible;
|
311
|
+
opacity:0.6;
|
312
|
+
}
|
313
|
+
th.sort.desc:after {
|
314
|
+
border-bottom:none;
|
315
|
+
border-width:4px 4px 0;
|
316
|
+
}
|
data/bin/slather
CHANGED
@@ -13,11 +13,14 @@ Clamp do
|
|
13
13
|
|
14
14
|
option ["--travis", "-t"], :flag, "Indicate that the builds are running on Travis CI"
|
15
15
|
option ["--circleci"], :flag, "Indicate that the builds are running on CircleCI"
|
16
|
+
option ["--jenkins"], :flag, "Indicate that the builds are running on Jenkins"
|
16
17
|
|
17
18
|
option ["--coveralls", "-c"], :flag, "Post coverage results to coveralls"
|
18
19
|
option ["--simple-output", "-s"], :flag, "Output coverage results to the terminal"
|
19
20
|
option ["--gutter-json", "-g"], :flag, "Output coverage results as Gutter JSON format"
|
20
21
|
option ["--cobertura-xml", "-x"], :flag, "Output coverage results as Cobertura XML format"
|
22
|
+
option ["--html", "-h"], :flag, "Output coverage results as static html pages"
|
23
|
+
option ["--show"], :flag, "Indicate that the static html pages will open automatically"
|
21
24
|
|
22
25
|
option ["--build-directory", "-b"], "BUILD_DIRECTORY", "The directory where gcno files will be written to. Defaults to derived data."
|
23
26
|
option ["--source-directory"], "SOURCE_DIRECTORY", "The directory where your source files are located."
|
@@ -26,7 +29,7 @@ Clamp do
|
|
26
29
|
|
27
30
|
def execute
|
28
31
|
puts "Slathering..."
|
29
|
-
|
32
|
+
|
30
33
|
setup_service_name
|
31
34
|
setup_ignore_list
|
32
35
|
setup_build_directory
|
@@ -60,6 +63,8 @@ Clamp do
|
|
60
63
|
project.ci_service = :travis_ci
|
61
64
|
elsif circleci?
|
62
65
|
project.ci_service = :circleci
|
66
|
+
elsif jenkins?
|
67
|
+
project.ci_service = :jenkins
|
63
68
|
end
|
64
69
|
end
|
65
70
|
|
@@ -87,6 +92,9 @@ Clamp do
|
|
87
92
|
project.coverage_service = :gutter_json
|
88
93
|
elsif cobertura_xml?
|
89
94
|
project.coverage_service = :cobertura_xml
|
95
|
+
elsif html?
|
96
|
+
project.coverage_service = :html
|
97
|
+
project.show_html = show?
|
90
98
|
end
|
91
99
|
end
|
92
100
|
|