shoes 4.0.0.pre2 → 4.0.0.pre3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +32 -21
- metadata +18 -337
- data/CHANGELOG +0 -84
- data/Gemfile +0 -24
- data/Guardfile +0 -11
- data/Rakefile +0 -14
- data/app.yaml +0 -60
- data/benchmark/app_clear.rb +0 -21
- data/benchmark/clear.rb +0 -69
- data/benchmark/memory/text_dispose.rb +0 -9
- data/benchmark/para_creator.rb +0 -9
- data/benchmark/paras.rb +0 -52
- data/benchmark/urls.rb +0 -40
- data/bin/ruby-shoes +0 -6
- data/bin/shoes-guard +0 -8
- data/bin/shoes-stub +0 -59
- data/ext/install/Rakefile +0 -29
- data/ext/install/shoes.bat +0 -9
- data/lib/shoes.rb +0 -5
- data/lib/shoes/ui/cli.rb +0 -102
- data/lib/shoes/ui/help.rb +0 -535
- data/lib/shoes/ui/manual.rb +0 -6
- data/lib/shoes/version.rb +0 -3
- data/manifests/common.rb +0 -34
- data/manifests/shoes.rb +0 -44
- data/samples/Gemfile +0 -3
- data/samples/Gemfile.lock +0 -35
- data/samples/README +0 -97
- data/samples/boom.rb +0 -239
- data/samples/class-book-adjusted.rb +0 -45
- data/samples/class-book.rb +0 -43
- data/samples/class-book.yaml +0 -387
- data/samples/clicky.rb +0 -24
- data/samples/cy.png +0 -0
- data/samples/expert-definr.rb +0 -23
- data/samples/expert-funnies.rb +0 -60
- data/samples/expert-game-of-life-adjusted.rb +0 -249
- data/samples/expert-game-of-life.rb +0 -243
- data/samples/expert-irb-adjusted.rb +0 -110
- data/samples/expert-irb.rb +0 -112
- data/samples/expert-minesweeper-adjusted.rb +0 -272
- data/samples/expert-minesweeper.rb +0 -267
- data/samples/expert-othello-adjusted.rb +0 -325
- data/samples/expert-othello.rb +0 -318
- data/samples/expert-pong.rb +0 -62
- data/samples/expert-snake.rb +0 -78
- data/samples/expert-tankspank.rb +0 -385
- data/samples/flow.rb +0 -63
- data/samples/good-arc.rb +0 -45
- data/samples/good-clock.rb +0 -51
- data/samples/good-displace.rb +0 -98
- data/samples/good-follow.rb +0 -26
- data/samples/good-potato-chopping.rb +0 -22
- data/samples/good-reminder.rb +0 -174
- data/samples/good-vjot.rb +0 -58
- data/samples/gray.rb +0 -11
- data/samples/loogink.png +0 -0
- data/samples/nks_booklist.rb +0 -24
- data/samples/nks_breadsticks.rb +0 -7
- data/samples/nks_dancing_circle.rb +0 -13
- data/samples/nks_dictionary.rb +0 -23
- data/samples/nks_edit_box.rb +0 -4
- data/samples/nks_edit_line.rb +0 -6
- data/samples/nks_notes.rb +0 -16
- data/samples/nks_poem.rb +0 -22
- data/samples/nks_self.rb +0 -6
- data/samples/nks_text_sizes.rb +0 -10
- data/samples/nks_trurl.rb +0 -5
- data/samples/original-manual-adjusted.rb +0 -475
- data/samples/original-manual.rb +0 -472
- data/samples/packaging/package_me.rb +0 -6
- data/samples/potato_chopping/1258_s001.gif +0 -0
- data/samples/potato_chopping/1258_s002.gif +0 -0
- data/samples/potato_chopping/1258_s003.gif +0 -0
- data/samples/potato_chopping/1258_s004.gif +0 -0
- data/samples/potato_chopping/1258_s005.gif +0 -0
- data/samples/potato_chopping/1258_s006.gif +0 -0
- data/samples/potato_chopping/1258_s007.gif +0 -0
- data/samples/potato_chopping/1258_s008.gif +0 -0
- data/samples/potato_chopping/1258_s009.gif +0 -0
- data/samples/potato_chopping/1258_s010.gif +0 -0
- data/samples/potato_chopping/1258_s011.gif +0 -0
- data/samples/potato_chopping/1258_s012.gif +0 -0
- data/samples/potato_chopping/1258_s013.gif +0 -0
- data/samples/potato_chopping/1258_s014.gif +0 -0
- data/samples/potato_chopping/1258_s015.gif +0 -0
- data/samples/potato_chopping/1258_s016.gif +0 -0
- data/samples/potato_chopping/1258_s017.gif +0 -0
- data/samples/potato_chopping/1258_s018.gif +0 -0
- data/samples/potato_chopping/1258_s019.gif +0 -0
- data/samples/potato_chopping/1258_s020.gif +0 -0
- data/samples/potato_chopping/1258_s021.gif +0 -0
- data/samples/potato_chopping/1258_s022.gif +0 -0
- data/samples/potato_chopping/1258_s023.gif +0 -0
- data/samples/potato_chopping/1258_s024.gif +0 -0
- data/samples/potato_chopping/1258_s025.gif +0 -0
- data/samples/potato_chopping/1258_s026.gif +0 -0
- data/samples/potato_chopping/1258_s027.gif +0 -0
- data/samples/potato_chopping/1258_s028.gif +0 -0
- data/samples/potato_chopping/1258_s029.gif +0 -0
- data/samples/potato_chopping/1258_s030.gif +0 -0
- data/samples/potato_chopping/1258_s031.gif +0 -0
- data/samples/potato_chopping/1258_s032.gif +0 -0
- data/samples/potato_chopping/1258_s033.gif +0 -0
- data/samples/potato_chopping/1258_s034.gif +0 -0
- data/samples/potato_chopping/1258_s035.gif +0 -0
- data/samples/potato_chopping/1258_s036.gif +0 -0
- data/samples/potato_chopping/1258_s037.gif +0 -0
- data/samples/potato_chopping/1258_s038.gif +0 -0
- data/samples/potato_chopping/1258_s039.gif +0 -0
- data/samples/potato_chopping/1258_s040.gif +0 -0
- data/samples/potato_chopping/1258_s041.gif +0 -0
- data/samples/potato_chopping/1258_s042.gif +0 -0
- data/samples/potato_chopping/1258_s043.gif +0 -0
- data/samples/potato_chopping/1258_s044.gif +0 -0
- data/samples/potato_chopping/1258_s045.gif +0 -0
- data/samples/potato_chopping/1258_s046.gif +0 -0
- data/samples/potato_chopping/1258_s047.gif +0 -0
- data/samples/potato_chopping/1258_s048.gif +0 -0
- data/samples/potato_chopping/1258_s049.gif +0 -0
- data/samples/potato_chopping/1258_s050.gif +0 -0
- data/samples/potato_chopping/1258_s051.gif +0 -0
- data/samples/potato_chopping/1258_s052.gif +0 -0
- data/samples/potato_chopping/1258_s053.gif +0 -0
- data/samples/potato_chopping/1258_s054.gif +0 -0
- data/samples/potato_chopping/1258_s055.gif +0 -0
- data/samples/potato_chopping/1258_s056.gif +0 -0
- data/samples/potato_chopping/1258_s057.gif +0 -0
- data/samples/potato_chopping/1258_s058.gif +0 -0
- data/samples/potato_chopping/1258_s059.gif +0 -0
- data/samples/present.rb +0 -27
- data/samples/progress.rb +0 -10
- data/samples/sample1.rb +0 -30
- data/samples/sample12.rb +0 -21
- data/samples/sample13.rb +0 -13
- data/samples/sample14.rb +0 -64
- data/samples/sample15.rb +0 -18
- data/samples/sample16.rb +0 -10
- data/samples/sample17.rb +0 -10
- data/samples/sample2.rb +0 -14
- data/samples/sample21.rb +0 -5
- data/samples/sample23.rb +0 -8
- data/samples/sample24.rb +0 -21
- data/samples/sample27.rb +0 -18
- data/samples/sample3.rb +0 -14
- data/samples/sample31.rb +0 -22
- data/samples/sample34.rb +0 -27
- data/samples/sample35.rb +0 -32
- data/samples/sample37.rb +0 -8
- data/samples/sample4.rb +0 -7
- data/samples/sample42.rb +0 -14
- data/samples/sample45.rb +0 -11
- data/samples/sample56.rb +0 -10
- data/samples/sample6.rb +0 -9
- data/samples/sample7.rb +0 -3
- data/samples/sample8.rb +0 -7
- data/samples/sample9.rb +0 -10
- data/samples/simple-accordion.rb +0 -75
- data/samples/simple-anim-shapes.rb +0 -17
- data/samples/simple-anim-text.rb +0 -13
- data/samples/simple-animate.rb +0 -12
- data/samples/simple-arc.rb +0 -23
- data/samples/simple-bounce.rb +0 -24
- data/samples/simple-brightness-transitions.rb +0 -8
- data/samples/simple-button-animate.rb +0 -16
- data/samples/simple-calc-2.rb +0 -34
- data/samples/simple-calc.rb +0 -70
- data/samples/simple-color-selector.rb +0 -10
- data/samples/simple-color-transitions.rb +0 -11
- data/samples/simple-control-sizes.rb +0 -24
- data/samples/simple-curve.rb +0 -26
- data/samples/simple-dialogs-outside.rb +0 -12
- data/samples/simple-dialogs.rb +0 -32
- data/samples/simple-displace.rb +0 -15
- data/samples/simple-downloader.rb +0 -27
- data/samples/simple-draw.rb +0 -13
- data/samples/simple-editor.rb +0 -28
- data/samples/simple-face.rb +0 -14
- data/samples/simple-flow-wrap.rb +0 -11
- data/samples/simple-font.rb +0 -17
- data/samples/simple-form.rb +0 -29
- data/samples/simple-form.shy +0 -0
- data/samples/simple-fullscreen.rb +0 -4
- data/samples/simple-guess-game.rb +0 -28
- data/samples/simple-keypress.rb +0 -14
- data/samples/simple-manual.rb +0 -2
- data/samples/simple-mask.rb +0 -21
- data/samples/simple-menu.rb +0 -47
- data/samples/simple-mouse-follow.rb +0 -8
- data/samples/simple-move.rb +0 -13
- data/samples/simple-oval.rb +0 -3
- data/samples/simple-sample-executor.rb +0 -6
- data/samples/simple-shoes-intro.rb +0 -22
- data/samples/simple-slide.rb +0 -56
- data/samples/simple-sound.rb +0 -30
- data/samples/simple-sphere.rb +0 -28
- data/samples/simple-stripes.rb +0 -8
- data/samples/simple-tictactoe.rb +0 -238
- data/samples/simple-timer.rb +0 -15
- data/samples/simple-video.rb +0 -13
- data/samples/simple-visibility.rb +0 -11
- data/samples/simple-widget.rb +0 -9
- data/samples/sounds/102719__sarge4267__explosion.mp3 +0 -0
- data/samples/sounds/145622__andybrannan__train-fog-horn-long-wyomming.aiff +0 -0
- data/samples/sounds/46492__phreaksaccount__shields1.ogg +0 -0
- data/samples/sounds/61847__simon-rue__boink-v3.wav +0 -0
- data/samples/swt-raw.rb +0 -20
- data/samples/troll.rb +0 -22
- data/shoes.gemspec +0 -29
- data/snapshots/sample1.png +0 -0
- data/snapshots/sample10.png +0 -0
- data/snapshots/sample11.png +0 -0
- data/snapshots/sample12.png +0 -0
- data/snapshots/sample13.png +0 -0
- data/snapshots/sample14.png +0 -0
- data/snapshots/sample15.png +0 -0
- data/snapshots/sample16.png +0 -0
- data/snapshots/sample17.png +0 -0
- data/snapshots/sample18.png +0 -0
- data/snapshots/sample19.png +0 -0
- data/snapshots/sample2.png +0 -0
- data/snapshots/sample20.png +0 -0
- data/snapshots/sample21.png +0 -0
- data/snapshots/sample22.png +0 -0
- data/snapshots/sample23.png +0 -0
- data/snapshots/sample24.png +0 -0
- data/snapshots/sample27.png +0 -0
- data/snapshots/sample28.png +0 -0
- data/snapshots/sample29.png +0 -0
- data/snapshots/sample3.png +0 -0
- data/snapshots/sample30.png +0 -0
- data/snapshots/sample31.png +0 -0
- data/snapshots/sample34.png +0 -0
- data/snapshots/sample35.png +0 -0
- data/snapshots/sample36.png +0 -0
- data/snapshots/sample37.png +0 -0
- data/snapshots/sample4.png +0 -0
- data/snapshots/sample42.png +0 -0
- data/snapshots/sample44.png +0 -0
- data/snapshots/sample45.png +0 -0
- data/snapshots/sample46.png +0 -0
- data/snapshots/sample5.png +0 -0
- data/snapshots/sample56.png +0 -0
- data/snapshots/sample6.png +0 -0
- data/snapshots/sample7.png +0 -0
- data/snapshots/sample8.png +0 -0
- data/snapshots/sample9.png +0 -0
- data/snapshots/sample99.png +0 -0
- data/static/PKGBUILD +0 -47
- data/static/Shoes.icns +0 -0
- data/static/avatar.png +0 -0
- data/static/code_highlighter.js +0 -188
- data/static/code_highlighter_ruby.js +0 -26
- data/static/downloading.png +0 -0
- data/static/icon-debug.png +0 -0
- data/static/icon-error.png +0 -0
- data/static/icon-info.png +0 -0
- data/static/icon-warn.png +0 -0
- data/static/listbox_button1.png +0 -0
- data/static/listbox_button2.png +0 -0
- data/static/man-app.png +0 -0
- data/static/man-builds.png +0 -0
- data/static/man-builds1.png +0 -0
- data/static/man-editor-notepad.png +0 -0
- data/static/man-editor-osx.png +0 -0
- data/static/man-ele-background.png +0 -0
- data/static/man-ele-border.png +0 -0
- data/static/man-ele-button.png +0 -0
- data/static/man-ele-check.png +0 -0
- data/static/man-ele-editbox.png +0 -0
- data/static/man-ele-editline.png +0 -0
- data/static/man-ele-image.png +0 -0
- data/static/man-ele-listbox.png +0 -0
- data/static/man-ele-progress.png +0 -0
- data/static/man-ele-radio.png +0 -0
- data/static/man-ele-shape.png +0 -0
- data/static/man-ele-textblock.png +0 -0
- data/static/man-ele-video.png +0 -0
- data/static/man-intro-dmg.png +0 -0
- data/static/man-intro-exe.png +0 -0
- data/static/man-look-tiger.png +0 -0
- data/static/man-look-ubuntu.png +0 -0
- data/static/man-look-vista.png +0 -0
- data/static/man-run-osx.png +0 -0
- data/static/man-run-vista.png +0 -0
- data/static/man-run-xp.png +0 -0
- data/static/man-shot1.png +0 -0
- data/static/manual-en.txt +0 -3531
- data/static/manual-ja.txt +0 -2829
- data/static/manual.css +0 -184
- data/static/menu-corner1.png +0 -0
- data/static/menu-corner2.png +0 -0
- data/static/menu-gray.png +0 -0
- data/static/menu-left.png +0 -0
- data/static/menu-right.png +0 -0
- data/static/menu-top.png +0 -0
- data/static/shoes-dmg.jpg +0 -0
- data/static/shoes-icon-blue.png +0 -0
- data/static/shoes-icon-brown.png +0 -0
- data/static/shoes-icon.png +0 -0
- data/static/shoes-manual-apps.gif +0 -0
- data/static/shoes-manual-apps.png +0 -0
- data/static/shoes_main_window.png +0 -0
- data/static/stripe.png +0 -0
- data/static/tutor-back.png +0 -0
- data/tasks/changelog.rb +0 -92
- data/tasks/gem.rb +0 -38
- data/tasks/rspec.rb +0 -106
- data/tasks/sample.rb +0 -66
- data/tasks/yard.rb +0 -13
data/samples/simple-widget.rb
DELETED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/samples/swt-raw.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'java'
|
4
|
-
$:.unshift(File.expand_path("../../lib", __FILE__))
|
5
|
-
require 'swt'
|
6
|
-
|
7
|
-
class ButtonExample
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
style = ::Swt::SWT::CLOSE | ::Swt::SWT::MIN | ::Swt::SWT::V_SCROLL #| ::Swt::SWT::MAX | ::Swt::SWT::RESIZE
|
11
|
-
@shell = Swt::Widgets::Shell.new(style)
|
12
|
-
@shell.open
|
13
|
-
end
|
14
|
-
|
15
|
-
def start
|
16
|
-
::Swt.event_loop { @shell.disposed? }
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
ButtonExample.new.start
|
data/samples/troll.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'pry'
|
2
|
-
require 'pry-nav'
|
3
|
-
require 'shoes/swt/leak_hunter'
|
4
|
-
|
5
|
-
Shoes.app do
|
6
|
-
every(1) do
|
7
|
-
print "!"
|
8
|
-
clear
|
9
|
-
stack width:100 do
|
10
|
-
background green
|
11
|
-
|
12
|
-
button "quit" do
|
13
|
-
clear
|
14
|
-
quit
|
15
|
-
end
|
16
|
-
|
17
|
-
100.times do
|
18
|
-
para "b", link("kind", fg: red)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
data/shoes.gemspec
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
require_relative 'lib/shoes/version'
|
3
|
-
require_relative 'manifests/shoes'
|
4
|
-
|
5
|
-
Gem::Specification.new do |s|
|
6
|
-
s.name = "shoes"
|
7
|
-
s.version = Shoes::VERSION
|
8
|
-
s.platform = Gem::Platform::RUBY
|
9
|
-
s.authors = ["Team Shoes"]
|
10
|
-
s.email = ["shoes@librelist.com"]
|
11
|
-
s.homepage = "https://github.com/shoes/shoes4"
|
12
|
-
s.summary = %q{Shoes is the best little GUI toolkit for Ruby. Shoes runs on JRuby only for now.}
|
13
|
-
s.description = %q{Shoes is the best little GUI toolkit for Ruby. Shoes makes building for Mac, Windows, and Linux super simple. Shoes runs on JRuby only for now.}
|
14
|
-
s.license = 'MIT'
|
15
|
-
|
16
|
-
s.files = ShoesManifest.files
|
17
|
-
s.test_files = ShoesManifest.test_files
|
18
|
-
s.require_paths = ["lib"]
|
19
|
-
|
20
|
-
s.add_dependency "shoes-dsl", Shoes::VERSION
|
21
|
-
s.add_dependency "shoes-swt", Shoes::VERSION
|
22
|
-
|
23
|
-
s.add_dependency "furoshiki", ">=0.1.2" # For packaging
|
24
|
-
s.add_dependency "nokogiri" # For converting the manual to HTML
|
25
|
-
|
26
|
-
# Curious why we don't install shoes? See ext/Rakefile for the nitty-gritty.
|
27
|
-
s.executables = ['shoes-stub', 'ruby-shoes']
|
28
|
-
s.extensions = ['ext/install/Rakefile']
|
29
|
-
end
|
data/snapshots/sample1.png
DELETED
Binary file
|
data/snapshots/sample10.png
DELETED
Binary file
|
data/snapshots/sample11.png
DELETED
Binary file
|
data/snapshots/sample12.png
DELETED
Binary file
|
data/snapshots/sample13.png
DELETED
Binary file
|
data/snapshots/sample14.png
DELETED
Binary file
|
data/snapshots/sample15.png
DELETED
Binary file
|
data/snapshots/sample16.png
DELETED
Binary file
|
data/snapshots/sample17.png
DELETED
Binary file
|
data/snapshots/sample18.png
DELETED
Binary file
|
data/snapshots/sample19.png
DELETED
Binary file
|
data/snapshots/sample2.png
DELETED
Binary file
|
data/snapshots/sample20.png
DELETED
Binary file
|
data/snapshots/sample21.png
DELETED
Binary file
|
data/snapshots/sample22.png
DELETED
Binary file
|
data/snapshots/sample23.png
DELETED
Binary file
|
data/snapshots/sample24.png
DELETED
Binary file
|
data/snapshots/sample27.png
DELETED
Binary file
|
data/snapshots/sample28.png
DELETED
Binary file
|
data/snapshots/sample29.png
DELETED
Binary file
|
data/snapshots/sample3.png
DELETED
Binary file
|
data/snapshots/sample30.png
DELETED
Binary file
|
data/snapshots/sample31.png
DELETED
Binary file
|
data/snapshots/sample34.png
DELETED
Binary file
|
data/snapshots/sample35.png
DELETED
Binary file
|
data/snapshots/sample36.png
DELETED
Binary file
|
data/snapshots/sample37.png
DELETED
Binary file
|
data/snapshots/sample4.png
DELETED
Binary file
|
data/snapshots/sample42.png
DELETED
Binary file
|
data/snapshots/sample44.png
DELETED
Binary file
|
data/snapshots/sample45.png
DELETED
Binary file
|
data/snapshots/sample46.png
DELETED
Binary file
|
data/snapshots/sample5.png
DELETED
Binary file
|
data/snapshots/sample56.png
DELETED
Binary file
|
data/snapshots/sample6.png
DELETED
Binary file
|
data/snapshots/sample7.png
DELETED
Binary file
|
data/snapshots/sample8.png
DELETED
Binary file
|
data/snapshots/sample9.png
DELETED
Binary file
|
data/snapshots/sample99.png
DELETED
Binary file
|
data/static/PKGBUILD
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
# Original contributor: Michael Fellinger <m.fellinger@gmail.com>
|
2
|
-
# Updated by:
|
3
|
-
# Tapio Saarinen <admin@bitlong.org>
|
4
|
-
# Steve Klabnik <steve@steveklabnik.com>
|
5
|
-
# Michael Fellinger <m.fellinger@gmail.com>
|
6
|
-
|
7
|
-
pkgname=shoes
|
8
|
-
pkgver=3.0
|
9
|
-
pkgrel=1
|
10
|
-
pkgdesc="The best little GUI toolkit, for Ruby."
|
11
|
-
url="http://shoesrb.com/"
|
12
|
-
arch=(i686 x86_64)
|
13
|
-
license="MIT"
|
14
|
-
depends=('ruby' 'giflib' 'gtk2' 'curl' 'portaudio' 'tk')
|
15
|
-
makedepends=('git')
|
16
|
-
conflicts=('shoes')
|
17
|
-
replaces=('shoes')
|
18
|
-
provides=('shoes')
|
19
|
-
backup=()
|
20
|
-
install=
|
21
|
-
source=()
|
22
|
-
md5sums=()
|
23
|
-
|
24
|
-
_pkgname=shoes
|
25
|
-
_gitrepo="git://github.com/shoes/shoes.git"
|
26
|
-
|
27
|
-
build() {
|
28
|
-
cd $srcdir
|
29
|
-
|
30
|
-
msg "Getting source..."
|
31
|
-
if [ -d $_pkgname ]; then
|
32
|
-
cd $_pkgname
|
33
|
-
git pull || return 1
|
34
|
-
else
|
35
|
-
git clone $_gitrepo $_pkgname || return 1
|
36
|
-
cd $_pkgname
|
37
|
-
fi
|
38
|
-
|
39
|
-
rake
|
40
|
-
cd dist
|
41
|
-
|
42
|
-
mkdir -p $pkgdir/usr/{bin,lib/shoes}
|
43
|
-
cp -r * $pkgdir/usr/lib/shoes/
|
44
|
-
|
45
|
-
ln -s /usr/lib/shoes/shoes $pkgdir/usr/bin/shoes
|
46
|
-
install -D -m644 $srcdir/$_pkgname/COPYING $pkgdir/usr/share/licenses/$pkgname/LICENSE
|
47
|
-
}
|
data/static/Shoes.icns
DELETED
Binary file
|
data/static/avatar.png
DELETED
Binary file
|
data/static/code_highlighter.js
DELETED
@@ -1,188 +0,0 @@
|
|
1
|
-
/* Unobtrustive Code Highlighter By Dan Webb 11/2005
|
2
|
-
Version: 0.4
|
3
|
-
|
4
|
-
Usage:
|
5
|
-
Add a script tag for this script and any stylesets you need to use
|
6
|
-
to the page in question, add correct class names to CODE elements,
|
7
|
-
define CSS styles for elements. That's it!
|
8
|
-
|
9
|
-
Known to work on:
|
10
|
-
IE 5.5+ PC
|
11
|
-
Firefox/Mozilla PC/Mac
|
12
|
-
Opera 7.23 + PC
|
13
|
-
Safari 2
|
14
|
-
|
15
|
-
Known to degrade gracefully on:
|
16
|
-
IE5.0 PC
|
17
|
-
|
18
|
-
Note: IE5.0 fails due to the use of lookahead in some stylesets. To avoid script errors
|
19
|
-
in older browsers use expressions that use lookahead in string format when defining stylesets.
|
20
|
-
|
21
|
-
This script is inspired by star-light by entirely cunning Dean Edwards
|
22
|
-
http://dean.edwards.name/star-light/.
|
23
|
-
*/
|
24
|
-
|
25
|
-
// replace callback support for safari.
|
26
|
-
if ("a".replace(/a/, function() {return "b"}) != "b") (function(){
|
27
|
-
var default_replace = String.prototype.replace;
|
28
|
-
String.prototype.replace = function(search,replace){
|
29
|
-
// replace is not function
|
30
|
-
if(typeof replace != "function"){
|
31
|
-
return default_replace.apply(this,arguments)
|
32
|
-
}
|
33
|
-
var str = "" + this;
|
34
|
-
var callback = replace;
|
35
|
-
// search string is not RegExp
|
36
|
-
if(!(search instanceof RegExp)){
|
37
|
-
var idx = str.indexOf(search);
|
38
|
-
return (
|
39
|
-
idx == -1 ? str :
|
40
|
-
default_replace.apply(str,[search,callback(search, idx, str)])
|
41
|
-
)
|
42
|
-
}
|
43
|
-
var reg = search;
|
44
|
-
var result = [];
|
45
|
-
var lastidx = reg.lastIndex;
|
46
|
-
var re;
|
47
|
-
while((re = reg.exec(str)) != null){
|
48
|
-
var idx = re.index;
|
49
|
-
var args = re.concat(idx, str);
|
50
|
-
result.push(
|
51
|
-
str.slice(lastidx,idx),
|
52
|
-
callback.apply(null,args).toString()
|
53
|
-
);
|
54
|
-
if(!reg.global){
|
55
|
-
lastidx += RegExp.lastMatch.length;
|
56
|
-
break
|
57
|
-
}else{
|
58
|
-
lastidx = reg.lastIndex;
|
59
|
-
}
|
60
|
-
}
|
61
|
-
result.push(str.slice(lastidx));
|
62
|
-
return result.join("")
|
63
|
-
}
|
64
|
-
})();
|
65
|
-
|
66
|
-
var CodeHighlighter = { styleSets : new Array };
|
67
|
-
|
68
|
-
CodeHighlighter.addStyle = function(name, rules) {
|
69
|
-
// using push test to disallow older browsers from adding styleSets
|
70
|
-
if ([].push) this.styleSets.push({
|
71
|
-
name : name,
|
72
|
-
rules : rules,
|
73
|
-
ignoreCase : arguments[2] || false
|
74
|
-
})
|
75
|
-
|
76
|
-
function setEvent() {
|
77
|
-
// set highlighter to run on load (use LowPro if present)
|
78
|
-
if (typeof Event != 'undefined' && typeof Event.onReady == 'function')
|
79
|
-
return Event.onReady(CodeHighlighter.init.bind(CodeHighlighter));
|
80
|
-
|
81
|
-
var old = window.onload;
|
82
|
-
|
83
|
-
if (typeof window.onload != 'function') {
|
84
|
-
window.onload = function() { CodeHighlighter.init() };
|
85
|
-
} else {
|
86
|
-
window.onload = function() {
|
87
|
-
old();
|
88
|
-
CodeHighlighter.init();
|
89
|
-
}
|
90
|
-
}
|
91
|
-
}
|
92
|
-
|
93
|
-
// only set the event when the first style is added
|
94
|
-
if (this.styleSets.length==1) setEvent();
|
95
|
-
}
|
96
|
-
|
97
|
-
CodeHighlighter.init = function() {
|
98
|
-
if (!document.getElementsByTagName) return;
|
99
|
-
if ("a".replace(/a/, function() {return "b"}) != "b") return; // throw out Safari versions that don't support replace function
|
100
|
-
// throw out older browsers
|
101
|
-
|
102
|
-
var codeEls = document.getElementsByTagName("CODE");
|
103
|
-
// collect array of all pre elements
|
104
|
-
codeEls.filter = function(f) {
|
105
|
-
var a = new Array;
|
106
|
-
for (var i = 0; i < this.length; i++) if (f(this[i])) a[a.length] = this[i];
|
107
|
-
return a;
|
108
|
-
}
|
109
|
-
|
110
|
-
var rules = new Array;
|
111
|
-
rules.toString = function() {
|
112
|
-
// joins regexes into one big parallel regex
|
113
|
-
var exps = new Array;
|
114
|
-
for (var i = 0; i < this.length; i++) exps.push(this[i].exp);
|
115
|
-
return exps.join("|");
|
116
|
-
}
|
117
|
-
|
118
|
-
function addRule(className, rule) {
|
119
|
-
// add a replace rule
|
120
|
-
var exp = (typeof rule.exp != "string")?String(rule.exp).substr(1, String(rule.exp).length-2):rule.exp;
|
121
|
-
// converts regex rules to strings and chops of the slashes
|
122
|
-
rules.push({
|
123
|
-
className : className,
|
124
|
-
exp : "(" + exp + ")",
|
125
|
-
length : (exp.match(/(^|[^\\])\([^?]/g) || "").length + 1, // number of subexps in rule
|
126
|
-
replacement : rule.replacement || null
|
127
|
-
});
|
128
|
-
}
|
129
|
-
|
130
|
-
function parse(text, ignoreCase) {
|
131
|
-
// main text parsing and replacement
|
132
|
-
return text.replace(new RegExp(rules, (ignoreCase)?"gi":"g"), function() {
|
133
|
-
var i = 0, j = 1, rule;
|
134
|
-
while (rule = rules[i++]) {
|
135
|
-
if (arguments[j]) {
|
136
|
-
// if no custom replacement defined do the simple replacement
|
137
|
-
if (!rule.replacement) return "<span class=\"" + rule.className + "\">" + arguments[0] + "</span>";
|
138
|
-
else {
|
139
|
-
// replace $0 with the className then do normal replaces
|
140
|
-
var str = rule.replacement.replace("$0", rule.className);
|
141
|
-
for (var k = 1; k <= rule.length - 1; k++) str = str.replace("$" + k, arguments[j + k]);
|
142
|
-
return str;
|
143
|
-
}
|
144
|
-
} else j+= rule.length;
|
145
|
-
}
|
146
|
-
});
|
147
|
-
}
|
148
|
-
|
149
|
-
function highlightCode(styleSet) {
|
150
|
-
// clear rules array
|
151
|
-
var parsed, clsRx = new RegExp("(\\s|^)" + styleSet.name + "(\\s|$)");
|
152
|
-
rules.length = 0;
|
153
|
-
|
154
|
-
// get stylable elements by filtering out all code elements without the correct className
|
155
|
-
var stylableEls = codeEls.filter(function(item) { return clsRx.test(item.className) });
|
156
|
-
|
157
|
-
// add style rules to parser
|
158
|
-
for (var className in styleSet.rules) addRule(className, styleSet.rules[className]);
|
159
|
-
|
160
|
-
|
161
|
-
// replace for all elements
|
162
|
-
for (var i = 0; i < stylableEls.length; i++) {
|
163
|
-
// EVIL hack to fix IE whitespace badness if it's inside a <pre>
|
164
|
-
if (/MSIE/.test(navigator.appVersion) && stylableEls[i].parentNode.nodeName == 'PRE') {
|
165
|
-
stylableEls[i] = stylableEls[i].parentNode;
|
166
|
-
|
167
|
-
parsed = stylableEls[i].innerHTML.replace(/(<code[^>]*>)([^<]*)<\/code>/i, function() {
|
168
|
-
return arguments[1] + parse(arguments[2], styleSet.ignoreCase) + "</code>"
|
169
|
-
});
|
170
|
-
parsed = parsed.replace(/\n( *)/g, function() {
|
171
|
-
var spaces = "";
|
172
|
-
for (var i = 0; i < arguments[1].length; i++) spaces+= " ";
|
173
|
-
return "\n" + spaces;
|
174
|
-
});
|
175
|
-
parsed = parsed.replace(/\t/g, " ");
|
176
|
-
parsed = parsed.replace(/\n(<\/\w+>)?/g, "<br />$1").replace(/<br \/>[\n\r\s]*<br \/>/g, "<p><br></p>");
|
177
|
-
|
178
|
-
} else parsed = parse(stylableEls[i].innerHTML, styleSet.ignoreCase);
|
179
|
-
|
180
|
-
stylableEls[i].innerHTML = parsed;
|
181
|
-
}
|
182
|
-
}
|
183
|
-
|
184
|
-
// run highlighter on all stylesets
|
185
|
-
for (var i=0; i < this.styleSets.length; i++) {
|
186
|
-
highlightCode(this.styleSets[i]);
|
187
|
-
}
|
188
|
-
}
|
@@ -1,26 +0,0 @@
|
|
1
|
-
CodeHighlighter.addStyle("rb",{
|
2
|
-
comment : {
|
3
|
-
exp : /#[^\n]+/
|
4
|
-
},
|
5
|
-
brackets : {
|
6
|
-
exp : /\(|\)|\{|\}/
|
7
|
-
},
|
8
|
-
string : {
|
9
|
-
exp : /'[^']*'|"[^"]*"/
|
10
|
-
},
|
11
|
-
keywords : {
|
12
|
-
exp : /\b(do|end|self|class|def|if|module|yield|then|else|for|until|unless|while|elsif|case|when|break|retry|redo|rescue|raise)\b/
|
13
|
-
},
|
14
|
-
constant : {
|
15
|
-
exp : /\b([A-Z]\w+)\b/
|
16
|
-
},
|
17
|
-
ivar : {
|
18
|
-
exp : /([^@])(@{1,2}\w+)\b/
|
19
|
-
},
|
20
|
-
ns : {
|
21
|
-
exp : /(:{2,})/
|
22
|
-
},
|
23
|
-
symbol : {
|
24
|
-
exp : /(:[A-Za-z0-9_!?]+)/
|
25
|
-
}
|
26
|
-
});
|