fbtok 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -1
- data/Rakefile +2 -2
- data/bin/fbtok +3 -1
- data/lib/fbtok/linter.rb +42 -25
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c719bbab25c068f69c9bd0bc44036ad355c8ca486ea3dfbec6d2276b4d436fbb
|
4
|
+
data.tar.gz: 7053879da0e31078524b8b74453d5e7f2d3b97b0d503629467210088d91955c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38bd241c9466046377aef3c951de74b25f9a7ae1d38e1827997ba673bea7cb60105344c7f78bd997b8e0e16dc90c89946fe08db39bb3433751e1a55167e55bbf
|
7
|
+
data.tar.gz: d59f2b6fed95ebb4e7539baf4e841db5ea008b29357438de13bf3094a3062aae7e47d5825d6f7a8299a1684b3295b9c5821806eee890b67fd68dcbb392034a1e
|
data/CHANGELOG.md
CHANGED
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@ require 'hoe'
|
|
2
2
|
|
3
3
|
|
4
4
|
Hoe.spec 'fbtok' do
|
5
|
-
self.version = '0.3.
|
5
|
+
self.version = '0.3.1'
|
6
6
|
|
7
7
|
self.summary = "fbtok - football.txt lint tools incl. tokenizer, parser & more"
|
8
8
|
self.description = summary
|
@@ -21,7 +21,7 @@ Hoe.spec 'fbtok' do
|
|
21
21
|
self.extra_deps = [
|
22
22
|
# ['sportdb-structs', '>= 0.5.0'],
|
23
23
|
# ['logutils', '>= 0.6.1'],
|
24
|
-
['sportdb-parser', '>= 0.5.
|
24
|
+
['sportdb-parser', '>= 0.5.8'],
|
25
25
|
['sportdb-formats', '>= 2.1.2'],
|
26
26
|
]
|
27
27
|
|
data/bin/fbtok
CHANGED
@@ -87,7 +87,9 @@ specs.each_with_index do |spec,i|
|
|
87
87
|
|
88
88
|
paths.each_with_index do |path,j|
|
89
89
|
puts "==> [#{i+1}/#{specs.size}, #{j+1}/#{paths.size}] reading >#{path}<..."
|
90
|
-
linter.read( path, parse: false ) ## only tokenize (do NOT parse)
|
90
|
+
tokens = linter.read( path, parse: false ) ## only tokenize (do NOT parse)
|
91
|
+
|
92
|
+
puts " #{tokens.size} token(s)"
|
91
93
|
|
92
94
|
errors += linter.errors if linter.errors?
|
93
95
|
end
|
data/lib/fbtok/linter.rb
CHANGED
@@ -16,43 +16,49 @@ attr_reader :errors
|
|
16
16
|
|
17
17
|
def initialize
|
18
18
|
@errors = []
|
19
|
-
@parser = Parser.new ## use own parser instance (not shared) - why? why not?
|
20
19
|
end
|
21
20
|
|
22
21
|
|
23
22
|
def errors?() @errors.size > 0; end
|
24
23
|
|
25
24
|
|
25
|
+
|
26
26
|
#########
|
27
27
|
## parse - false (default) - tokenize (only)
|
28
28
|
## - true - tokenize & parse
|
29
29
|
def read( path, parse: true )
|
30
30
|
## note: every (new) read call - resets errors list to empty
|
31
31
|
@errors = []
|
32
|
-
|
33
|
-
@tree = []
|
32
|
+
@tree = []
|
34
33
|
|
35
34
|
outline = QuickMatchOutline.read( path )
|
36
35
|
|
37
36
|
outline.each_para do |lines|
|
38
|
-
|
39
|
-
if parse
|
37
|
+
|
40
38
|
## flatten lines (array of strings) into all-in-one string
|
41
39
|
txt = lines.reduce( String.new ) do |mem, line|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
40
|
+
mem << line
|
41
|
+
mem << "\n"
|
42
|
+
mem
|
43
|
+
end
|
44
|
+
|
45
|
+
if parse
|
47
46
|
if debug?
|
48
47
|
puts "lines:"
|
49
48
|
pp txt
|
50
49
|
end
|
51
50
|
|
52
|
-
## todo/fix - add/track parse errors!!!!!!
|
53
51
|
## pass along debug flag to parser (& tokenizer)?
|
54
52
|
parser = RaccMatchParser.new( txt ) ## use own parser instance (not shared) - why? why not?
|
55
|
-
tree = parser.
|
53
|
+
tree, errors = parser.parse_with_errors
|
54
|
+
|
55
|
+
if errors.size > 0
|
56
|
+
## add to "global" error list
|
57
|
+
## make a triplet tuple (file / msg / line text)
|
58
|
+
errors.each do |msg|
|
59
|
+
@errors << [path, msg]
|
60
|
+
end
|
61
|
+
end
|
56
62
|
|
57
63
|
if debug?
|
58
64
|
puts "parse tree:"
|
@@ -62,32 +68,43 @@ def read( path, parse: true )
|
|
62
68
|
@tree += tree ## add nodes
|
63
69
|
|
64
70
|
else ## process for tokenize only
|
65
|
-
lines.each_with_index do |line,i|
|
66
71
|
|
67
72
|
if debug?
|
68
|
-
|
69
|
-
|
73
|
+
puts "lines:"
|
74
|
+
pp txt
|
70
75
|
end
|
71
76
|
|
72
|
-
|
77
|
+
##
|
78
|
+
## add (bakc) a line-by-line tracing (debug) option - why? why not?
|
79
|
+
## now debug output is by section (not line-by-line)
|
80
|
+
|
81
|
+
lexer = Lexer.new( txt )
|
82
|
+
t, errors = lexer.tokenize_with_errors
|
73
83
|
|
74
|
-
if
|
84
|
+
if errors.size > 0
|
75
85
|
## add to "global" error list
|
76
86
|
## make a triplet tuple (file / msg / line text)
|
77
|
-
|
78
|
-
@errors << [
|
79
|
-
msg,
|
80
|
-
line
|
81
|
-
]
|
87
|
+
errors.each do |msg|
|
88
|
+
@errors << [path, msg]
|
82
89
|
end
|
83
90
|
end
|
84
91
|
|
85
|
-
|
86
|
-
|
92
|
+
if debug?
|
93
|
+
puts "tokens:"
|
94
|
+
pp t
|
95
|
+
end
|
96
|
+
|
97
|
+
@tree += t ## add tokens to "tree"
|
87
98
|
end # parse? (or tokenize?)
|
88
99
|
end # each para (node)
|
89
100
|
|
90
|
-
|
101
|
+
|
102
|
+
##
|
103
|
+
## auto-add error if no tokens/tree nodes
|
104
|
+
if @tree.empty? ## @tree.size == 0
|
105
|
+
@errors << [path, "empty; no #{parse ? 'parse tree nodes' : 'tokens'}"]
|
106
|
+
end
|
107
|
+
|
91
108
|
@tree ## return parse tree
|
92
109
|
end # method read
|
93
110
|
end # class Linter
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fbtok
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-01-
|
11
|
+
date: 2025-01-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sportdb-parser
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.5.
|
19
|
+
version: 0.5.8
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.5.
|
26
|
+
version: 0.5.8
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: sportdb-formats
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|