invoicing 0.1.0 → 0.2.0
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.
- data.tar.gz.sig +0 -0
- data/History.txt +21 -0
- data/{Manifest → Manifest.txt} +13 -11
- data/PostInstall.txt +10 -0
- data/README.rdoc +55 -0
- data/Rakefile +30 -68
- data/lib/invoicing/currency_value.rb +113 -37
- data/lib/invoicing/ledger_item.rb +147 -28
- data/lib/invoicing/ledger_item/render_html.rb +3 -2
- data/lib/invoicing/ledger_item/render_ubl.rb +3 -2
- data/lib/invoicing/version.rb +1 -1
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/tasks/rcov.rake +4 -0
- data/test/currency_value_test.rb +25 -0
- data/test/ledger_item_test.rb +112 -30
- metadata +61 -50
- metadata.gz.sig +3 -0
- data/CHANGELOG +0 -3
- data/README +0 -48
- data/invoicing.gemspec +0 -41
- data/website/curvycorners.js +0 -1
- data/website/screen.css +0 -149
- data/website/template.html.erb +0 -43
metadata.gz.sig
ADDED
data/CHANGELOG
DELETED
data/README
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
h1. Ruby invoicing framework
|
2
|
-
|
3
|
-
* "Homepage":http://invoicing.rubyforge.org/
|
4
|
-
* "API Reference Docs":http://invoicing.rubyforge.org/docs/invoicing/
|
5
|
-
* "RubyForge project":http://rubyforge.org/projects/invoicing/
|
6
|
-
* Email: Martin Kleppmann <ept@rubyforge.org>
|
7
|
-
|
8
|
-
h2. DESCRIPTION
|
9
|
-
|
10
|
-
Framework for generating and displaying invoices (ideal for commercial Rails
|
11
|
-
apps). Allows for flexible business logic; provides tools for tax handling,
|
12
|
-
commission calculation etc. Both developer-friendly and accountant-friendly.
|
13
|
-
|
14
|
-
The Ruby invoicing framework provides tools, helpers and a structure for
|
15
|
-
applications (particularly web apps) which need to generate invoices for
|
16
|
-
customers. It builds on ActiveRecord and is particularly suited for Rails
|
17
|
-
applications, but could be used with other frameworks too.
|
18
|
-
|
19
|
-
h2. FEATURES
|
20
|
-
|
21
|
-
* Dealing with tax rates changing over time
|
22
|
-
* Calculating commissions (e.g. in a reseller setting)
|
23
|
-
|
24
|
-
h2. SYNOPSIS
|
25
|
-
|
26
|
-
<pre syntax="ruby">
|
27
|
-
require 'invoicing'
|
28
|
-
</pre>
|
29
|
-
|
30
|
-
h2. STATUS
|
31
|
-
|
32
|
-
So far, the Ruby Invoicing Framework has been tested with ActiveRecord 2.2.2,
|
33
|
-
MySQL 5.0.67 and PostgreSQL 8.3.5. We will be testing it across a wider
|
34
|
-
variety of versions soon.
|
35
|
-
|
36
|
-
h2. CREDITS
|
37
|
-
|
38
|
-
The Ruby invoicing framework originated as part of the website Bid for Wine
|
39
|
-
(http://www.bidforwine.co.uk), developed by Patrick Dietrich, Conrad Irwin
|
40
|
-
and Michael Arnold for Ept Computing Ltd. It was extracted from the Bid for
|
41
|
-
Wine codebase and substantially extended by Martin Kleppmann.
|
42
|
-
|
43
|
-
h2. LICENSE
|
44
|
-
|
45
|
-
Copyright (c) 2009 Martin Kleppmann, Ept Computing Limited.
|
46
|
-
|
47
|
-
This gem is made publicly available under the terms of the MIT license.
|
48
|
-
See LICENSE and/or COPYING for details.
|
data/invoicing.gemspec
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
Gem::Specification.new do |s|
|
4
|
-
s.name = %q{invoicing}
|
5
|
-
s.version = "0.1.0"
|
6
|
-
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = ["Martin Kleppmann"]
|
9
|
-
s.date = %q{2009-02-10}
|
10
|
-
s.description = %q{Provides tools for applications which need to generate invoices for customers.}
|
11
|
-
s.email = %q{rubyforge@eptcomputing.com}
|
12
|
-
s.extra_rdoc_files = ["CHANGELOG", "lib/invoicing/cached_record.rb", "lib/invoicing/class_info.rb", "lib/invoicing/connection_adapter_ext.rb", "lib/invoicing/countries/uk.rb", "lib/invoicing/currency_value.rb", "lib/invoicing/find_subclasses.rb", "lib/invoicing/ledger_item/render_html.rb", "lib/invoicing/ledger_item/render_ubl.rb", "lib/invoicing/ledger_item.rb", "lib/invoicing/line_item.rb", "lib/invoicing/price.rb", "lib/invoicing/tax_rate.rb", "lib/invoicing/taxable.rb", "lib/invoicing/time_dependent.rb", "lib/invoicing/version.rb", "lib/invoicing.rb", "LICENSE", "README"]
|
13
|
-
s.files = ["CHANGELOG", "lib/invoicing/cached_record.rb", "lib/invoicing/class_info.rb", "lib/invoicing/connection_adapter_ext.rb", "lib/invoicing/countries/uk.rb", "lib/invoicing/currency_value.rb", "lib/invoicing/find_subclasses.rb", "lib/invoicing/ledger_item/render_html.rb", "lib/invoicing/ledger_item/render_ubl.rb", "lib/invoicing/ledger_item.rb", "lib/invoicing/line_item.rb", "lib/invoicing/price.rb", "lib/invoicing/tax_rate.rb", "lib/invoicing/taxable.rb", "lib/invoicing/time_dependent.rb", "lib/invoicing/version.rb", "lib/invoicing.rb", "LICENSE", "Manifest", "Rakefile", "README", "test/cached_record_test.rb", "test/class_info_test.rb", "test/connection_adapter_ext_test.rb", "test/currency_value_test.rb", "test/find_subclasses_test.rb", "test/fixtures/cached_record.sql", "test/fixtures/class_info.sql", "test/fixtures/currency_value.sql", "test/fixtures/find_subclasses.sql", "test/fixtures/ledger_item.sql", "test/fixtures/line_item.sql", "test/fixtures/price.sql", "test/fixtures/README", "test/fixtures/tax_rate.sql", "test/fixtures/taxable.sql", "test/fixtures/time_dependent.sql", "test/ledger_item_test.rb", "test/line_item_test.rb", "test/models/README", "test/models/test_subclass_in_another_file.rb", "test/models/test_subclass_not_in_database.rb", "test/price_test.rb", "test/ref-output/creditnote3.html", "test/ref-output/creditnote3.xml", "test/ref-output/invoice1.html", "test/ref-output/invoice1.xml", "test/ref-output/invoice2.html", "test/ref-output/invoice2.xml", "test/ref-output/invoice_null.html", "test/render_html_test.rb", "test/render_ubl_test.rb", "test/setup.rb", "test/tax_rate_test.rb", "test/taxable_test.rb", "test/test_helper.rb", "test/time_dependent_test.rb", "website/curvycorners.js", "website/screen.css", "website/template.html.erb", "invoicing.gemspec"]
|
14
|
-
s.has_rdoc = true
|
15
|
-
s.homepage = %q{http://invoicing.rubyforge.org/}
|
16
|
-
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Invoicing", "--main", "README"]
|
17
|
-
s.require_paths = ["lib"]
|
18
|
-
s.rubyforge_project = %q{invoicing}
|
19
|
-
s.rubygems_version = %q{1.3.1}
|
20
|
-
s.summary = %q{Ruby invoicing framework}
|
21
|
-
s.test_files = ["test/cached_record_test.rb", "test/class_info_test.rb", "test/connection_adapter_ext_test.rb", "test/currency_value_test.rb", "test/find_subclasses_test.rb", "test/ledger_item_test.rb", "test/line_item_test.rb", "test/price_test.rb", "test/render_html_test.rb", "test/render_ubl_test.rb", "test/tax_rate_test.rb", "test/taxable_test.rb", "test/time_dependent_test.rb"]
|
22
|
-
|
23
|
-
if s.respond_to? :specification_version then
|
24
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
25
|
-
s.specification_version = 2
|
26
|
-
|
27
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
28
|
-
s.add_runtime_dependency(%q<activerecord>, [">= 2.1.0"])
|
29
|
-
s.add_runtime_dependency(%q<builder>, [">= 0", "= 2.0"])
|
30
|
-
s.add_development_dependency(%q<echoe>, [">= 0"])
|
31
|
-
else
|
32
|
-
s.add_dependency(%q<activerecord>, [">= 2.1.0"])
|
33
|
-
s.add_dependency(%q<builder>, [">= 0", "= 2.0"])
|
34
|
-
s.add_dependency(%q<echoe>, [">= 0"])
|
35
|
-
end
|
36
|
-
else
|
37
|
-
s.add_dependency(%q<activerecord>, [">= 2.1.0"])
|
38
|
-
s.add_dependency(%q<builder>, [">= 0", "= 2.0"])
|
39
|
-
s.add_dependency(%q<echoe>, [">= 0"])
|
40
|
-
end
|
41
|
-
end
|
data/website/curvycorners.js
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
var isIE=navigator.userAgent.toLowerCase().indexOf("msie")>-1;var isMoz=document.implementation&&document.implementation.createDocument;var isSafari=((navigator.userAgent.toLowerCase().indexOf("safari")!=-1)&&(navigator.userAgent.toLowerCase().indexOf("mac")!=-1))?true:false;function curvyCorners(){if(typeof(arguments[0])!="object"){throw newCurvyError("First parameter of curvyCorners() must be an object.")}if(typeof(arguments[1])!="object"&&typeof(arguments[1])!="string"){throw newCurvyError("Second parameter of curvyCorners() must be an object or a class name.")}if(typeof(arguments[1])=="string"){var G=0;var A=getElementsByClass(arguments[1])}else{var G=1;var A=arguments}var D=new Array();if(arguments[0].validTags){var F=arguments[0].validTags}else{var F=["div"]}for(var C=G,B=A.length;C<B;C++){var E=A[C].tagName.toLowerCase();if(inArray(F,E)!==false){D[D.length]=new curvyObject(arguments[0],A[C])}}this.objects=D;this.applyCornersToAll=function(){for(var H=0,I=this.objects.length;H<I;H++){this.objects[H].applyCorners()}}}function curvyObject(){this.box=arguments[1];this.settings=arguments[0];this.topContainer=null;this.bottomContainer=null;this.masterCorners=new Array();this.contentDIV=null;var G=get_style(this.box,"height","height");var D=get_style(this.box,"width","width");var A=get_style(this.box,"borderTopWidth","border-top-width");var H=get_style(this.box,"borderTopColor","border-top-color");var C=get_style(this.box,"backgroundColor","background-color");var E=get_style(this.box,"backgroundImage","background-image");var B=get_style(this.box,"position","position");var F=get_style(this.box,"paddingTop","padding-top");this.boxHeight=parseInt(((G!=""&&G!="auto"&&G.indexOf("%")==-1)?G.substring(0,G.indexOf("px")):this.box.scrollHeight));this.boxWidth=parseInt(((D!=""&&D!="auto"&&D.indexOf("%")==-1)?D.substring(0,D.indexOf("px")):this.box.scrollWidth));this.borderWidth=parseInt(((A!=""&&A.indexOf("px")!==-1)?A.slice(0,A.indexOf("px")):0));this.boxColour=format_colour(C);this.boxPadding=parseInt(((F!=""&&F.indexOf("px")!==-1)?F.slice(0,F.indexOf("px")):0));this.borderColour=format_colour(H);this.borderString=this.borderWidth+"px solid "+this.borderColour;this.backgroundImage=((E!="none")?E:"");this.boxContent=this.box.innerHTML;if(B!="absolute"){this.box.style.position="relative"}this.box.style.padding="0px";if(isIE&&D=="auto"&&G=="auto"){this.box.style.width="100%"}if(this.settings.autoPad==true&&this.boxPadding>0){this.box.innerHTML=""}this.applyCorners=function(){for(var Z=0;Z<2;Z++){switch(Z){case 0:if(this.settings.tl||this.settings.tr){var W=document.createElement("DIV");W.style.width="100%";W.style.fontSize="1px";W.style.overflow="hidden";W.style.position="absolute";W.style.paddingLeft=this.borderWidth+"px";W.style.paddingRight=this.borderWidth+"px";var R=Math.max(this.settings.tl?this.settings.tl.radius:0,this.settings.tr?this.settings.tr.radius:0);W.style.height=R+"px";W.style.top=0-R+"px";W.style.left=0-this.borderWidth+"px";this.topContainer=this.box.appendChild(W)}break;case 1:if(this.settings.bl||this.settings.br){var W=document.createElement("DIV");W.style.width="100%";W.style.fontSize="1px";W.style.overflow="hidden";W.style.position="absolute";W.style.paddingLeft=this.borderWidth+"px";W.style.paddingRight=this.borderWidth+"px";var X=Math.max(this.settings.bl?this.settings.bl.radius:0,this.settings.br?this.settings.br.radius:0);W.style.height=X+"px";W.style.bottom=0-X+"px";W.style.left=0-this.borderWidth+"px";this.bottomContainer=this.box.appendChild(W)}break}}if(this.topContainer){this.box.style.borderTopWidth="0px"}if(this.bottomContainer){this.box.style.borderBottomWidth="0px"}var d=["tr","tl","br","bl"];for(var h in d){if(h>-1<4){var c=d[h];if(!this.settings[c]){if(((c=="tr"||c=="tl")&&this.topContainer!=null)||((c=="br"||c=="bl")&&this.bottomContainer!=null)){var V=document.createElement("DIV");V.style.position="relative";V.style.fontSize="1px";V.style.overflow="hidden";if(this.backgroundImage==""){V.style.backgroundColor=this.boxColour}else{V.style.backgroundImage=this.backgroundImage}switch(c){case"tl":V.style.height=R-this.borderWidth+"px";V.style.marginRight=this.settings.tr.radius-(this.borderWidth*2)+"px";V.style.borderLeft=this.borderString;V.style.borderTop=this.borderString;V.style.left=-this.borderWidth+"px";break;case"tr":V.style.height=R-this.borderWidth+"px";V.style.marginLeft=this.settings.tl.radius-(this.borderWidth*2)+"px";V.style.borderRight=this.borderString;V.style.borderTop=this.borderString;V.style.backgroundPosition="-"+(R+this.borderWidth)+"px 0px";V.style.left=this.borderWidth+"px";break;case"bl":V.style.height=X-this.borderWidth+"px";V.style.marginRight=this.settings.br.radius-(this.borderWidth*2)+"px";V.style.borderLeft=this.borderString;V.style.borderBottom=this.borderString;V.style.left=-this.borderWidth+"px";V.style.backgroundPosition="-"+(this.borderWidth)+"px -"+(this.boxHeight+(X+this.borderWidth))+"px";break;case"br":V.style.height=X-this.borderWidth+"px";V.style.marginLeft=this.settings.bl.radius-(this.borderWidth*2)+"px";V.style.borderRight=this.borderString;V.style.borderBottom=this.borderString;V.style.left=this.borderWidth+"px";V.style.backgroundPosition="-"+(X+this.borderWidth)+"px -"+(this.boxHeight+(X+this.borderWidth))+"px";break}}}else{if(this.masterCorners[this.settings[c].radius]){var V=this.masterCorners[this.settings[c].radius].cloneNode(true)}else{var V=document.createElement("DIV");V.style.height=this.settings[c].radius+"px";V.style.width=this.settings[c].radius+"px";V.style.position="absolute";V.style.fontSize="1px";V.style.overflow="hidden";var M=parseInt(this.settings[c].radius-this.borderWidth);for(var T=0,g=this.settings[c].radius;T<g;T++){if((T+1)>=M){var O=-1}else{var O=(Math.floor(Math.sqrt(Math.pow(M,2)-Math.pow((T+1),2)))-1)}if(M!=g){if((T)>=M){var L=-1}else{var L=Math.ceil(Math.sqrt(Math.pow(M,2)-Math.pow(T,2)))}if((T+1)>=g){var J=-1}else{var J=(Math.floor(Math.sqrt(Math.pow(g,2)-Math.pow((T+1),2)))-1)}}if((T)>=g){var I=-1}else{var I=Math.ceil(Math.sqrt(Math.pow(g,2)-Math.pow(T,2)))}if(O>-1){this.drawPixel(T,0,this.boxColour,100,(O+1),V,-1,this.settings[c].radius)}if(M!=g){for(var S=(O+1);S<L;S++){if(this.settings.antiAlias){if(this.backgroundImage!=""){var K=(pixelFraction(T,S,M)*100);if(K<30){this.drawPixel(T,S,this.borderColour,100,1,V,0,this.settings[c].radius)}else{this.drawPixel(T,S,this.borderColour,100,1,V,-1,this.settings[c].radius)}}else{var b=BlendColour(this.boxColour,this.borderColour,pixelFraction(T,S,M));this.drawPixel(T,S,b,100,1,V,0,this.settings[c].radius,c)}}}if(this.settings.antiAlias){if(J>=L){if(L==-1){L=0}this.drawPixel(T,L,this.borderColour,100,(J-L+1),V,0,0)}}else{if(J>=O){this.drawPixel(T,(O+1),this.borderColour,100,(J-O),V,0,0)}}var Q=this.borderColour}else{var Q=this.boxColour;var J=O}if(this.settings.antiAlias){for(var S=(J+1);S<I;S++){this.drawPixel(T,S,Q,(pixelFraction(T,S,g)*100),1,V,((this.borderWidth>0)?0:-1),this.settings[c].radius)}}}this.masterCorners[this.settings[c].radius]=V.cloneNode(true)}if(c!="br"){for(var Z=0,f=V.childNodes.length;Z<f;Z++){var U=V.childNodes[Z];var e=parseInt(U.style.top.substring(0,U.style.top.indexOf("px")));var m=parseInt(U.style.left.substring(0,U.style.left.indexOf("px")));var o=parseInt(U.style.height.substring(0,U.style.height.indexOf("px")));if(c=="tl"||c=="bl"){U.style.left=this.settings[c].radius-m-1+"px"}if(c=="tr"||c=="tl"){U.style.top=this.settings[c].radius-o-e+"px"}switch(c){case"tr":U.style.backgroundPosition="-"+Math.abs((this.boxWidth-this.settings[c].radius+this.borderWidth)+m)+"px -"+Math.abs(this.settings[c].radius-o-e-this.borderWidth)+"px";break;case"tl":U.style.backgroundPosition="-"+Math.abs((this.settings[c].radius-m-1)-this.borderWidth)+"px -"+Math.abs(this.settings[c].radius-o-e-this.borderWidth)+"px";break;case"bl":U.style.backgroundPosition="-"+Math.abs((this.settings[c].radius-m-1)-this.borderWidth)+"px -"+Math.abs((this.boxHeight+this.settings[c].radius+e)-this.borderWidth)+"px";break}}}}if(V){switch(c){case"tl":if(V.style.position=="absolute"){V.style.top="0px"}if(V.style.position=="absolute"){V.style.left="0px"}if(this.topContainer){this.topContainer.appendChild(V)}break;case"tr":if(V.style.position=="absolute"){V.style.top="0px"}if(V.style.position=="absolute"){V.style.right="0px"}if(this.topContainer){this.topContainer.appendChild(V)}break;case"bl":if(V.style.position=="absolute"){V.style.bottom="0px"}if(V.style.position=="absolute"){V.style.left="0px"}if(this.bottomContainer){this.bottomContainer.appendChild(V)}break;case"br":if(V.style.position=="absolute"){V.style.bottom="0px"}if(V.style.position=="absolute"){V.style.right="0px"}if(this.bottomContainer){this.bottomContainer.appendChild(V)}break}}}}var Y=new Array();Y.t=Math.abs(this.settings.tl.radius-this.settings.tr.radius);Y.b=Math.abs(this.settings.bl.radius-this.settings.br.radius);for(z in Y){if(z=="t"||z=="b"){if(Y[z]){var l=((this.settings[z+"l"].radius<this.settings[z+"r"].radius)?z+"l":z+"r");var N=document.createElement("DIV");N.style.height=Y[z]+"px";N.style.width=this.settings[l].radius+"px";N.style.position="absolute";N.style.fontSize="1px";N.style.overflow="hidden";N.style.backgroundColor=this.boxColour;switch(l){case"tl":N.style.bottom="0px";N.style.left="0px";N.style.borderLeft=this.borderString;this.topContainer.appendChild(N);break;case"tr":N.style.bottom="0px";N.style.right="0px";N.style.borderRight=this.borderString;this.topContainer.appendChild(N);break;case"bl":N.style.top="0px";N.style.left="0px";N.style.borderLeft=this.borderString;this.bottomContainer.appendChild(N);break;case"br":N.style.top="0px";N.style.right="0px";N.style.borderRight=this.borderString;this.bottomContainer.appendChild(N);break}}var P=document.createElement("DIV");P.style.position="relative";P.style.fontSize="1px";P.style.overflow="hidden";P.style.backgroundColor=this.boxColour;P.style.backgroundImage=this.backgroundImage;switch(z){case"t":if(this.topContainer){if(this.settings.tl.radius&&this.settings.tr.radius){P.style.height=R-this.borderWidth+"px";P.style.marginLeft=this.settings.tl.radius-this.borderWidth+"px";P.style.marginRight=this.settings.tr.radius-this.borderWidth+"px";P.style.borderTop=this.borderString;if(this.backgroundImage!=""){P.style.backgroundPosition="-"+(R-this.borderWidth)+"px 0px"}this.topContainer.appendChild(P)}this.box.style.backgroundPosition="0px -"+(R-this.borderWidth)+"px"}break;case"b":if(this.bottomContainer){if(this.settings.bl.radius&&this.settings.br.radius){P.style.height=X-this.borderWidth+"px";P.style.marginLeft=this.settings.bl.radius-this.borderWidth+"px";P.style.marginRight=this.settings.br.radius-this.borderWidth+"px";P.style.borderBottom=this.borderString;if(this.backgroundImage!=""){P.style.backgroundPosition="-"+(X-this.borderWidth)+"px -"+(this.boxHeight+(R-this.borderWidth))+"px"}this.bottomContainer.appendChild(P)}}break}}}if(this.settings.autoPad==true&&this.boxPadding>0){var a=document.createElement("DIV");a.style.position="relative";a.innerHTML=this.boxContent;a.className="autoPadDiv";var n=Math.abs(R-this.boxPadding);var p=Math.abs(X-this.boxPadding);if(R<this.boxPadding){a.style.paddingTop=n+"px"}if(X<this.boxPadding){a.style.paddingBottom=X+"px"}a.style.paddingLeft=this.boxPadding+"px";a.style.paddingRight=this.boxPadding+"px";this.contentDIV=this.box.appendChild(a)}};this.drawPixel=function(R,O,I,N,P,Q,K,M){var J=document.createElement("DIV");J.style.height=P+"px";J.style.width="1px";J.style.position="absolute";J.style.fontSize="1px";J.style.overflow="hidden";var L=Math.max(this.settings.tr.radius,this.settings.tl.radius);if(K==-1&&this.backgroundImage!=""){J.style.backgroundImage=this.backgroundImage;J.style.backgroundPosition="-"+(this.boxWidth-(M-R)+this.borderWidth)+"px -"+((this.boxHeight+L+O)-this.borderWidth)+"px"}else{J.style.backgroundColor=I}if(N!=100){setOpacity(J,N)}J.style.top=O+"px";J.style.left=R+"px";Q.appendChild(J)}}function insertAfter(B,C,A){B.insertBefore(C,A.nextSibling)}function BlendColour(L,J,G){var D=parseInt(L.substr(1,2),16);var K=parseInt(L.substr(3,2),16);var F=parseInt(L.substr(5,2),16);var C=parseInt(J.substr(1,2),16);var I=parseInt(J.substr(3,2),16);var E=parseInt(J.substr(5,2),16);if(G>1||G<0){G=1}var H=Math.round((D*G)+(C*(1-G)));if(H>255){H=255}if(H<0){H=0}var B=Math.round((K*G)+(I*(1-G)));if(B>255){B=255}if(B<0){B=0}var A=Math.round((F*G)+(E*(1-G)));if(A>255){A=255}if(A<0){A=0}return"#"+IntToHex(H)+IntToHex(B)+IntToHex(A)}function IntToHex(A){base=A/16;rem=A%16;base=base-(rem/16);baseS=MakeHex(base);remS=MakeHex(rem);return baseS+""+remS}function MakeHex(A){if((A>=0)&&(A<=9)){return A}else{switch(A){case 10:return"A";case 11:return"B";case 12:return"C";case 13:return"D";case 14:return"E";case 15:return"F"}}}function pixelFraction(H,G,A){var C=0;var B=new Array(1);var F=new Array(1);var I=0;var D="";var E=Math.sqrt((Math.pow(A,2)-Math.pow(H,2)));if((E>=G)&&(E<(G+1))){D="Left";B[I]=0;F[I]=E-G;I=I+1}var E=Math.sqrt((Math.pow(A,2)-Math.pow(G+1,2)));if((E>=H)&&(E<(H+1))){D=D+"Top";B[I]=E-H;F[I]=1;I=I+1}var E=Math.sqrt((Math.pow(A,2)-Math.pow(H+1,2)));if((E>=G)&&(E<(G+1))){D=D+"Right";B[I]=1;F[I]=E-G;I=I+1}var E=Math.sqrt((Math.pow(A,2)-Math.pow(G,2)));if((E>=H)&&(E<(H+1))){D=D+"Bottom";B[I]=E-H;F[I]=0}switch(D){case"LeftRight":C=Math.min(F[0],F[1])+((Math.max(F[0],F[1])-Math.min(F[0],F[1]))/2);break;case"TopRight":C=1-(((1-B[0])*(1-F[1]))/2);break;case"TopBottom":C=Math.min(B[0],B[1])+((Math.max(B[0],B[1])-Math.min(B[0],B[1]))/2);break;case"LeftBottom":C=(F[0]*B[1])/2;break;default:C=1}return C}function rgb2Hex(B){try{var C=rgb2Array(B);var G=parseInt(C[0]);var E=parseInt(C[1]);var A=parseInt(C[2]);var D="#"+IntToHex(G)+IntToHex(E)+IntToHex(A)}catch(F){alert("There was an error converting the RGB value to Hexadecimal in function rgb2Hex")}return D}function rgb2Array(A){var C=A.substring(4,A.indexOf(")"));var B=C.split(", ");return B}function setOpacity(F,C){C=(C==100)?99.999:C;if(isSafari&&F.tagName!="IFRAME"){var B=rgb2Array(F.style.backgroundColor);var E=parseInt(B[0]);var D=parseInt(B[1]);var A=parseInt(B[2]);F.style.backgroundColor="rgba("+E+", "+D+", "+A+", "+C/100+")"}else{if(typeof(F.style.opacity)!="undefined"){F.style.opacity=C/100}else{if(typeof(F.style.MozOpacity)!="undefined"){F.style.MozOpacity=C/100}else{if(typeof(F.style.filter)!="undefined"){F.style.filter="alpha(opacity:"+C+")"}else{if(typeof(F.style.KHTMLOpacity)!="undefined"){F.style.KHTMLOpacity=C/100}}}}}}function inArray(C,B){for(var A=0;A<C.length;A++){if(C[A]===B){return A}}return false}function inArrayKey(B,A){for(key in B){if(key===A){return true}}return false}function addEvent(E,D,B,A){if(E.addEventListener){E.addEventListener(D,B,A);return true}else{if(E.attachEvent){var C=E.attachEvent("on"+D,B);return C}else{E["on"+D]=B}}}function removeEvent(E,D,B,A){if(E.removeEventListener){E.removeEventListener(D,B,A);return true}else{if(E.detachEvent){var C=E.detachEvent("on"+D,B);return C}else{alert("Handler could not be removed")}}}function format_colour(B){var A="#ffffff";if(B!=""&&B!="transparent"){if(B.substr(0,3)=="rgb"){A=rgb2Hex(B)}else{if(B.length==4){A="#"+B.substring(1,2)+B.substring(1,2)+B.substring(2,3)+B.substring(2,3)+B.substring(3,4)+B.substring(3,4)}else{A=B}}}return A}function get_style(obj,property,propertyNS){try{if(obj.currentStyle){var returnVal=eval("obj.currentStyle."+property)}else{if(isSafari&&obj.style.display=="none"){obj.style.display="";var wasHidden=true}var returnVal=document.defaultView.getComputedStyle(obj,"").getPropertyValue(propertyNS);if(isSafari&&wasHidden){obj.style.display="none"}}}catch(e){}return returnVal}function getElementsByClass(G,E,A){var D=new Array();if(E==null){E=document}if(A==null){A="*"}var C=E.getElementsByTagName(A);var B=C.length;var F=new RegExp("(^|s)"+G+"(s|$)");for(i=0,j=0;i<B;i++){if(F.test(C[i].className)){D[j]=C[i];j++}}return D}function newCurvyError(A){return new Error("curvyCorners Error:\n"+A)};
|
data/website/screen.css
DELETED
@@ -1,149 +0,0 @@
|
|
1
|
-
body {
|
2
|
-
background-color: #b33;
|
3
|
-
font-family: Georgia, sans-serif;
|
4
|
-
font-size: 16px;
|
5
|
-
line-height: 1.6em;
|
6
|
-
padding: 1.6em 0 0 0;
|
7
|
-
color: #FFF;
|
8
|
-
}
|
9
|
-
|
10
|
-
h1, h2, h3, h4, h5, h6 {
|
11
|
-
color: #FFF;
|
12
|
-
}
|
13
|
-
|
14
|
-
h1 {
|
15
|
-
font-family: sans-serif;
|
16
|
-
font-weight: normal;
|
17
|
-
font-size: 4em;
|
18
|
-
line-height: 0.8em;
|
19
|
-
letter-spacing: -0.1ex;
|
20
|
-
margin: 5px;
|
21
|
-
}
|
22
|
-
|
23
|
-
li {
|
24
|
-
padding: 0;
|
25
|
-
margin: 0;
|
26
|
-
list-style-type: square;
|
27
|
-
}
|
28
|
-
|
29
|
-
a {
|
30
|
-
color: #5E5AFF;
|
31
|
-
background-color: #DAC;
|
32
|
-
font-weight: normal;
|
33
|
-
text-decoration: underline;
|
34
|
-
}
|
35
|
-
|
36
|
-
blockquote {
|
37
|
-
font-size: 90%;
|
38
|
-
font-style: italic;
|
39
|
-
border-left: 1px solid #111;
|
40
|
-
padding-left: 1em;
|
41
|
-
}
|
42
|
-
|
43
|
-
.caps {
|
44
|
-
font-size: 80%;
|
45
|
-
}
|
46
|
-
|
47
|
-
#main {
|
48
|
-
width: 45em;
|
49
|
-
padding: 0;
|
50
|
-
margin: 0 auto;
|
51
|
-
}
|
52
|
-
|
53
|
-
.coda {
|
54
|
-
text-align: right;
|
55
|
-
color: #77f;
|
56
|
-
font-size: smaller;
|
57
|
-
}
|
58
|
-
|
59
|
-
table {
|
60
|
-
font-size: 90%;
|
61
|
-
line-height: 1.4em;
|
62
|
-
color: #ff8;
|
63
|
-
background-color: #111;
|
64
|
-
padding: 2px 10px 2px 10px;
|
65
|
-
border-style: dashed;
|
66
|
-
}
|
67
|
-
|
68
|
-
th {
|
69
|
-
color: #fff;
|
70
|
-
}
|
71
|
-
|
72
|
-
td {
|
73
|
-
padding: 2px 10px 2px 10px;
|
74
|
-
}
|
75
|
-
|
76
|
-
.success {
|
77
|
-
color: #0CC52B;
|
78
|
-
}
|
79
|
-
|
80
|
-
.failed {
|
81
|
-
color: #E90A1B;
|
82
|
-
}
|
83
|
-
|
84
|
-
.unknown {
|
85
|
-
color: #995000;
|
86
|
-
}
|
87
|
-
|
88
|
-
pre, code {
|
89
|
-
font-family: monospace;
|
90
|
-
font-size: 90%;
|
91
|
-
line-height: 1.4em;
|
92
|
-
color: #ff8;
|
93
|
-
background-color: #111;
|
94
|
-
padding: 2px 10px 2px 10px;
|
95
|
-
}
|
96
|
-
|
97
|
-
.comment { color: #aaa; font-style: italic; }
|
98
|
-
.keyword { color: #eff; font-weight: bold; }
|
99
|
-
.punct { color: #eee; font-weight: bold; }
|
100
|
-
.symbol { color: #0bb; }
|
101
|
-
.string { color: #6b4; }
|
102
|
-
.ident { color: #ff8; }
|
103
|
-
.constant { color: #66f; }
|
104
|
-
.regex { color: #ec6; }
|
105
|
-
.number { color: #F99; }
|
106
|
-
.expr { color: #227; }
|
107
|
-
|
108
|
-
.sidebar {
|
109
|
-
float: right;
|
110
|
-
}
|
111
|
-
|
112
|
-
#version {
|
113
|
-
width: 170px;
|
114
|
-
padding: 15px 20px 10px 20px;
|
115
|
-
margin: 0 auto;
|
116
|
-
text-align: right;
|
117
|
-
font-family: sans-serif;
|
118
|
-
font-weight: normal;
|
119
|
-
border: 3px solid #DDD;
|
120
|
-
background-color: #468EFF;
|
121
|
-
color: #EEE;
|
122
|
-
}
|
123
|
-
|
124
|
-
#version .numbers {
|
125
|
-
display: block;
|
126
|
-
font-size: 4em;
|
127
|
-
line-height: 0.8em;
|
128
|
-
letter-spacing: -0.1ex;
|
129
|
-
margin-bottom: 15px;
|
130
|
-
}
|
131
|
-
|
132
|
-
#version p {
|
133
|
-
text-decoration: none;
|
134
|
-
color: #EEE;
|
135
|
-
background-color: #468EFF;
|
136
|
-
margin: 0;
|
137
|
-
padding: 0;
|
138
|
-
}
|
139
|
-
|
140
|
-
#version a {
|
141
|
-
text-decoration: none;
|
142
|
-
color: #EEE;
|
143
|
-
background-color: #468EFF;
|
144
|
-
}
|
145
|
-
|
146
|
-
.clickable {
|
147
|
-
cursor: pointer;
|
148
|
-
cursor: hand;
|
149
|
-
}
|
data/website/template.html.erb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
3
|
-
<head>
|
4
|
-
<!-- link rel="stylesheet" href="screen.css" type="text/css" media="screen" / -->
|
5
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
-
<title>
|
7
|
-
<%= title %>
|
8
|
-
</title>
|
9
|
-
<script src="curvycorners.js" type="text/javascript"></script>
|
10
|
-
<style>
|
11
|
-
</style>
|
12
|
-
<script type="text/javascript">
|
13
|
-
window.onload = function() {
|
14
|
-
settings = {
|
15
|
-
tl: { radius: 10 },
|
16
|
-
tr: { radius: 10 },
|
17
|
-
bl: { radius: 10 },
|
18
|
-
br: { radius: 10 },
|
19
|
-
antiAlias: true,
|
20
|
-
autoPad: true,
|
21
|
-
validTags: ["div"]
|
22
|
-
}
|
23
|
-
var versionBox = new curvyCorners(settings, document.getElementById("version"));
|
24
|
-
versionBox.applyCornersToAll();
|
25
|
-
}
|
26
|
-
</script>
|
27
|
-
</head>
|
28
|
-
<body>
|
29
|
-
<div id="main">
|
30
|
-
<h1><%= title %></h1>
|
31
|
-
<div class="sidebar">
|
32
|
-
<div id="version" class="clickable" onclick='document.location = "<%= download %>"; return false'>
|
33
|
-
<p>Get Version</p>
|
34
|
-
<a href="<%= download %>" class="numbers"><%= version %></a>
|
35
|
-
</div>
|
36
|
-
</div>
|
37
|
-
<%= body %>
|
38
|
-
<p class="coda">
|
39
|
-
<a href="http://www.yes-no-cancel.co.uk/">Martin Kleppmann</a>
|
40
|
-
</p>
|
41
|
-
</div>
|
42
|
-
</body>
|
43
|
-
</html>
|