polyglot 0.3.2 → 0.3.3

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/Rakefile CHANGED
@@ -16,6 +16,7 @@ for the file type associated with a filename extension, and it
16
16
  augments 'require' to find and load matching files.}
17
17
  gem.email = %w[clifford.heath@gmail.com]
18
18
  gem.authors = ["Clifford Heath"]
19
+ gem.files.exclude "website/**/*.*", "script/*"
19
20
  end
20
21
  Jeweler::RubygemsDotOrgTasks.new
21
22
 
@@ -2,7 +2,7 @@ module Polyglot #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 3
5
- TINY = 2
5
+ TINY = 3
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
metadata CHANGED
@@ -1,81 +1,59 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: polyglot
3
- version: !ruby/object:Gem::Version
4
- hash: 23
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.3
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 3
9
- - 2
10
- version: 0.3.2
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Clifford Heath
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-07-27 00:00:00 Z
12
+ date: 2011-11-01 00:00:00.000000000 Z
19
13
  dependencies: []
14
+ description: ! '
20
15
 
21
- description: |-
22
-
23
16
  The Polyglot library allows a Ruby module to register a loader
17
+
24
18
  for the file type associated with a filename extension, and it
25
- augments 'require' to find and load matching files.
26
- email:
19
+
20
+ augments ''require'' to find and load matching files.'
21
+ email:
27
22
  - clifford.heath@gmail.com
28
23
  executables: []
29
-
30
24
  extensions: []
31
-
32
- extra_rdoc_files:
25
+ extra_rdoc_files:
33
26
  - README.txt
34
- files:
27
+ files:
35
28
  - History.txt
36
29
  - License.txt
37
30
  - README.txt
38
31
  - Rakefile
39
32
  - lib/polyglot.rb
40
33
  - lib/polyglot/version.rb
41
- - script/txt2html
42
- - website/index.html
43
- - website/index.txt
44
- - website/javascripts/rounded_corners_lite.inc.js
45
- - website/stylesheets/screen.css
46
- - website/template.rhtml
47
34
  homepage: http://github.com/cjheath/polyglot
48
- licenses:
35
+ licenses:
49
36
  - MIT
50
37
  post_install_message:
51
38
  rdoc_options: []
52
-
53
- require_paths:
39
+ require_paths:
54
40
  - lib
55
- required_ruby_version: !ruby/object:Gem::Requirement
41
+ required_ruby_version: !ruby/object:Gem::Requirement
56
42
  none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- hash: 3
61
- segments:
62
- - 0
63
- version: "0"
64
- required_rubygems_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
48
  none: false
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- hash: 3
70
- segments:
71
- - 0
72
- version: "0"
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
73
53
  requirements: []
74
-
75
54
  rubyforge_project:
76
- rubygems_version: 1.8.5
55
+ rubygems_version: 1.8.10
77
56
  signing_key:
78
57
  specification_version: 3
79
58
  summary: Augment 'require' to load non-Ruby file types
80
59
  test_files: []
