jbarnette-johnson 1.0.0.200806240111
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +5 -0
- data/MANIFEST +385 -0
- data/MINGW32.mk +124 -0
- data/README.rdoc +51 -0
- data/Rakefile +166 -0
- data/bin/johnson +107 -0
- data/cross-compile.txt +38 -0
- data/ext/spidermonkey/context.c +122 -0
- data/ext/spidermonkey/context.h +19 -0
- data/ext/spidermonkey/conversions.c +286 -0
- data/ext/spidermonkey/conversions.h +18 -0
- data/ext/spidermonkey/debugger.c +208 -0
- data/ext/spidermonkey/debugger.h +9 -0
- data/ext/spidermonkey/extconf.rb +25 -0
- data/ext/spidermonkey/extensions.c +37 -0
- data/ext/spidermonkey/extensions.h +12 -0
- data/ext/spidermonkey/global.c +40 -0
- data/ext/spidermonkey/global.h +11 -0
- data/ext/spidermonkey/idhash.c +16 -0
- data/ext/spidermonkey/idhash.h +8 -0
- data/ext/spidermonkey/immutable_node.c.erb +522 -0
- data/ext/spidermonkey/immutable_node.h +22 -0
- data/ext/spidermonkey/jroot.h +187 -0
- data/ext/spidermonkey/js_land_proxy.c +609 -0
- data/ext/spidermonkey/js_land_proxy.h +20 -0
- data/ext/spidermonkey/ruby_land_proxy.c +537 -0
- data/ext/spidermonkey/ruby_land_proxy.h +17 -0
- data/ext/spidermonkey/runtime.c +304 -0
- data/ext/spidermonkey/runtime.h +25 -0
- data/ext/spidermonkey/spidermonkey.c +20 -0
- data/ext/spidermonkey/spidermonkey.h +29 -0
- data/js/johnson/browser.js +9 -0
- data/js/johnson/browser/env.js +687 -0
- data/js/johnson/browser/jquery.js +3444 -0
- data/js/johnson/browser/xmlsax.js +1564 -0
- data/js/johnson/browser/xmlw3cdom.js +4189 -0
- data/js/johnson/cli.js +30 -0
- data/js/johnson/prelude.js +80 -0
- data/js/johnson/template.js +29 -0
- data/lib/hoe.rb +748 -0
- data/lib/johnson.rb +46 -0
- data/lib/johnson/cli.rb +7 -0
- data/lib/johnson/cli/options.rb +56 -0
- data/lib/johnson/error.rb +4 -0
- data/lib/johnson/nodes.rb +7 -0
- data/lib/johnson/nodes/binary_node.rb +64 -0
- data/lib/johnson/nodes/for.rb +14 -0
- data/lib/johnson/nodes/for_in.rb +12 -0
- data/lib/johnson/nodes/function.rb +13 -0
- data/lib/johnson/nodes/list.rb +27 -0
- data/lib/johnson/nodes/node.rb +68 -0
- data/lib/johnson/nodes/ternary_node.rb +20 -0
- data/lib/johnson/parser.rb +21 -0
- data/lib/johnson/parser/syntax_error.rb +13 -0
- data/lib/johnson/runtime.rb +55 -0
- data/lib/johnson/spidermonkey/context.rb +10 -0
- data/lib/johnson/spidermonkey/debugger.rb +67 -0
- data/lib/johnson/spidermonkey/immutable_node.rb +280 -0
- data/lib/johnson/spidermonkey/js_land_proxy.rb +62 -0
- data/lib/johnson/spidermonkey/mutable_tree_visitor.rb +233 -0
- data/lib/johnson/spidermonkey/ruby_land_proxy.rb +52 -0
- data/lib/johnson/spidermonkey/runtime.rb +94 -0
- data/lib/johnson/version.rb +4 -0
- data/lib/johnson/visitable.rb +16 -0
- data/lib/johnson/visitors.rb +4 -0
- data/lib/johnson/visitors/dot_visitor.rb +167 -0
- data/lib/johnson/visitors/ecma_visitor.rb +315 -0
- data/lib/johnson/visitors/enumerating_visitor.rb +115 -0
- data/lib/johnson/visitors/sexp_visitor.rb +172 -0
- data/lib/rails/init.rb +37 -0
- data/test/assets/index.html +38 -0
- data/test/assets/jquery_test.html +186 -0
- data/test/helper.rb +58 -0
- data/test/johnson/browser_test.rb +38 -0
- data/test/johnson/conversions/array_test.rb +32 -0
- data/test/johnson/conversions/boolean_test.rb +17 -0
- data/test/johnson/conversions/callable_test.rb +34 -0
- data/test/johnson/conversions/file_test.rb +15 -0
- data/test/johnson/conversions/nil_test.rb +20 -0
- data/test/johnson/conversions/number_test.rb +34 -0
- data/test/johnson/conversions/regexp_test.rb +24 -0
- data/test/johnson/conversions/string_test.rb +26 -0
- data/test/johnson/conversions/struct_test.rb +15 -0
- data/test/johnson/conversions/symbol_test.rb +19 -0
- data/test/johnson/conversions/thread_test.rb +24 -0
- data/test/johnson/error_test.rb +9 -0
- data/test/johnson/extensions_test.rb +56 -0
- data/test/johnson/nodes/array_literal_test.rb +57 -0
- data/test/johnson/nodes/array_node_test.rb +26 -0
- data/test/johnson/nodes/binary_node_test.rb +61 -0
- data/test/johnson/nodes/bracket_access_test.rb +16 -0
- data/test/johnson/nodes/delete_test.rb +11 -0
- data/test/johnson/nodes/do_while_test.rb +12 -0
- data/test/johnson/nodes/dot_accessor_test.rb +15 -0
- data/test/johnson/nodes/export_test.rb +9 -0
- data/test/johnson/nodes/for_test.rb +54 -0
- data/test/johnson/nodes/function_test.rb +71 -0
- data/test/johnson/nodes/if_test.rb +41 -0
- data/test/johnson/nodes/import_test.rb +13 -0
- data/test/johnson/nodes/label_test.rb +19 -0
- data/test/johnson/nodes/object_literal_test.rb +110 -0
- data/test/johnson/nodes/return_test.rb +16 -0
- data/test/johnson/nodes/semi_test.rb +8 -0
- data/test/johnson/nodes/switch_test.rb +55 -0
- data/test/johnson/nodes/ternary_test.rb +25 -0
- data/test/johnson/nodes/throw_test.rb +9 -0
- data/test/johnson/nodes/try_node_test.rb +59 -0
- data/test/johnson/nodes/typeof_test.rb +11 -0
- data/test/johnson/nodes/unary_node_test.rb +23 -0
- data/test/johnson/nodes/void_test.rb +11 -0
- data/test/johnson/nodes/while_test.rb +26 -0
- data/test/johnson/nodes/with_test.rb +10 -0
- data/test/johnson/prelude_test.rb +56 -0
- data/test/johnson/runtime_test.rb +46 -0
- data/test/johnson/spidermonkey/context_test.rb +21 -0
- data/test/johnson/spidermonkey/immutable_node_test.rb +34 -0
- data/test/johnson/spidermonkey/js_land_proxy_test.rb +236 -0
- data/test/johnson/spidermonkey/ruby_land_proxy_test.rb +225 -0
- data/test/johnson/spidermonkey/runtime_test.rb +17 -0
- data/test/johnson/version_test.rb +13 -0
- data/test/johnson/visitors/dot_visitor_test.rb +39 -0
- data/test/johnson/visitors/enumerating_visitor_test.rb +12 -0
- data/test/johnson_test.rb +16 -0
- data/test/jquery_units/test.js +27 -0
- data/test/jquery_units/test_helper.js +197 -0
- data/test/jquery_units/units/ajax.js +795 -0
- data/test/jquery_units/units/core.js +1563 -0
- data/test/jquery_units/units/event.js +299 -0
- data/test/jquery_units/units/fx.js +427 -0
- data/test/jquery_units/units/offset.js +112 -0
- data/test/jquery_units/units/selector.js +224 -0
- data/test/jspec/helper.js +7 -0
- data/test/jspec/jspec.js +192 -0
- data/test/jspec/simple_spec.js +68 -0
- data/test/parser_test.rb +276 -0
- data/todo/.keep +0 -0
- metadata +501 -0
@@ -0,0 +1,115 @@
|
|
1
|
+
module Johnson
|
2
|
+
module Visitors
|
3
|
+
class EnumeratingVisitor
|
4
|
+
attr_accessor :block
|
5
|
+
def initialize(block)
|
6
|
+
@block = block
|
7
|
+
end
|
8
|
+
|
9
|
+
def visit_SourceElements(o)
|
10
|
+
block.call(o)
|
11
|
+
o.value.each { |x| x.accept(self) }
|
12
|
+
self
|
13
|
+
end
|
14
|
+
|
15
|
+
%w{
|
16
|
+
ArrayLiteral Comma Export FunctionCall Import New ObjectLiteral
|
17
|
+
VarStatement
|
18
|
+
}.each do |type|
|
19
|
+
define_method(:"visit_#{type}") do |o|
|
20
|
+
block.call(o)
|
21
|
+
o.value.each { |x| x.accept(self) }
|
22
|
+
self
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
%w{ Name Number Regexp String }.each do |type|
|
27
|
+
define_method(:"visit_#{type}") do |o|
|
28
|
+
block.call(o)
|
29
|
+
self
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
%w{ Break Continue False Null This True }.each do |type|
|
34
|
+
define_method(:"visit_#{type}") do |o|
|
35
|
+
block.call(o)
|
36
|
+
self
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def visit_For(o)
|
41
|
+
block.call(o)
|
42
|
+
o.init && o.init.accept(self)
|
43
|
+
o.cond && o.cond.accept(self)
|
44
|
+
o.update && o.update.accept(self)
|
45
|
+
o.body.accept(self)
|
46
|
+
self
|
47
|
+
end
|
48
|
+
|
49
|
+
def visit_ForIn(o)
|
50
|
+
block.call(o)
|
51
|
+
o.in_cond.accept(self)
|
52
|
+
o.body.accept(self)
|
53
|
+
self
|
54
|
+
end
|
55
|
+
|
56
|
+
def visit_Try(o)
|
57
|
+
block.call(o)
|
58
|
+
o.cond.accept(self)
|
59
|
+
o.b_then && o.b_then.map { |x| x.accept(self) }
|
60
|
+
o.b_else && o.b_else.accept(self)
|
61
|
+
self
|
62
|
+
end
|
63
|
+
|
64
|
+
%w{ Ternary If Catch }.each do |node|
|
65
|
+
define_method(:"visit_#{node}") do |o|
|
66
|
+
block.call(o)
|
67
|
+
o.cond.accept(self)
|
68
|
+
o.b_then && o.b_then.accept(self)
|
69
|
+
o.b_else && o.b_else.accept(self)
|
70
|
+
self
|
71
|
+
end
|
72
|
+
end
|
73
|
+
### UNARY NODES ###
|
74
|
+
%w{ BitwiseNot Delete Not Parenthesis PostfixDecrement PostfixIncrement
|
75
|
+
PrefixDecrement PrefixIncrement Return Throw Typeof UnaryNegative
|
76
|
+
UnaryPositive Void
|
77
|
+
}.each do |node|
|
78
|
+
define_method(:"visit_#{node}") do |o|
|
79
|
+
block.call(o)
|
80
|
+
o.value && o.value.accept(self)
|
81
|
+
self
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
### FUNCTION NODES ###
|
86
|
+
def visit_Function(o)
|
87
|
+
block.call(o)
|
88
|
+
o.body.accept(self)
|
89
|
+
self
|
90
|
+
end
|
91
|
+
|
92
|
+
### BINARY NODES ###
|
93
|
+
%w{ And AssignExpr BracketAccess Case Default DoWhile DotAccessor Equal
|
94
|
+
GetterProperty GreaterThan GreaterThanOrEqual In InstanceOf Label
|
95
|
+
LessThan LessThanOrEqual NotEqual OpAdd OpAddEqual OpBitAnd
|
96
|
+
OpBitAndEqual OpBitOr OpBitOrEqual OpBitXor OpBitXorEqual OpDivide
|
97
|
+
OpDivideEqual OpEqual OpLShift OpLShiftEqual OpMod OpModEqual
|
98
|
+
OpMultiply OpMultiplyEqual OpRShift OpRShiftEqual OpSubtract
|
99
|
+
OpSubtractEqual OpURShift OpURShiftEqual Or Property SetterProperty
|
100
|
+
StrictEqual StrictNotEqual Switch While With
|
101
|
+
}.each do |node|
|
102
|
+
define_method(:"visit_#{node}") do |o|
|
103
|
+
block.call(o)
|
104
|
+
o.left && o.left.accept(self)
|
105
|
+
o.right && o.right.accept(self)
|
106
|
+
self
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def accept(target)
|
111
|
+
target.accept(self)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
@@ -0,0 +1,172 @@
|
|
1
|
+
module Johnson
|
2
|
+
module Visitors
|
3
|
+
class SexpVisitor
|
4
|
+
def visit_SourceElements(o)
|
5
|
+
o.value.map { |x| x.accept(self) }
|
6
|
+
end
|
7
|
+
|
8
|
+
{
|
9
|
+
'VarStatement' => :var,
|
10
|
+
'Comma' => :comma,
|
11
|
+
'ObjectLiteral' => :object,
|
12
|
+
'ArrayLiteral' => :array,
|
13
|
+
'New' => :new,
|
14
|
+
'FunctionCall' => :function_call,
|
15
|
+
'Import' => :import,
|
16
|
+
'Export' => :export,
|
17
|
+
}.each do |type,sym|
|
18
|
+
define_method(:"visit_#{type}") do |o|
|
19
|
+
[sym, o.value.map { |x| x.accept(self) }]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
{
|
24
|
+
'Name' => :name,
|
25
|
+
'Number' => :lit,
|
26
|
+
'Regexp' => :lit,
|
27
|
+
'String' => :str
|
28
|
+
}.each do |type,sym|
|
29
|
+
define_method(:"visit_#{type}") do |o|
|
30
|
+
[sym, o.value]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
{
|
35
|
+
'Break' => :break,
|
36
|
+
'Continue' => :continue,
|
37
|
+
'Null' => :nil,
|
38
|
+
'True' => :true,
|
39
|
+
'False' => :false,
|
40
|
+
'This' => :this,
|
41
|
+
}.each do |type,sym|
|
42
|
+
define_method(:"visit_#{type}") do |o|
|
43
|
+
[sym]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def visit_For(o)
|
48
|
+
[ :for,
|
49
|
+
o.init && o.init.accept(self),
|
50
|
+
o.cond && o.cond.accept(self),
|
51
|
+
o.update && o.update.accept(self),
|
52
|
+
o.body.accept(self)
|
53
|
+
]
|
54
|
+
end
|
55
|
+
|
56
|
+
def visit_ForIn(o)
|
57
|
+
[ :for_in,
|
58
|
+
o.in_cond.accept(self),
|
59
|
+
o.body.accept(self)
|
60
|
+
]
|
61
|
+
end
|
62
|
+
|
63
|
+
def visit_Try(o)
|
64
|
+
[ :try,
|
65
|
+
o.cond.accept(self),
|
66
|
+
o.b_then ? o.b_then.map { |x| x.accept(self) } : nil,
|
67
|
+
o.b_else ? o.b_else.accept(self) : nil
|
68
|
+
]
|
69
|
+
end
|
70
|
+
|
71
|
+
{
|
72
|
+
'Ternary' => :ternary,
|
73
|
+
'If' => :if,
|
74
|
+
'Catch' => :catch,
|
75
|
+
}.each do |node,ident|
|
76
|
+
define_method(:"visit_#{node}") do |o|
|
77
|
+
[ ident,
|
78
|
+
o.cond.accept(self),
|
79
|
+
o.b_then ? o.b_then.accept(self) : nil,
|
80
|
+
o.b_else ? o.b_else.accept(self) : nil
|
81
|
+
]
|
82
|
+
end
|
83
|
+
end
|
84
|
+
### UNARY NODES ###
|
85
|
+
{
|
86
|
+
'Throw' => :throw,
|
87
|
+
'Delete' => :delete,
|
88
|
+
'Void' => :void,
|
89
|
+
'Typeof' => :typeof,
|
90
|
+
'PrefixDecrement' => :prefix_dec,
|
91
|
+
'PostfixDecrement' => :postfix_dec,
|
92
|
+
'PrefixIncrement' => :prefix_inc,
|
93
|
+
'PostfixIncrement' => :postfix_inc,
|
94
|
+
'Parenthesis' => :paren,
|
95
|
+
'Return' => :return,
|
96
|
+
'UnaryNegative' => :u_neg,
|
97
|
+
'UnaryPositive' => :u_pos,
|
98
|
+
'BitwiseNot' => :bitwise_not,
|
99
|
+
'Not' => :not,
|
100
|
+
}.each do |node,ident|
|
101
|
+
define_method(:"visit_#{node}") do |o|
|
102
|
+
[ident, o.value && o.value.accept(self)]
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
### FUNCTION NODES ###
|
107
|
+
def visit_Function(o)
|
108
|
+
[:func_expr, o.name, o.arguments, o.body.accept(self)]
|
109
|
+
end
|
110
|
+
|
111
|
+
### BINARY NODES ###
|
112
|
+
{
|
113
|
+
'In' => :in,
|
114
|
+
'InstanceOf' => :instanceof,
|
115
|
+
'Switch' => :switch,
|
116
|
+
'Case' => :case,
|
117
|
+
'Default' => :default,
|
118
|
+
'With' => :with,
|
119
|
+
'DoWhile' => :do_while,
|
120
|
+
'While' => :while,
|
121
|
+
'Property' => :property,
|
122
|
+
'GreaterThanOrEqual' => :gt_equal,
|
123
|
+
'LessThanOrEqual' => :lt_equal,
|
124
|
+
'GreaterThan' => :gt,
|
125
|
+
'LessThan' => :lt,
|
126
|
+
'GetterProperty' => :getter,
|
127
|
+
'SetterProperty' => :setter,
|
128
|
+
'OpEqual' => :op_equal,
|
129
|
+
'OpMultiply' => :op_multiply,
|
130
|
+
'OpMultiplyEqual' => :op_multiply_equal,
|
131
|
+
'OpAddEqual' => :op_add_equal,
|
132
|
+
'OpSubtractEqual' => :op_subtract_equal,
|
133
|
+
'OpAdd' => :op_add,
|
134
|
+
'OpSubtract' => :op_subtract,
|
135
|
+
'OpDivideEqual' => :op_divide_equal,
|
136
|
+
'OpDivide' => :op_divide,
|
137
|
+
'OpLShiftEqual' => :op_lshift_equal,
|
138
|
+
'OpRShiftEqual' => :op_rshift_equal,
|
139
|
+
'OpURShiftEqual' => :op_urshift_equal,
|
140
|
+
'OpLShift' => :op_lshift,
|
141
|
+
'OpRShift' => :op_rshift,
|
142
|
+
'OpURShift' => :op_urshift,
|
143
|
+
'OpBitAndEqual' => :op_bitand_equal,
|
144
|
+
'OpBitAnd' => :op_bitand,
|
145
|
+
'OpBitXorEqual' => :op_bitxor_equal,
|
146
|
+
'OpBitOrEqual' => :op_bitor_equal,
|
147
|
+
'OpBitXor' => :op_bitxor,
|
148
|
+
'OpBitOr' => :op_bitor,
|
149
|
+
'OpModEqual' => :op_mod_equal,
|
150
|
+
'OpMod' => :op_mod,
|
151
|
+
'AssignExpr' => :assign,
|
152
|
+
'BracketAccess' => :bracket_access,
|
153
|
+
'DotAccessor' => :dot_accessor,
|
154
|
+
'Equal' => :equal,
|
155
|
+
'NotEqual' => :not_equal,
|
156
|
+
'Or' => :or,
|
157
|
+
'And' => :and,
|
158
|
+
'StrictEqual' => :strict_equal,
|
159
|
+
'StrictNotEqual' => :strict_not_equal,
|
160
|
+
'Label' => :label,
|
161
|
+
}.each do |node,ident|
|
162
|
+
define_method(:"visit_#{node}") do |o|
|
163
|
+
[ident, o.left && o.left.accept(self), o.right &&o.right.accept(self)]
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def accept(target)
|
168
|
+
target.accept(self)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
data/lib/rails/init.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'johnson'
|
2
|
+
|
3
|
+
class EJSHandler < ActionView::TemplateHandler
|
4
|
+
class EJSProxy # :nodoc:
|
5
|
+
def initialize(controller)
|
6
|
+
@controller = controller
|
7
|
+
end
|
8
|
+
|
9
|
+
def key?(pooperty)
|
10
|
+
@controller.instance_variables.include?("@#{pooperty}")
|
11
|
+
end
|
12
|
+
|
13
|
+
def [](pooperty)
|
14
|
+
@controller.instance_variable_get("@#{pooperty}")
|
15
|
+
end
|
16
|
+
|
17
|
+
def []=(pooperty, value)
|
18
|
+
@controller.instance_variable_set("@#{pooperty}", value)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize(view)
|
23
|
+
@view = view
|
24
|
+
end
|
25
|
+
|
26
|
+
def render(template)
|
27
|
+
ctx = Johnson::Runtime.new
|
28
|
+
ctx.evaluate('Johnson.require("johnson/template");')
|
29
|
+
ctx['template'] = template.source
|
30
|
+
ctx['controller'] = @view.controller
|
31
|
+
ctx['at'] = EJSProxy.new(@view.controller)
|
32
|
+
|
33
|
+
ctx.evaluate('Johnson.templatize(template).call(at)')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
ActionView::Template.register_template_handler("ejs", EJSHandler)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
4
|
+
<head>
|
5
|
+
<title>Test Page for Apache Installation</title>
|
6
|
+
</head>
|
7
|
+
<!-- Background white, links blue (unvisited), navy (visited), red
|
8
|
+
(active) -->
|
9
|
+
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF"
|
10
|
+
vlink="#000080" alink="#FF0000">
|
11
|
+
<p>If you can see this, it means that the installation of the <a
|
12
|
+
href="http://www.apache.org/foundation/preFAQ.html">Apache web
|
13
|
+
server</a> software on this system was successful. You may now add
|
14
|
+
content to this directory and replace this page.</p>
|
15
|
+
|
16
|
+
<hr width="50%" size="8" id='test' />
|
17
|
+
<h2 align="center">Seeing this instead of the website you
|
18
|
+
expected?</h2>
|
19
|
+
|
20
|
+
<p>This page is here because the site administrator has changed the
|
21
|
+
configuration of this web server. Please <strong>contact the person
|
22
|
+
responsible for maintaining this server with questions.</strong>
|
23
|
+
The Apache Software Foundation, which wrote the web server software
|
24
|
+
this site administrator is using, has nothing to do with
|
25
|
+
maintaining this site and cannot help resolve configuration
|
26
|
+
issues.</p>
|
27
|
+
|
28
|
+
<hr width="50%" size="8" />
|
29
|
+
<p>The Apache <a href="manual/">documentation</a> has been included
|
30
|
+
with this distribution.</p>
|
31
|
+
|
32
|
+
<p>You are free to use the image below on an Apache-powered web
|
33
|
+
server. Thanks for using Apache!</p>
|
34
|
+
|
35
|
+
<div align="center"><img src="apache_pb.gif" alt="" /></div>
|
36
|
+
</body>
|
37
|
+
</html>
|
38
|
+
|
@@ -0,0 +1,186 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr" id="html">
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
5
|
+
<title>jQuery Test Suite</title>
|
6
|
+
<link rel="Stylesheet" media="screen" href="data/testsuite.css" />
|
7
|
+
<script>var jQuery = "jQuery", $ = "$"; // For testing .noConflict()</script>
|
8
|
+
<script type="text/javascript" src="../dist/jquery.js"></script>
|
9
|
+
<script type="text/javascript" src="data/testrunner.js"></script>
|
10
|
+
<script type="text/javascript" src="unit/core.js"></script>
|
11
|
+
<script type="text/javascript" src="unit/selector.js"></script>
|
12
|
+
<script type="text/javascript" src="unit/event.js"></script>
|
13
|
+
<script type="text/javascript" src="unit/ajax.js"></script>
|
14
|
+
<script type="text/javascript" src="unit/fx.js"></script>
|
15
|
+
</head>
|
16
|
+
|
17
|
+
<body id="body">
|
18
|
+
<h1 id="header">jQuery Test Suite</h1>
|
19
|
+
<h2 id="banner"/>
|
20
|
+
<h2 id="userAgent"/>
|
21
|
+
|
22
|
+
<!-- Test HTML -->
|
23
|
+
<div id="nothiddendiv" style="height:1px;background:white;">
|
24
|
+
<div id="nothiddendivchild"/>
|
25
|
+
</div>
|
26
|
+
<!-- this iframe is outside the #main so it won't reload constantly wasting time, but it means the tests must be "safe" and clean up after themselves -->
|
27
|
+
<iframe id="loadediframe" name="loadediframe" style="display:none;" src="data/iframe.html"/>
|
28
|
+
<dl id="dl" style="display:none;">
|
29
|
+
<div id="main" style="display: none;">
|
30
|
+
<p id="firstp">See <a id="simon1" href="http://simon.incutio.com/archive/2003/03/25/#getElementsBySelector" rel="bookmark">this blog entry</a> for more information.</p>
|
31
|
+
<p id="ap">
|
32
|
+
Here are some links in a normal paragraph: <a id="google" href="http://www.google.com/" title="Google!">Google</a>,
|
33
|
+
<a id="groups" href="http://groups.google.com/">Google Groups</a>.
|
34
|
+
This link has <code><a href="http://smin" id="anchor1">class="blog"</a></code>:
|
35
|
+
<a href="http://diveintomark.org/" class="blog" hreflang="en" id="mark">diveintomark</a>
|
36
|
+
|
37
|
+
</p>
|
38
|
+
<div id="foo">
|
39
|
+
<p id="sndp">Everything inside the red border is inside a div with <code>id="foo"</code>.</p>
|
40
|
+
<p lang="en" id="en">This is a normal link: <a id="yahoo" href="http://www.yahoo.com/" class="blogTest">Yahoo</a></p>
|
41
|
+
<p id="sap">This link has <code><a href="#2" id="anchor2">class="blog"</a></code>: <a href="http://simon.incutio.com/" class="blog link" id="simon">Simon Willison's Weblog</a></p>
|
42
|
+
|
43
|
+
</div>
|
44
|
+
<p id="first">Try them out:</p>
|
45
|
+
<ul id="firstUL"></ul>
|
46
|
+
<ol id="empty"></ol>
|
47
|
+
<form id="form" action="formaction">
|
48
|
+
<input type="text" name="action" value="Test" id="text1" maxlength="30"/>
|
49
|
+
<input type="text" name="text2" value="Test" id="text2" disabled="disabled"/>
|
50
|
+
<input type="radio" name="radio1" id="radio1" value="on"/>
|
51
|
+
|
52
|
+
<input type="radio" name="radio2" id="radio2" checked="checked"/>
|
53
|
+
<input type="checkbox" name="check" id="check1" checked="checked"/>
|
54
|
+
<input type="checkbox" id="check2" value="on"/>
|
55
|
+
|
56
|
+
<input type="hidden" name="hidden" id="hidden1"/>
|
57
|
+
<input type="text" style="display:none;" name="foo[bar]" id="hidden2"/>
|
58
|
+
|
59
|
+
<input type="text" id="name" name="name" value="name" />
|
60
|
+
|
61
|
+
<button id="button" name="button">Button</button>
|
62
|
+
|
63
|
+
<textarea id="area1" maxlength="30">foobar</textarea>
|
64
|
+
|
65
|
+
<select name="select1" id="select1">
|
66
|
+
<option id="option1a" class="emptyopt" value="">Nothing</option>
|
67
|
+
<option id="option1b" value="1">1</option>
|
68
|
+
<option id="option1c" value="2">2</option>
|
69
|
+
<option id="option1d" value="3">3</option>
|
70
|
+
</select>
|
71
|
+
<select name="select2" id="select2">
|
72
|
+
<option id="option2a" class="emptyopt" value="">Nothing</option>
|
73
|
+
<option id="option2b" value="1">1</option>
|
74
|
+
<option id="option2c" value="2">2</option>
|
75
|
+
<option id="option2d" selected="selected" value="3">3</option>
|
76
|
+
</select>
|
77
|
+
<select name="select3" id="select3" multiple="multiple">
|
78
|
+
<option id="option3a" class="emptyopt" value="">Nothing</option>
|
79
|
+
<option id="option3b" selected="selected" value="1">1</option>
|
80
|
+
<option id="option3c" selected="selected" value="2">2</option>
|
81
|
+
<option id="option3d" value="3">3</option>
|
82
|
+
</select>
|
83
|
+
|
84
|
+
<object id="object1" codebase="stupid">
|
85
|
+
<param name="p1" value="x1" />
|
86
|
+
<param name="p2" value="x2" />
|
87
|
+
</object>
|
88
|
+
|
89
|
+
<span id="台北Táiběi"/>
|
90
|
+
<span id="台北" lang="中文"/>
|
91
|
+
<span id="utf8class1" class="台北Táiběi 台北"/>
|
92
|
+
<span id="utf8class2" class="台北"/>
|
93
|
+
<span id="foo:bar" class="foo:bar"/>
|
94
|
+
<span id="test.foo[5]bar" class="test.foo[5]bar"/>
|
95
|
+
|
96
|
+
<foo_bar id="foobar">test element</foo_bar>
|
97
|
+
</form>
|
98
|
+
<b id="floatTest">Float test.</b>
|
99
|
+
<iframe id="iframe" name="iframe"></iframe>
|
100
|
+
<form id="lengthtest">
|
101
|
+
<input type="text" id="length" name="test"/>
|
102
|
+
<input type="text" id="idTest" name="id"/>
|
103
|
+
</form>
|
104
|
+
<table id="table"></table>
|
105
|
+
|
106
|
+
<div id="fx-queue">
|
107
|
+
<div id="fadein" class='chain test'>fadeIn<div>fadeIn</div></div>
|
108
|
+
<div id="fadeout" class='chain test out'>fadeOut<div>fadeOut</div></div>
|
109
|
+
|
110
|
+
<div id="show" class='chain test'>show<div>show</div></div>
|
111
|
+
<div id="hide" class='chain test out'>hide<div>hide</div></div>
|
112
|
+
|
113
|
+
<div id="togglein" class='chain test'>togglein<div>togglein</div></div>
|
114
|
+
<div id="toggleout" class='chain test out'>toggleout<div>toggleout</div></div>
|
115
|
+
|
116
|
+
|
117
|
+
<div id="slideup" class='chain test'>slideUp<div>slideUp</div></div>
|
118
|
+
<div id="slidedown" class='chain test out'>slideDown<div>slideDown</div></div>
|
119
|
+
|
120
|
+
<div id="slidetogglein" class='chain test'>slideToggleIn<div>slideToggleIn</div></div>
|
121
|
+
<div id="slidetoggleout" class='chain test out'>slideToggleOut<div>slideToggleOut</div></div>
|
122
|
+
</div>
|
123
|
+
|
124
|
+
<div id="fx-tests"></div>
|
125
|
+
|
126
|
+
<form id="testForm" action="#" method="get">
|
127
|
+
<textarea name="T3" rows="2" cols="15">?
|
128
|
+
Z</textarea>
|
129
|
+
<input type="hidden" name="H1" value="x" />
|
130
|
+
<input type="hidden" name="H2" />
|
131
|
+
<input name="PWD" type="password" value="" />
|
132
|
+
<input name="T1" type="text" />
|
133
|
+
<input name="T2" type="text" value="YES" readonly="readonly" />
|
134
|
+
<input type="checkbox" name="C1" value="1" />
|
135
|
+
<input type="checkbox" name="C2" />
|
136
|
+
<input type="radio" name="R1" value="1" />
|
137
|
+
<input type="radio" name="R1" value="2" />
|
138
|
+
<input type="text" name="My Name" value="me" />
|
139
|
+
<input type="reset" name="reset" value="NO" />
|
140
|
+
<select name="S1">
|
141
|
+
<option value="abc">ABC</option>
|
142
|
+
<option value="abc">ABC</option>
|
143
|
+
<option value="abc">ABC</option>
|
144
|
+
</select>
|
145
|
+
<select name="S2" multiple="multiple" size="3">
|
146
|
+
<option value="abc">ABC</option>
|
147
|
+
<option value="abc">ABC</option>
|
148
|
+
<option value="abc">ABC</option>
|
149
|
+
</select>
|
150
|
+
<select name="S3">
|
151
|
+
<option selected="selected">YES</option>
|
152
|
+
</select>
|
153
|
+
<select name="S4">
|
154
|
+
<option value="" selected="selected">NO</option>
|
155
|
+
</select>
|
156
|
+
<input type="submit" name="sub1" value="NO" />
|
157
|
+
<input type="submit" name="sub2" value="NO" />
|
158
|
+
<input type="image" name="sub3" value="NO" />
|
159
|
+
<button name="sub4" type="submit" value="NO">NO</button>
|
160
|
+
<input name="D1" type="text" value="NO" disabled="disabled" />
|
161
|
+
<input type="checkbox" checked="checked" disabled="disabled" name="D2" value="NO" />
|
162
|
+
<input type="radio" name="D3" value="NO" checked="checked" disabled="disabled" />
|
163
|
+
<select name="D4" disabled="disabled">
|
164
|
+
<option selected="selected" value="NO">NO</option>
|
165
|
+
</select>
|
166
|
+
</form>
|
167
|
+
<div id="moretests">
|
168
|
+
<form>
|
169
|
+
<div id="checkedtest" style="display:none;">
|
170
|
+
<input type="radio" name="checkedtestradios" checked="checked"/>
|
171
|
+
<input type="radio" name="checkedtestradios" value="on"/>
|
172
|
+
<input type="checkbox" name="checkedtestcheckboxes" checked="checked"/>
|
173
|
+
<input type="checkbox" name="checkedtestcheckboxes" />
|
174
|
+
</div>
|
175
|
+
</form>
|
176
|
+
<div id="nonnodes"><span>hi</span> there <!-- mon ami --></div>
|
177
|
+
<div id="t2037">
|
178
|
+
<div><div class="hidden">hidden</div></div>
|
179
|
+
</div>
|
180
|
+
</div>
|
181
|
+
</div>
|
182
|
+
</dl>
|
183
|
+
|
184
|
+
<ol id="tests"></ol>
|
185
|
+
</body>
|
186
|
+
</html>
|