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
|
# File 'lib/murdoc/scanner.rb', line 11
def call(source, = false)
paragraphs = []
ss = StringScanner.new(source)
line = i = src_line = 0
loop do
= []
code_lines = []
if has_mlc?
while (ss.scan(mlcb_regex))
= ''
while (!ss.eos? && !ss.match?(/.*#{mlce_regex}/))
i += 1
<< ss.scan(/.*?$/)
<< ss.getch.to_s
end
if (fragment = ss.scan(/.*#{mlce_regex}/))
<< fragment.sub(mlce_regex, '')
end
ss.scan(/[ \t]*\n/)
<< remove_common_space_prefix()
end
end
if has_slc?
while (ss.scan(slc_regex))
= ''
<< ss.scan(/.*?$/)
<< ss.getch.to_s
<<
i += 1
end
end
empty_leading_lines_count = skip_empty_lines(ss)
i += empty_leading_lines_count
src_line += empty_leading_lines_count
line = ? src_line : i
while (!(ss) && !ss.eos?)
code = ss.scan(/^.*?$/)
code << ss.getch.to_s
code_lines << code
i += 1
src_line += 1
end
code = post_process_code(code_lines.join(''))
= (.join(''))
paragraphs << Paragraph.new(code,
,
line,
language.name)
break if ss.eos?
end
paragraphs
end
|