81
-
@@ -1,74 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'rubygems'
4
- begin
5
- require 'newgem'
6
- rescue LoadError
7
- puts "\n\nGenerating the website requires the newgem RubyGem"
8
- puts "Install: gem install newgem\n\n"
9
- exit(1)
10
- end
11
- require 'redcloth'
12
- require 'syntax/convertors/html'
13
- require 'erb'
14
- require File.dirname(__FILE__) + '/../lib/polyglot/version.rb'
15
-
16
- version = Polyglot::VERSION::STRING
17
- download = 'http://rubyforge.org/projects/polyglot'
18
-
19
- class Fixnum
20
- def ordinal
21
- # teens
22
- return 'th' if (10..19).include?(self % 100)
23
- # others
24
- case self % 10
25
- when 1: return 'st'
26
- when 2: return 'nd'
27
- when 3: return 'rd'
28
- else return 'th'
29
- end
30
- end
31
- end
32
-
33
- class Time
34
- def pretty
35
- return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
36
- end
37
- end
38
-
39
- def convert_syntax(syntax, source)
40
- return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
41
- end
42
-
43
- if ARGV.length >= 1
44
- src, template = ARGV
45
- template ||= File.join(File.dirname(__FILE__), '/../website/template.rhtml')
46
-
47
- else
48
- puts("Usage: #{File.split($0).last} source.txt [template.rhtml] > output.html")
49
- exit!
50
- end
51
-
52
- template = ERB.new(File.open(template).read)
53
-
54
- title = nil
55
- body = nil
56
- File.open(src) do |fsrc|
57
- title_text = fsrc.readline
58
- body_text = fsrc.read
59
- syntax_items = []
60
- body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</\1>!m){
61
- ident = syntax_items.length
62
- element, syntax, source = $1, $2, $3
63
- syntax_items << "<#{element} class='syntax'>#{convert_syntax(syntax, source)}</#{element}>"
64
- "syntax-temp-#{ident}"
65
- }
66
- title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
67
- body = RedCloth.new(body_text).to_html
68
- body.gsub!(%r!(?:<pre><code>)?syntax-temp-(\d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
69
- end
70
- stat = File.stat(src)
71
- created = stat.ctime
72
- modified = stat.mtime
73
-
74
- $stdout << template.result(binding)
@@ -1,104 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
- <head>
5
- <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
- <title>
8
- polyglot
9
- </title>
10
- <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
- <style>
12
-
13
- </style>
14
- <script type="text/javascript">
15
- window.onload = function() {
16
- settings = {
17
- tl: { radius: 10 },
18
- tr: { radius: 10 },
19
- bl: { radius: 10 },
20
- br: { radius: 10 },
21
- antiAlias: true,
22
- autoPad: true,
23
- validTags: ["div"]
24
- }
25
- var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
- versionBox.applyCornersToAll();
27
- }
28
- </script>
29
- </head>
30
- <body>
31
- <div id="main">
32
-
33
- <h1>polyglot</h1>
34
- <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/polyglot"; return false'>
35
- <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/polyglot" class="numbers">0.3.2</a>
37
- </div>
38
- <h2>Poly =&gt; many, glot =&gt; languages</h2>
39
- <h2>What</h2>
40
- <p>Polyglot provides a registry of file types that can be loaded by<br />
41
- calling its improved version of &#8216;require&#8217;. Each file extension<br />
42
- that can be handled by a custom loader is registered by calling<br />
43
- Polyglot.register(&#8220;ext&#8221;, &lt;class&gt;), and then you can simply<br />
44
- require &#8220;somefile&#8221;, which will find and load &#8220;somefile.ext&#8221;<br />
45
- using your custom loader.</p>
46
- <p>This supports the creation of DSLs having a syntax that is most<br />
47
- appropriate to their purpose, instead of abusing the Ruby syntax.</p>
48
- <p>Required files are attempted first using the normal Ruby loader,<br />
49
- and if that fails, Polyglot conducts a search for a file having<br />
50
- a supported extension.</p>
51
- <h2>Installing</h2>
52
- <p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">polyglot</span></pre></p>
53
- <h2>Example</h2>
54
- <p>Define and register your file type loader in file rubyglot.rb:</p>
55
- <pre> require 'polyglot'
56
- class RubyglotLoader
57
- def self.load(filename, options = nil, &amp;block)
58
- File.open(filename) {|file|
59
- # Load the contents of file as Ruby code:
60
- # Implement your parser here instead!
61
- Kernel.eval(file.read)
62
- }
63
- end
64
- end
65
- Polyglot.register("rgl", RubyglotLoader)
66
- </pre>
67
- <p>This file, hello.rgl, will be loaded (this simple example uses Ruby code):</p>
68
- <pre> puts "Initializing"
69
- class Hello
70
- def initialize()
71
- puts "Hello, world\n"
72
- end
73
- end
74
- </pre>
75
- <p>Call it from file test.rb:</p>
76
- <pre> require 'rubyglot' # Create my file type handler
77
- require 'hello' # Can add extra options or even a block here
78
- puts "Ready to go"
79
- Hello.new
80
- </pre>
81
- <p>Run:</p>
82
- <pre> $ ruby test.rb
83
- Initializing
84
- Ready to go
85
- Hello, world
86
- $
87
- </pre>
88
- <h2>How to submit patches</h2>
89
- <p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people&#8217;s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8z-email">8z: Submit patch</a>, email me on the link below.</p>
90
- <p>The trunk repository is <code>http://github.com/cjheath/polyglot</code>.</p>
91
- <h2>License</h2>
92
- <p>This code is free to use under the terms of the <span class="caps">MIT</span> license.</p>
93
- <h2>Contact</h2>
94
- <p>Comments are welcome. Send an email to <a href="http://github.com/cjheath">Clifford Heath</a></p>
95
- <p class="coda">
96
- <a href="cjheath@rubyforge.org">Clifford Heath</a>, 15th June 2010<br>
97
- Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
98
- </p>
99
- </div>
100
-
101
- <!-- insert site tracking codes here, like Google Urchin -->
102
-
103
- </body>
104
- </html>
@@ -1,83 +0,0 @@
1
- h1. polyglot
2
-
3
- h2. Poly => many, glot => languages
4
-
5
-
6
- h2. What
7
-
8
- Polyglot provides a registry of file types that can be loaded by
9
- calling its improved version of 'require'. Each file extension
10
- that can be handled by a custom loader is registered by calling
11
- Polyglot.register("ext", &lt;class&gt;), and then you can simply
12
- require "somefile", which will find and load "somefile.ext"
13
- using your custom loader.
14
-
15
- This supports the creation of DSLs having a syntax that is most
16
- appropriate to their purpose, instead of abusing the Ruby syntax.
17
-
18
- Required files are attempted first using the normal Ruby loader,
19
- and if that fails, Polyglot conducts a search for a file having
20
- a supported extension.
21
-
22
- h2. Installing
23
-
24
- <pre syntax="ruby">sudo gem install polyglot</pre>
25
-
26
- h2. Example
27
-
28
- Define and register your file type loader in file rubyglot.rb:
29
-
30
- <pre> require 'polyglot'
31
- class RubyglotLoader
32
- def self.load(filename, options = nil, &block)
33
- File.open(filename) {|file|
34
- # Load the contents of file as Ruby code:
35
- # Implement your parser here instead!
36
- Kernel.eval(file.read)
37
- }
38
- end
39
- end
40
- Polyglot.register("rgl", RubyglotLoader)
41
- </pre>
42
-
43
- This file, hello.rgl, will be loaded (this simple example uses Ruby code):
44
-
45
- <pre> puts "Initializing"
46
- class Hello
47
- def initialize()
48
- puts "Hello, world\n"
49
- end
50
- end
51
- </pre>
52
-
53
- Call it from file test.rb:
54
-
55
- <pre> require 'rubyglot' # Create my file type handler
56
- require 'hello' # Can add extra options or even a block here
57
- puts "Ready to go"
58
- Hello.new
59
- </pre>
60
-
61
- Run:
62
-
63
- <pre> $ ruby test.rb
64
- Initializing
65
- Ready to go
66
- Hello, world
67
- $
68
- </pre>
69
-
70
-
71
- h2. How to submit patches
72
-
73
- Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8z: Submit patch":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8z-email, email me on the link below.
74
-
75
- The trunk repository is <code>http://github.com/cjheath/polyglot</code>.
76
-
77
- h2. License
78
-
79
- This code is free to use under the terms of the MIT license.
80
-
81
- h2. Contact
82
-
83
- Comments are welcome. Send an email to "Clifford Heath":http://github.com/cjheath
@@ -1,285 +0,0 @@
1
-
2
- /****************************************************************
3
- * *
4
- * curvyCorners *
5
- * ------------ *
6
- * *
7
- * This script generates rounded corners for your divs. *
8
- * *
9
- * Version 1.2.9 *
10
- * Copyright (c) 2006 Cameron Cooke *
11
- * By: Cameron Cooke and Tim Hutchison. *
12
- * *
13
- * *
14
- * Website: http://www.curvycorners.net *
15
- * Email: info@totalinfinity.com *
16
- * Forum: http://www.curvycorners.net/forum/ *
17
- * *
18
- * *
19
- * This library is free software; you can redistribute *
20
- * it and/or modify it under the terms of the GNU *
21
- * Lesser General Public License as published by the *
22
- * Free Software Foundation; either version 2.1 of the *
23
- * License, or (at your option) any later version. *
24
- * *
25
- * This library is distributed in the hope that it will *
26
- * be useful, but WITHOUT ANY WARRANTY; without even the *
27
- * implied warranty of MERCHANTABILITY or FITNESS FOR A *
28
- * PARTICULAR PURPOSE. See the GNU Lesser General Public *
29
- * License for more details. *
30
- * *
31
- * You should have received a copy of the GNU Lesser *
32
- * General Public License along with this library; *
33
- * Inc., 59 Temple Place, Suite 330, Boston, *
34
- * MA 02111-1307 USA *
35
- * *
36
- ****************************************************************/
37
-
38
- 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()
39
- { 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")
40
- { var startIndex = 0; var boxCol = getElementsByClass(arguments[1]);}
41
- else
42
- { var startIndex = 1; var boxCol = arguments;}
43
- var curvyCornersCol = new Array(); if(arguments[0].validTags)
44
- var validElements = arguments[0].validTags; else
45
- var validElements = ["div"]; for(var i = startIndex, j = boxCol.length; i < j; i++)
46
- { var currentTag = boxCol[i].tagName.toLowerCase(); if(inArray(validElements, currentTag) !== false)
47
- { curvyCornersCol[curvyCornersCol.length] = new curvyObject(arguments[0], boxCol[i]);}
48
- }
49
- this.objects = curvyCornersCol; this.applyCornersToAll = function()
50
- { for(var x = 0, k = this.objects.length; x < k; x++)
51
- { this.objects[x].applyCorners();}
52
- }
53
- }
54
- function curvyObject()
55
- { this.box = arguments[1]; this.settings = arguments[0]; this.topContainer = null; this.bottomContainer = null; this.masterCorners = new Array(); this.contentDIV = null; var boxHeight = get_style(this.box, "height", "height"); var boxWidth = get_style(this.box, "width", "width"); var borderWidth = get_style(this.box, "borderTopWidth", "border-top-width"); var borderColour = get_style(this.box, "borderTopColor", "border-top-color"); var boxColour = get_style(this.box, "backgroundColor", "background-color"); var backgroundImage = get_style(this.box, "backgroundImage", "background-image"); var boxPosition = get_style(this.box, "position", "position"); var boxPadding = get_style(this.box, "paddingTop", "padding-top"); this.boxHeight = parseInt(((boxHeight != "" && boxHeight != "auto" && boxHeight.indexOf("%") == -1)? boxHeight.substring(0, boxHeight.indexOf("px")) : this.box.scrollHeight)); this.boxWidth = parseInt(((boxWidth != "" && boxWidth != "auto" && boxWidth.indexOf("%") == -1)? boxWidth.substring(0, boxWidth.indexOf("px")) : this.box.scrollWidth)); this.borderWidth = parseInt(((borderWidth != "" && borderWidth.indexOf("px") !== -1)? borderWidth.slice(0, borderWidth.indexOf("px")) : 0)); this.boxColour = format_colour(boxColour); this.boxPadding = parseInt(((boxPadding != "" && boxPadding.indexOf("px") !== -1)? boxPadding.slice(0, boxPadding.indexOf("px")) : 0)); this.borderColour = format_colour(borderColour); this.borderString = this.borderWidth + "px" + " solid " + this.borderColour; this.backgroundImage = ((backgroundImage != "none")? backgroundImage : ""); this.boxContent = this.box.innerHTML; if(boxPosition != "absolute") this.box.style.position = "relative"; this.box.style.padding = "0px"; if(isIE && boxWidth == "auto" && boxHeight == "auto") this.box.style.width = "100%"; if(this.settings.autoPad == true && this.boxPadding > 0)
56
- this.box.innerHTML = ""; this.applyCorners = function()
57
- { for(var t = 0; t < 2; t++)
58
- { switch(t)
59
- { case 0:
60
- if(this.settings.tl || this.settings.tr)
61
- { var newMainContainer = document.createElement("DIV"); newMainContainer.style.width = "100%"; newMainContainer.style.fontSize = "1px"; newMainContainer.style.overflow = "hidden"; newMainContainer.style.position = "absolute"; newMainContainer.style.paddingLeft = this.borderWidth + "px"; newMainContainer.style.paddingRight = this.borderWidth + "px"; var topMaxRadius = Math.max(this.settings.tl ? this.settings.tl.radius : 0, this.settings.tr ? this.settings.tr.radius : 0); newMainContainer.style.height = topMaxRadius + "px"; newMainContainer.style.top = 0 - topMaxRadius + "px"; newMainContainer.style.left = 0 - this.borderWidth + "px"; this.topContainer = this.box.appendChild(newMainContainer);}
62
- break; case 1:
63
- if(this.settings.bl || this.settings.br)
64
- { var newMainContainer = document.createElement("DIV"); newMainContainer.style.width = "100%"; newMainContainer.style.fontSize = "1px"; newMainContainer.style.overflow = "hidden"; newMainContainer.style.position = "absolute"; newMainContainer.style.paddingLeft = this.borderWidth + "px"; newMainContainer.style.paddingRight = this.borderWidth + "px"; var botMaxRadius = Math.max(this.settings.bl ? this.settings.bl.radius : 0, this.settings.br ? this.settings.br.radius : 0); newMainContainer.style.height = botMaxRadius + "px"; newMainContainer.style.bottom = 0 - botMaxRadius + "px"; newMainContainer.style.left = 0 - this.borderWidth + "px"; this.bottomContainer = this.box.appendChild(newMainContainer);}
65
- break;}
66
- }
67
- if(this.topContainer) this.box.style.borderTopWidth = "0px"; if(this.bottomContainer) this.box.style.borderBottomWidth = "0px"; var corners = ["tr", "tl", "br", "bl"]; for(var i in corners)
68
- { if(i > -1 < 4)
69
- { var cc = corners[i]; if(!this.settings[cc])
70
- { if(((cc == "tr" || cc == "tl") && this.topContainer != null) || ((cc == "br" || cc == "bl") && this.bottomContainer != null))
71
- { var newCorner = document.createElement("DIV"); newCorner.style.position = "relative"; newCorner.style.fontSize = "1px"; newCorner.style.overflow = "hidden"; if(this.backgroundImage == "")
72
- newCorner.style.backgroundColor = this.boxColour; else
73
- newCorner.style.backgroundImage = this.backgroundImage; switch(cc)
74
- { case "tl":
75
- newCorner.style.height = topMaxRadius - this.borderWidth + "px"; newCorner.style.marginRight = this.settings.tr.radius - (this.borderWidth*2) + "px"; newCorner.style.borderLeft = this.borderString; newCorner.style.borderTop = this.borderString; newCorner.style.left = -this.borderWidth + "px"; break; case "tr":
76
- newCorner.style.height = topMaxRadius - this.borderWidth + "px"; newCorner.style.marginLeft = this.settings.tl.radius - (this.borderWidth*2) + "px"; newCorner.style.borderRight = this.borderString; newCorner.style.borderTop = this.borderString; newCorner.style.backgroundPosition = "-" + (topMaxRadius + this.borderWidth) + "px 0px"; newCorner.style.left = this.borderWidth + "px"; break; case "bl":
77
- newCorner.style.height = botMaxRadius - this.borderWidth + "px"; newCorner.style.marginRight = this.settings.br.radius - (this.borderWidth*2) + "px"; newCorner.style.borderLeft = this.borderString; newCorner.style.borderBottom = this.borderString; newCorner.style.left = -this.borderWidth + "px"; newCorner.style.backgroundPosition = "-" + (this.borderWidth) + "px -" + (this.boxHeight + (botMaxRadius + this.borderWidth)) + "px"; break; case "br":
78
- newCorner.style.height = botMaxRadius - this.borderWidth + "px"; newCorner.style.marginLeft = this.settings.bl.radius - (this.borderWidth*2) + "px"; newCorner.style.borderRight = this.borderString; newCorner.style.borderBottom = this.borderString; newCorner.style.left = this.borderWidth + "px"
79
- newCorner.style.backgroundPosition = "-" + (botMaxRadius + this.borderWidth) + "px -" + (this.boxHeight + (botMaxRadius + this.borderWidth)) + "px"; break;}
80
- }
81
- }
82
- else
83
- { if(this.masterCorners[this.settings[cc].radius])
84
- { var newCorner = this.masterCorners[this.settings[cc].radius].cloneNode(true);}
85
- else
86
- { var newCorner = document.createElement("DIV"); newCorner.style.height = this.settings[cc].radius + "px"; newCorner.style.width = this.settings[cc].radius + "px"; newCorner.style.position = "absolute"; newCorner.style.fontSize = "1px"; newCorner.style.overflow = "hidden"; var borderRadius = parseInt(this.settings[cc].radius - this.borderWidth); for(var intx = 0, j = this.settings[cc].radius; intx < j; intx++)
87
- { if((intx +1) >= borderRadius)
88
- var y1 = -1; else
89
- var y1 = (Math.floor(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow((intx+1), 2))) - 1); if(borderRadius != j)
90
- { if((intx) >= borderRadius)
91
- var y2 = -1; else
92
- var y2 = Math.ceil(Math.sqrt(Math.pow(borderRadius,2) - Math.pow(intx, 2))); if((intx+1) >= j)
93
- var y3 = -1; else
94
- var y3 = (Math.floor(Math.sqrt(Math.pow(j ,2) - Math.pow((intx+1), 2))) - 1);}
95
- if((intx) >= j)
96
- var y4 = -1; else
97
- var y4 = Math.ceil(Math.sqrt(Math.pow(j ,2) - Math.pow(intx, 2))); if(y1 > -1) this.drawPixel(intx, 0, this.boxColour, 100, (y1+1), newCorner, -1, this.settings[cc].radius); if(borderRadius != j)
98
- { for(var inty = (y1 + 1); inty < y2; inty++)
99
- { if(this.settings.antiAlias)
100
- { if(this.backgroundImage != "")
101
- { var borderFract = (pixelFraction(intx, inty, borderRadius) * 100); if(borderFract < 30)
102
- { this.drawPixel(intx, inty, this.borderColour, 100, 1, newCorner, 0, this.settings[cc].radius);}
103
- else
104
- { this.drawPixel(intx, inty, this.borderColour, 100, 1, newCorner, -1, this.settings[cc].radius);}
105
- }
106
- else
107
- { var pixelcolour = BlendColour(this.boxColour, this.borderColour, pixelFraction(intx, inty, borderRadius)); this.drawPixel(intx, inty, pixelcolour, 100, 1, newCorner, 0, this.settings[cc].radius, cc);}
108
- }
109
- }
110
- if(this.settings.antiAlias)
111
- { if(y3 >= y2)
112
- { if (y2 == -1) y2 = 0; this.drawPixel(intx, y2, this.borderColour, 100, (y3 - y2 + 1), newCorner, 0, 0);}
113
- }
114
- else
115
- { if(y3 >= y1)
116
- { this.drawPixel(intx, (y1 + 1), this.borderColour, 100, (y3 - y1), newCorner, 0, 0);}
117
- }
118
- var outsideColour = this.borderColour;}
119
- else
120
- { var outsideColour = this.boxColour; var y3 = y1;}
121
- if(this.settings.antiAlias)
122
- { for(var inty = (y3 + 1); inty < y4; inty++)
123
- { this.drawPixel(intx, inty, outsideColour, (pixelFraction(intx, inty , j) * 100), 1, newCorner, ((this.borderWidth > 0)? 0 : -1), this.settings[cc].radius);}
124
- }
125
- }
126
- this.masterCorners[this.settings[cc].radius] = newCorner.cloneNode(true);}
127
- if(cc != "br")
128
- { for(var t = 0, k = newCorner.childNodes.length; t < k; t++)
129
- { var pixelBar = newCorner.childNodes[t]; var pixelBarTop = parseInt(pixelBar.style.top.substring(0, pixelBar.style.top.indexOf("px"))); var pixelBarLeft = parseInt(pixelBar.style.left.substring(0, pixelBar.style.left.indexOf("px"))); var pixelBarHeight = parseInt(pixelBar.style.height.substring(0, pixelBar.style.height.indexOf("px"))); if(cc == "tl" || cc == "bl"){ pixelBar.style.left = this.settings[cc].radius -pixelBarLeft -1 + "px";}
130
- if(cc == "tr" || cc == "tl"){ pixelBar.style.top = this.settings[cc].radius -pixelBarHeight -pixelBarTop + "px";}
131
- switch(cc)
132
- { case "tr":
133
- pixelBar.style.backgroundPosition = "-" + Math.abs((this.boxWidth - this.settings[cc].radius + this.borderWidth) + pixelBarLeft) + "px -" + Math.abs(this.settings[cc].radius -pixelBarHeight -pixelBarTop - this.borderWidth) + "px"; break; case "tl":
134
- pixelBar.style.backgroundPosition = "-" + Math.abs((this.settings[cc].radius -pixelBarLeft -1) - this.borderWidth) + "px -" + Math.abs(this.settings[cc].radius -pixelBarHeight -pixelBarTop - this.borderWidth) + "px"; break; case "bl":
135
- pixelBar.style.backgroundPosition = "-" + Math.abs((this.settings[cc].radius -pixelBarLeft -1) - this.borderWidth) + "px -" + Math.abs((this.boxHeight + this.settings[cc].radius + pixelBarTop) -this.borderWidth) + "px"; break;}
136
- }
137
- }
138
- }
139
- if(newCorner)
140
- { switch(cc)
141
- { case "tl":
142
- if(newCorner.style.position == "absolute") newCorner.style.top = "0px"; if(newCorner.style.position == "absolute") newCorner.style.left = "0px"; if(this.topContainer) this.topContainer.appendChild(newCorner); break; case "tr":
143
- if(newCorner.style.position == "absolute") newCorner.style.top = "0px"; if(newCorner.style.position == "absolute") newCorner.style.right = "0px"; if(this.topContainer) this.topContainer.appendChild(newCorner); break; case "bl":
144
- if(newCorner.style.position == "absolute") newCorner.style.bottom = "0px"; if(newCorner.style.position == "absolute") newCorner.style.left = "0px"; if(this.bottomContainer) this.bottomContainer.appendChild(newCorner); break; case "br":
145
- if(newCorner.style.position == "absolute") newCorner.style.bottom = "0px"; if(newCorner.style.position == "absolute") newCorner.style.right = "0px"; if(this.bottomContainer) this.bottomContainer.appendChild(newCorner); break;}
146
- }
147
- }
148
- }
149
- var radiusDiff = new Array(); radiusDiff["t"] = Math.abs(this.settings.tl.radius - this.settings.tr.radius)
150
- radiusDiff["b"] = Math.abs(this.settings.bl.radius - this.settings.br.radius); for(z in radiusDiff)
151
- { if(z == "t" || z == "b")
152
- { if(radiusDiff[z])
153
- { var smallerCornerType = ((this.settings[z + "l"].radius < this.settings[z + "r"].radius)? z +"l" : z +"r"); var newFiller = document.createElement("DIV"); newFiller.style.height = radiusDiff[z] + "px"; newFiller.style.width = this.settings[smallerCornerType].radius+ "px"
154
- newFiller.style.position = "absolute"; newFiller.style.fontSize = "1px"; newFiller.style.overflow = "hidden"; newFiller.style.backgroundColor = this.boxColour; switch(smallerCornerType)
155
- { case "tl":
156
- newFiller.style.bottom = "0px"; newFiller.style.left = "0px"; newFiller.style.borderLeft = this.borderString; this.topContainer.appendChild(newFiller); break; case "tr":
157
- newFiller.style.bottom = "0px"; newFiller.style.right = "0px"; newFiller.style.borderRight = this.borderString; this.topContainer.appendChild(newFiller); break; case "bl":
158
- newFiller.style.top = "0px"; newFiller.style.left = "0px"; newFiller.style.borderLeft = this.borderString; this.bottomContainer.appendChild(newFiller); break; case "br":
159
- newFiller.style.top = "0px"; newFiller.style.right = "0px"; newFiller.style.borderRight = this.borderString; this.bottomContainer.appendChild(newFiller); break;}
160
- }
161
- var newFillerBar = document.createElement("DIV"); newFillerBar.style.position = "relative"; newFillerBar.style.fontSize = "1px"; newFillerBar.style.overflow = "hidden"; newFillerBar.style.backgroundColor = this.boxColour; newFillerBar.style.backgroundImage = this.backgroundImage; switch(z)
162
- { case "t":
163
- if(this.topContainer)
164
- { if(this.settings.tl.radius && this.settings.tr.radius)
165
- { newFillerBar.style.height = topMaxRadius - this.borderWidth + "px"; newFillerBar.style.marginLeft = this.settings.tl.radius - this.borderWidth + "px"; newFillerBar.style.marginRight = this.settings.tr.radius - this.borderWidth + "px"; newFillerBar.style.borderTop = this.borderString; if(this.backgroundImage != "")
166
- newFillerBar.style.backgroundPosition = "-" + (topMaxRadius + this.borderWidth) + "px 0px"; this.topContainer.appendChild(newFillerBar);}
167
- this.box.style.backgroundPosition = "0px -" + (topMaxRadius - this.borderWidth) + "px";}
168
- break; case "b":
169
- if(this.bottomContainer)
170
- { if(this.settings.bl.radius && this.settings.br.radius)
171
- { newFillerBar.style.height = botMaxRadius - this.borderWidth + "px"; newFillerBar.style.marginLeft = this.settings.bl.radius - this.borderWidth + "px"; newFillerBar.style.marginRight = this.settings.br.radius - this.borderWidth + "px"; newFillerBar.style.borderBottom = this.borderString; if(this.backgroundImage != "")
172
- newFillerBar.style.backgroundPosition = "-" + (botMaxRadius + this.borderWidth) + "px -" + (this.boxHeight + (topMaxRadius + this.borderWidth)) + "px"; this.bottomContainer.appendChild(newFillerBar);}
173
- }
174
- break;}
175
- }
176
- }
177
- if(this.settings.autoPad == true && this.boxPadding > 0)
178
- { var contentContainer = document.createElement("DIV"); contentContainer.style.position = "relative"; contentContainer.innerHTML = this.boxContent; contentContainer.className = "autoPadDiv"; var topPadding = Math.abs(topMaxRadius - this.boxPadding); var botPadding = Math.abs(botMaxRadius - this.boxPadding); if(topMaxRadius < this.boxPadding)
179
- contentContainer.style.paddingTop = topPadding + "px"; if(botMaxRadius < this.boxPadding)
180
- contentContainer.style.paddingBottom = botMaxRadius + "px"; contentContainer.style.paddingLeft = this.boxPadding + "px"; contentContainer.style.paddingRight = this.boxPadding + "px"; this.contentDIV = this.box.appendChild(contentContainer);}
181
- }
182
- this.drawPixel = function(intx, inty, colour, transAmount, height, newCorner, image, cornerRadius)
183
- { var pixel = document.createElement("DIV"); pixel.style.height = height + "px"; pixel.style.width = "1px"; pixel.style.position = "absolute"; pixel.style.fontSize = "1px"; pixel.style.overflow = "hidden"; var topMaxRadius = Math.max(this.settings["tr"].radius, this.settings["tl"].radius); if(image == -1 && this.backgroundImage != "")
184
- { pixel.style.backgroundImage = this.backgroundImage; pixel.style.backgroundPosition = "-" + (this.boxWidth - (cornerRadius - intx) + this.borderWidth) + "px -" + ((this.boxHeight + topMaxRadius + inty) -this.borderWidth) + "px";}
185
- else
186
- { pixel.style.backgroundColor = colour;}
187
- if (transAmount != 100)
188
- setOpacity(pixel, transAmount); pixel.style.top = inty + "px"; pixel.style.left = intx + "px"; newCorner.appendChild(pixel);}
189
- }
190
- function insertAfter(parent, node, referenceNode)
191
- { parent.insertBefore(node, referenceNode.nextSibling);}
192
- function BlendColour(Col1, Col2, Col1Fraction)
193
- { var red1 = parseInt(Col1.substr(1,2),16); var green1 = parseInt(Col1.substr(3,2),16); var blue1 = parseInt(Col1.substr(5,2),16); var red2 = parseInt(Col2.substr(1,2),16); var green2 = parseInt(Col2.substr(3,2),16); var blue2 = parseInt(Col2.substr(5,2),16); if(Col1Fraction > 1 || Col1Fraction < 0) Col1Fraction = 1; var endRed = Math.round((red1 * Col1Fraction) + (red2 * (1 - Col1Fraction))); if(endRed > 255) endRed = 255; if(endRed < 0) endRed = 0; var endGreen = Math.round((green1 * Col1Fraction) + (green2 * (1 - Col1Fraction))); if(endGreen > 255) endGreen = 255; if(endGreen < 0) endGreen = 0; var endBlue = Math.round((blue1 * Col1Fraction) + (blue2 * (1 - Col1Fraction))); if(endBlue > 255) endBlue = 255; if(endBlue < 0) endBlue = 0; return "#" + IntToHex(endRed)+ IntToHex(endGreen)+ IntToHex(endBlue);}
194
- function IntToHex(strNum)
195
- { base = strNum / 16; rem = strNum % 16; base = base - (rem / 16); baseS = MakeHex(base); remS = MakeHex(rem); return baseS + '' + remS;}
196
- function MakeHex(x)
197
- { if((x >= 0) && (x <= 9))
198
- { return x;}
199
- else
200
- { switch(x)
201
- { case 10: return "A"; case 11: return "B"; case 12: return "C"; case 13: return "D"; case 14: return "E"; case 15: return "F";}
202
- }
203
- }
204
- function pixelFraction(x, y, r)
205
- { var pixelfraction = 0; var xvalues = new Array(1); var yvalues = new Array(1); var point = 0; var whatsides = ""; var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(x,2))); if ((intersect >= y) && (intersect < (y+1)))
206
- { whatsides = "Left"; xvalues[point] = 0; yvalues[point] = intersect - y; point = point + 1;}
207
- var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(y+1,2))); if ((intersect >= x) && (intersect < (x+1)))
208
- { whatsides = whatsides + "Top"; xvalues[point] = intersect - x; yvalues[point] = 1; point = point + 1;}
209
- var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(x+1,2))); if ((intersect >= y) && (intersect < (y+1)))
210
- { whatsides = whatsides + "Right"; xvalues[point] = 1; yvalues[point] = intersect - y; point = point + 1;}
211
- var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(y,2))); if ((intersect >= x) && (intersect < (x+1)))
212
- { whatsides = whatsides + "Bottom"; xvalues[point] = intersect - x; yvalues[point] = 0;}
213
- switch (whatsides)
214
- { case "LeftRight":
215
- pixelfraction = Math.min(yvalues[0],yvalues[1]) + ((Math.max(yvalues[0],yvalues[1]) - Math.min(yvalues[0],yvalues[1]))/2); break; case "TopRight":
216
- pixelfraction = 1-(((1-xvalues[0])*(1-yvalues[1]))/2); break; case "TopBottom":
217
- pixelfraction = Math.min(xvalues[0],xvalues[1]) + ((Math.max(xvalues[0],xvalues[1]) - Math.min(xvalues[0],xvalues[1]))/2); break; case "LeftBottom":
218
- pixelfraction = (yvalues[0]*xvalues[1])/2; break; default:
219
- pixelfraction = 1;}
220
- return pixelfraction;}
221
- function rgb2Hex(rgbColour)
222
- { try{ var rgbArray = rgb2Array(rgbColour); var red = parseInt(rgbArray[0]); var green = parseInt(rgbArray[1]); var blue = parseInt(rgbArray[2]); var hexColour = "#" + IntToHex(red) + IntToHex(green) + IntToHex(blue);}
223
- catch(e){ alert("There was an error converting the RGB value to Hexadecimal in function rgb2Hex");}
224
- return hexColour;}
225
- function rgb2Array(rgbColour)
226
- { var rgbValues = rgbColour.substring(4, rgbColour.indexOf(")")); var rgbArray = rgbValues.split(", "); return rgbArray;}
227
- function setOpacity(obj, opacity)
228
- { opacity = (opacity == 100)?99.999:opacity; if(isSafari && obj.tagName != "IFRAME")
229
- { var rgbArray = rgb2Array(obj.style.backgroundColor); var red = parseInt(rgbArray[0]); var green = parseInt(rgbArray[1]); var blue = parseInt(rgbArray[2]); obj.style.backgroundColor = "rgba(" + red + ", " + green + ", " + blue + ", " + opacity/100 + ")";}
230
- else if(typeof(obj.style.opacity) != "undefined")
231
- { obj.style.opacity = opacity/100;}
232
- else if(typeof(obj.style.MozOpacity) != "undefined")
233
- { obj.style.MozOpacity = opacity/100;}
234
- else if(typeof(obj.style.filter) != "undefined")
235
- { obj.style.filter = "alpha(opacity:" + opacity + ")";}
236
- else if(typeof(obj.style.KHTMLOpacity) != "undefined")
237
- { obj.style.KHTMLOpacity = opacity/100;}
238
- }
239
- function inArray(array, value)
240
- { for(var i = 0; i < array.length; i++){ if (array[i] === value) return i;}
241
- return false;}
242
- function inArrayKey(array, value)
243
- { for(key in array){ if(key === value) return true;}
244
- return false;}
245
- function addEvent(elm, evType, fn, useCapture) { if (elm.addEventListener) { elm.addEventListener(evType, fn, useCapture); return true;}
246
- else if (elm.attachEvent) { var r = elm.attachEvent('on' + evType, fn); return r;}
247
- else { elm['on' + evType] = fn;}
248
- }
249
- function removeEvent(obj, evType, fn, useCapture){ if (obj.removeEventListener){ obj.removeEventListener(evType, fn, useCapture); return true;} else if (obj.detachEvent){ var r = obj.detachEvent("on"+evType, fn); return r;} else { alert("Handler could not be removed");}
250
- }
251
- function format_colour(colour)
252
- { var returnColour = "#ffffff"; if(colour != "" && colour != "transparent")
253
- { if(colour.substr(0, 3) == "rgb")
254
- { returnColour = rgb2Hex(colour);}
255
- else if(colour.length == 4)
256
- { returnColour = "#" + colour.substring(1, 2) + colour.substring(1, 2) + colour.substring(2, 3) + colour.substring(2, 3) + colour.substring(3, 4) + colour.substring(3, 4);}
257
- else
258
- { returnColour = colour;}
259
- }
260
- return returnColour;}
261
- function get_style(obj, property, propertyNS)
262
- { try
263
- { if(obj.currentStyle)
264
- { var returnVal = eval("obj.currentStyle." + property);}
265
- else
266
- { if(isSafari && obj.style.display == "none")
267
- { obj.style.display = ""; var wasHidden = true;}
268
- var returnVal = document.defaultView.getComputedStyle(obj, '').getPropertyValue(propertyNS); if(isSafari && wasHidden)
269
- { obj.style.display = "none";}
270
- }
271
- }
272
- catch(e)
273
- { }
274
- return returnVal;}
275
- function getElementsByClass(searchClass, node, tag)
276
- { var classElements = new Array(); if(node == null)
277
- node = document; if(tag == null)
278
- tag = '*'; var els = node.getElementsByTagName(tag); var elsLen = els.length; var pattern = new RegExp("(^|\s)"+searchClass+"(\s|$)"); for (i = 0, j = 0; i < elsLen; i++)
279
- { if(pattern.test(els[i].className))
280
- { classElements[j] = els[i]; j++;}
281
- }
282
- return classElements;}
283
- function newCurvyError(errorMessage)
284
- { return new Error("curvyCorners Error:\n" + errorMessage)
285
- }
@@ -1,138 +0,0 @@
1
- body {
2
- background-color: #E1D1F1;
3
- font-family: "Georgia", sans-serif;
4
- font-size: 16px;
5
- line-height: 1.6em;
6
- padding: 1.6em 0 0 0;
7
- color: #333;
8
- }
9
- h1, h2, h3, h4, h5, h6 {
10
- color: #444;
11
- }
12
- h1 {
13
- font-family: sans-serif;
14
- font-weight: normal;
15
- font-size: 4em;
16
- line-height: 0.8em;
17
- letter-spacing: -0.1ex;
18
- margin: 5px;
19
- }
20
- li {
21
- padding: 0;
22
- margin: 0;
23
- list-style-type: square;
24
- }
25
- a {
26
- color: #5E5AFF;
27
- background-color: #DAC;
28
- font-weight: normal;
29
- text-decoration: underline;
30
- }
31
- blockquote {
32
- font-size: 90%;
33
- font-style: italic;
34
- border-left: 1px solid #111;
35
- padding-left: 1em;
36
- }
37
- .caps {
38
- font-size: 80%;
39
- }
40
-
41
- #main {
42
- width: 45em;
43
- padding: 0;
44
- margin: 0 auto;
45
- }
46
- .coda {
47
- text-align: right;
48
- color: #77f;
49
- font-size: smaller;
50
- }
51
-
52
- table {
53
- font-size: 90%;
54
- line-height: 1.4em;
55
- color: #ff8;
56
- background-color: #111;
57
- padding: 2px 10px 2px 10px;
58
- border-style: dashed;
59
- }
60
-
61
- th {
62
- color: #fff;
63
- }
64
-
65
- td {
66
- padding: 2px 10px 2px 10px;
67
- }
68
-
69
- .success {
70
- color: #0CC52B;
71
- }
72
-
73
- .failed {
74
- color: #E90A1B;
75
- }
76
-
77
- .unknown {
78
- color: #995000;
79
- }
80
- pre, code {
81
- font-family: monospace;
82
- font-size: 90%;
83
- line-height: 1.4em;
84
- color: #ff8;
85
- background-color: #111;
86
- padding: 2px 10px 2px 10px;
87
- }
88
- .comment { color: #aaa; font-style: italic; }
89
- .keyword { color: #eff; font-weight: bold; }
90
- .punct { color: #eee; font-weight: bold; }
91
- .symbol { color: #0bb; }
92
- .string { color: #6b4; }
93
- .ident { color: #ff8; }
94
- .constant { color: #66f; }
95
- .regex { color: #ec6; }
96
- .number { color: #F99; }
97
- .expr { color: #227; }
98
-
99
- #version {
100
- float: right;
101
- text-align: right;
102
- font-family: sans-serif;
103
- font-weight: normal;
104
- background-color: #B3ABFF;
105
- color: #141331;
106
- padding: 15px 20px 10px 20px;
107
- margin: 0 auto;
108
- margin-top: 15px;
109
- border: 3px solid #141331;
110
- }
111
-
112
- #version .numbers {
113
- display: block;
114
- font-size: 4em;
115
- line-height: 0.8em;
116
- letter-spacing: -0.1ex;
117
- margin-bottom: 15px;
118
- }
119
-
120
- #version p {
121
- text-decoration: none;
122
- color: #141331;
123
- background-color: #B3ABFF;
124
- margin: 0;
125
- padding: 0;
126
- }
127
-
128
- #version a {
129
- text-decoration: none;
130
- color: #141331;
131
- background-color: #B3ABFF;
132
- }
133
-
134
- .clickable {
135
- cursor: pointer;
136
- cursor: hand;
137
- }
138
-
@@ -1,48 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
- <head>
5
- <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
- <title>
8
- <%= title %>
9
- </title>
10
- <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
- <style>
12
-
13
- </style>
14
- <script type="text/javascript">
15
- window.onload = function() {
16
- settings = {
17
- tl: { radius: 10 },
18
- tr: { radius: 10 },
19
- bl: { radius: 10 },
20
- br: { radius: 10 },
21
- antiAlias: true,
22
- autoPad: true,
23
- validTags: ["div"]
24
- }
25
- var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
- versionBox.applyCornersToAll();
27
- }
28
- </script>
29
- </head>
30
- <body>
31
- <div id="main">
32
-
33
- <h1><%= title %></h1>
34
- <div id="version" class="clickable" onclick='document.location = "<%= download %>"; return false'>
35
- <p>Get Version</p>
36
- <a href="<%= download %>" class="numbers"><%= version %></a>
37
- </div>
38
- <%= body %>
39
- <p class="coda">
40
- <a href="cjheath@rubyforge.org">Clifford Heath</a>, <%= modified.pretty %><br>
41
- Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
42
- </p>
43
- </div>
44
-
45
- <!-- insert site tracking codes here, like Google Urchin -->
46
-
47
- </body>
48
- </html>