1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
require 'test/unit'
require 'coderay'
class TC_Latex_Encoder < Test::Unit::TestCase
def setup
CodeRay::Encoders.plugin_path 'lib/coderay/encoders'
@enc = CodeRay::Encoders[:latex].new
end
def test_simple
source_text = <<EOD
function update_stars(num)
{
for (var i = 0; i < 10; ++i) {
var star = $("star"+(i+1));
if (i < num) {
if (! star.visible()) {
Effect.Appear(star);
}
} else {
if (star.visible()) {
Effect.Fade(star);
}
}
}
}
EOD
expected = [["function", :reserved],[" ", :space],["update_stars", :ident],
["(", :operator], ["num", :ident], [")", :operator],
["\n", :space],
["{", :operator],
["\n ", :space],
["for", :reserved], [" ", :space],
["(", :operator], ["var", :reserved], [" ", :space],
["i", :ident],[" ", :space], ["=", :operator], [" ", :space],
["0", :integer],
[";", :operator],
[" ", :space], ["i", :ident], [" ", :space],
["<", :operator], [" ", :space], ["10", :integer],
[";", :operator],
[" ", :space], ["++", :operator], ["i", :ident],
[")", :operator], [" ", :space], ["{", :operator],
["\n ", :space],
["var", :reserved], [" ", :space], ["star", :ident],
[" ", :space], ["=", :operator], [" ", :space],
["$", :ident], ["(", :operator],
[:open, :string], ["\"", :delimiter], ["star", :content],
["\"", :delimiter], [:close, :string],
["+", :operator],
["(", :operator], ["i", :ident], ["+", :operator],
["1", :integer], [")", :operator],
[")", :operator],
[";", :operator],
["\n ", :space],
["if", :reserved], [" ", :space],
["(", :operator], ["i", :ident], [" ", :space],
["<", :operator], [" ", :space], ["num", :ident],
[")", :operator], [" ", :space], ["{", :operator],
["\n ", :space],
["if", :reserved], [" ", :space],
["(", :operator], ["!", :operator], [" ", :space],
["star", :ident], [".", :operator], ["visible", :ident],
["(", :operator], [")", :operator], [")", :operator],
[" ", :space],
["{", :operator],
["\n ", :space],
["Effect", :ident], [".", :operator], ["Appear", :ident],
["(", :operator], ["star", :ident], [")", :operator],
[";", :operator], ["\n ", :space],
["}", :operator],
["\n ", :space],
["}", :operator],
[" ", :space], ["else", :reserved], [" ", :space],
["{", :operator],
["\n ", :space],
["if", :reserved], [" ", :space],
["(", :operator], ["star", :ident], [".", :operator],
["visible", :ident], ["(", :operator], [")", :operator],
[")", :operator],
[" ", :space],
["{", :operator],
["\n ", :space],
["Effect", :ident], [".", :operator], ["Fade", :ident],
["(", :operator], ["star", :ident], [")", :operator],
[";", :operator],
["\n ", :space],
["}", :operator],
["\n ", :space],
["}", :operator],
["\n ", :space],
["}", :operator],
["\n", :space],
["}", :operator],
["\n", :space]]
symbol_list = CodeRay.scan(source_text, :javascript)
assert_equal(expected, symbol_list)
end
def teardown
@enc = nil
end
end
|