bitclust-core 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/data/bitclust/template.epub/method +8 -2
- data/data/bitclust/template.lillia/method +8 -2
- data/data/bitclust/template.offline/method +8 -2
- data/lib/bitclust/lineinput.rb +10 -1
- data/lib/bitclust/rdcompiler.rb +11 -5
- data/lib/bitclust/syntax_highlighter.rb +26 -1
- data/lib/bitclust/version.rb +1 -1
- data/test/test_syntax_highlighter.rb +23 -0
- metadata +14 -13
- data/lib/bitclust/subcommands/review_command.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b69f11fbdf0bc331f213ef6d9d854c39d96920492d182277101106d1ed0de062
|
4
|
+
data.tar.gz: 53858c49735d3b7207292a5d704c015209226f4a39a7763ccd031919e34225c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04b3303a69a3ee1610ed17c5124f81280cf68355973b1726f3a474e8a22c096329ed82dc687237e3d6c6b19a13e0d6ddcda33f457cb81d7e4ebb22929ba76c1b
|
7
|
+
data.tar.gz: 42c05365d2c6985e3fe147942c70672463a77e31e46cbc407c3044c3a73e72a36cbcfa0f68ba5bce5a89d516ad1edd4865e79f009cae1113f583450f1f79d99c
|
@@ -14,8 +14,14 @@
|
|
14
14
|
<% headline_init %>
|
15
15
|
<%= headline("#{entry.type_label} #{entry.label}") %>
|
16
16
|
<dl class="methodlist">
|
17
|
-
<%
|
17
|
+
<%
|
18
|
+
headline_push
|
19
|
+
@entries.sort.each do |ent|
|
20
|
+
%>
|
18
21
|
<%= compile_method(ent) %>
|
19
|
-
<%
|
22
|
+
<%
|
23
|
+
end
|
24
|
+
headline_pop
|
25
|
+
%>
|
20
26
|
</dl>
|
21
27
|
|
@@ -15,7 +15,13 @@
|
|
15
15
|
<% headline_init %>
|
16
16
|
<%= headline("#{entry.type_label} #{entry.label}") %>
|
17
17
|
<dl class="methodlist">
|
18
|
-
<%
|
18
|
+
<%
|
19
|
+
headline_push
|
20
|
+
@entries.sort.each do |ent|
|
21
|
+
%>
|
19
22
|
<%= compile_method(ent) %>
|
20
|
-
<%
|
23
|
+
<%
|
24
|
+
end
|
25
|
+
headline_pop
|
26
|
+
%>
|
21
27
|
</dl>
|
@@ -15,8 +15,14 @@
|
|
15
15
|
<% headline_init %>
|
16
16
|
<%= headline("#{entry.type_label} #{entry.label}") %>
|
17
17
|
<dl class="methodlist">
|
18
|
-
<%
|
18
|
+
<%
|
19
|
+
headline_push
|
20
|
+
@entries.sort.each do |ent|
|
21
|
+
%>
|
19
22
|
<%= compile_method(ent) %>
|
20
|
-
<%
|
23
|
+
<%
|
24
|
+
end
|
25
|
+
headline_pop
|
26
|
+
%>
|
21
27
|
</dl>
|
22
28
|
|
data/lib/bitclust/lineinput.rb
CHANGED
@@ -17,8 +17,9 @@ class LineInput
|
|
17
17
|
new(StringIO.new(s))
|
18
18
|
end
|
19
19
|
|
20
|
-
def initialize(f)
|
20
|
+
def initialize(f, entry = nil)
|
21
21
|
@input = f
|
22
|
+
@entry = entry
|
22
23
|
@buf = []
|
23
24
|
@lineno = 0
|
24
25
|
@eof_p = false
|
@@ -36,6 +37,14 @@ class LineInput
|
|
36
37
|
@input.path
|
37
38
|
end
|
38
39
|
|
40
|
+
def name
|
41
|
+
if @entry
|
42
|
+
@entry.inspect
|
43
|
+
else
|
44
|
+
"-"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
39
48
|
def lineno
|
40
49
|
@lineno
|
41
50
|
end
|
data/lib/bitclust/rdcompiler.rb
CHANGED
@@ -45,7 +45,7 @@ module BitClust
|
|
45
45
|
def compile_function(f, opt = nil)
|
46
46
|
@opt = opt
|
47
47
|
@type = :function
|
48
|
-
setup(f.source) {
|
48
|
+
setup(f.source, f) {
|
49
49
|
entry
|
50
50
|
}
|
51
51
|
ensure
|
@@ -57,7 +57,7 @@ module BitClust
|
|
57
57
|
@opt = opt
|
58
58
|
@type = :method
|
59
59
|
@method = m
|
60
|
-
setup(m.source) {
|
60
|
+
setup(m.source, m) {
|
61
61
|
entry
|
62
62
|
}
|
63
63
|
ensure
|
@@ -66,8 +66,8 @@ module BitClust
|
|
66
66
|
|
67
67
|
private
|
68
68
|
|
69
|
-
def setup(src)
|
70
|
-
@f = LineInput.new(StringIO.new(src))
|
69
|
+
def setup(src, entry = nil)
|
70
|
+
@f = LineInput.new(StringIO.new(src), entry)
|
71
71
|
@out = StringIO.new
|
72
72
|
yield
|
73
73
|
@out.string
|
@@ -275,7 +275,13 @@ module BitClust
|
|
275
275
|
src << line
|
276
276
|
end
|
277
277
|
if lang == "ruby"
|
278
|
-
|
278
|
+
begin
|
279
|
+
filename = (caption&.size || 0) > 2 ? caption : @f.name
|
280
|
+
string BitClust::SyntaxHighlighter.new(src, filename).highlight
|
281
|
+
rescue BitClust::SyntaxHighlighter::Error => ex
|
282
|
+
$stderr.puts ex.message
|
283
|
+
exit(false)
|
284
|
+
end
|
279
285
|
else
|
280
286
|
string src
|
281
287
|
end
|
@@ -5,6 +5,25 @@ module BitClust
|
|
5
5
|
class SyntaxHighlighter < Ripper::Filter
|
6
6
|
include BitClust::HTMLUtils
|
7
7
|
|
8
|
+
class Error < StandardError
|
9
|
+
def initialize(name, lineno, column, error_message)
|
10
|
+
@name = name
|
11
|
+
@lineno = lineno
|
12
|
+
@column = column
|
13
|
+
@error_message = error_message
|
14
|
+
end
|
15
|
+
|
16
|
+
def message
|
17
|
+
"#{@name}:#{@lineno}:#{@column} #{@error_message} (#{self.class})"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class ParseError < Error
|
22
|
+
end
|
23
|
+
|
24
|
+
class CompileError < Error
|
25
|
+
end
|
26
|
+
|
8
27
|
COLORS = {
|
9
28
|
CHAR: "sc", # ?a
|
10
29
|
__end__: "k", # __END__
|
@@ -97,10 +116,16 @@ module BitClust
|
|
97
116
|
|
98
117
|
BUILTINS_B = %w[chomp chop exit gsub sub]
|
99
118
|
|
100
|
-
def initialize(
|
119
|
+
def initialize(src, filename = "-", lineno = 1)
|
101
120
|
super
|
102
121
|
@stack = []
|
103
122
|
@name_buffer = []
|
123
|
+
@__lexer.define_singleton_method(:on_parse_error) do |message|
|
124
|
+
raise ParseError.new(filename, self.lineno, self.column, message)
|
125
|
+
end
|
126
|
+
@__lexer.define_singleton_method(:compile_error) do |message|
|
127
|
+
raise CompileError.new(filename, self.lineno, self.column, message)
|
128
|
+
end
|
104
129
|
end
|
105
130
|
|
106
131
|
def on_default(event, token, data)
|
data/lib/bitclust/version.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'bitclust/syntax_highlighter'
|
2
|
+
|
3
|
+
class TestSyntaxHighlighter < Test::Unit::TestCase
|
4
|
+
def highlight(src, filename = "-")
|
5
|
+
BitClust::SyntaxHighlighter.new(src, filename).highlight
|
6
|
+
end
|
7
|
+
|
8
|
+
sub_test_case "syntax error" do
|
9
|
+
test "single line" do
|
10
|
+
src = "...\n"
|
11
|
+
assert_raise(BitClust::SyntaxHighlighter::ParseError.new("-", 1, 3, "syntax error, unexpected ...")) do
|
12
|
+
highlight(src)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
test "multiple line" do
|
17
|
+
src = "a = 1\n...\n"
|
18
|
+
assert_raise(BitClust::SyntaxHighlighter::ParseError.new("-", 2, 3, "syntax error, unexpected ..., expecting end-of-input")) do
|
19
|
+
highlight(src)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bitclust-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- https://github.com/rurema
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: test-unit
|
@@ -191,7 +191,6 @@ files:
|
|
191
191
|
- lib/bitclust/subcommands/preproc_command.rb
|
192
192
|
- lib/bitclust/subcommands/property_command.rb
|
193
193
|
- lib/bitclust/subcommands/query_command.rb
|
194
|
-
- lib/bitclust/subcommands/review_command.rb
|
195
194
|
- lib/bitclust/subcommands/server_command.rb
|
196
195
|
- lib/bitclust/subcommands/setup_command.rb
|
197
196
|
- lib/bitclust/subcommands/statichtml_command.rb
|
@@ -214,6 +213,7 @@ files:
|
|
214
213
|
- test/test_rrdparser.rb
|
215
214
|
- test/test_runner.rb
|
216
215
|
- test/test_simplesearcher.rb
|
216
|
+
- test/test_syntax_highlighter.rb
|
217
217
|
- theme/default/images/external.png
|
218
218
|
- theme/default/rurema.png
|
219
219
|
- theme/default/style.css
|
@@ -241,23 +241,24 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
241
241
|
version: '0'
|
242
242
|
requirements: []
|
243
243
|
rubyforge_project: ''
|
244
|
-
rubygems_version: 2.7.
|
244
|
+
rubygems_version: 2.7.4
|
245
245
|
signing_key:
|
246
246
|
specification_version: 4
|
247
247
|
summary: BitClust is a rurema document processor.
|
248
248
|
test_files:
|
249
|
-
- test/test_simplesearcher.rb
|
250
|
-
- test/test_refsdatabase.rb
|
251
|
-
- test/test_runner.rb
|
252
249
|
- test/test_methoddatabase.rb
|
253
|
-
- test/
|
254
|
-
- test/
|
255
|
-
- test/test_rrdparser.rb
|
250
|
+
- test/test_functiondatabase.rb
|
251
|
+
- test/test_refsdatabase.rb
|
256
252
|
- test/test_bitclust.rb
|
257
253
|
- test/test_methodsignature.rb
|
258
|
-
- test/test_entry.rb
|
259
254
|
- test/test_functionreferenceparser.rb
|
260
|
-
- test/
|
255
|
+
- test/test_simplesearcher.rb
|
261
256
|
- test/test_preprocessor.rb
|
262
|
-
- test/
|
257
|
+
- test/test_runner.rb
|
263
258
|
- test/test_libraryentry.rb
|
259
|
+
- test/test_nameutils.rb
|
260
|
+
- test/test_entry.rb
|
261
|
+
- test/run_test.rb
|
262
|
+
- test/test_rdcompiler.rb
|
263
|
+
- test/test_rrdparser.rb
|
264
|
+
- test/test_syntax_highlighter.rb
|