fbtok 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -1
- data/Rakefile +2 -2
- data/bin/fbtok +14 -5
- data/bin/fbtree +11 -4
- data/lib/fbtok/linter.rb +47 -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: 15089da91cb8cb9ce5f6905c3714e52758fcf4254c26f978ef1a64ac053caf9d
|
4
|
+
data.tar.gz: 13edb307d1fcbc9b0e30ff80f1764623c5f4a1cc17ef225e61d96e071615bcc6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d56318a4f9895dd71b8c6309ba131e2a310e0bc5d799bfe646f67220138ca1351bbde05ee5725bd28676988ccdbca009f0868b8de6f0e9a2ea5923743a2a32f
|
7
|
+
data.tar.gz: a28531c219b2ccf4cd1ee76129dcb8564433b1b3c2bdd1fd439ab44a4be2d04541cb8436cc9daab15c3010b22f590179556acfed1a2d2c8b23243f5156220e01
|
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.2'
|
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
@@ -10,6 +10,7 @@ args = ARGV
|
|
10
10
|
|
11
11
|
opts = {
|
12
12
|
debug: true,
|
13
|
+
warn: false,
|
13
14
|
file: nil,
|
14
15
|
}
|
15
16
|
|
@@ -18,13 +19,17 @@ parser = OptionParser.new do |parser|
|
|
18
19
|
|
19
20
|
|
20
21
|
parser.on( "-q", "--quiet",
|
21
|
-
"less debug output/messages
|
22
|
+
"less debug output/messages (default: #{!opts[:debug]})" ) do |debug|
|
22
23
|
opts[:debug] = false
|
23
24
|
end
|
24
25
|
parser.on( "--verbose", "--debug",
|
25
26
|
"turn on verbose / debug output (default: #{opts[:debug]})" ) do |debug|
|
26
27
|
opts[:debug] = true
|
27
28
|
end
|
29
|
+
parser.on( "-w", "--warn",
|
30
|
+
"turn warnings into errors (default: #{opts[:warn]})" ) do |warn|
|
31
|
+
opts[:warn] = true
|
32
|
+
end
|
28
33
|
|
29
34
|
=begin
|
30
35
|
parser.on( "--metal",
|
@@ -51,11 +56,13 @@ if opts[:debug]
|
|
51
56
|
p opts
|
52
57
|
puts "ARGV:"
|
53
58
|
p args
|
54
|
-
|
55
|
-
SportDb::Parser::Linter.debug = true
|
56
|
-
SportDb::Parser::Opts.debug = true
|
57
59
|
end
|
58
60
|
|
61
|
+
SportDb::Parser::Linter.debug = opts[:debug]
|
62
|
+
SportDb::Parser::Opts.debug = opts[:debug]
|
63
|
+
|
64
|
+
SportDb::Parser::Linter.warn = opts[:warn]
|
65
|
+
|
59
66
|
|
60
67
|
|
61
68
|
## todo/check - use packs or projects or such
|
@@ -87,7 +94,9 @@ specs.each_with_index do |spec,i|
|
|
87
94
|
|
88
95
|
paths.each_with_index do |path,j|
|
89
96
|
puts "==> [#{i+1}/#{specs.size}, #{j+1}/#{paths.size}] reading >#{path}<..."
|
90
|
-
linter.read( path, parse: false ) ## only tokenize (do NOT parse)
|
97
|
+
tokens = linter.read( path, parse: false ) ## only tokenize (do NOT parse)
|
98
|
+
|
99
|
+
puts " #{tokens.size} token(s)"
|
91
100
|
|
92
101
|
errors += linter.errors if linter.errors?
|
93
102
|
end
|
data/bin/fbtree
CHANGED
@@ -10,6 +10,7 @@ args = ARGV
|
|
10
10
|
|
11
11
|
opts = {
|
12
12
|
debug: true,
|
13
|
+
warn: false,
|
13
14
|
file: nil,
|
14
15
|
}
|
15
16
|
|
@@ -18,13 +19,18 @@ parser = OptionParser.new do |parser|
|
|
18
19
|
|
19
20
|
|
20
21
|
parser.on( "-q", "--quiet",
|
21
|
-
"less debug output/messages
|
22
|
+
"less debug output/messages (default: #{!opts[:debug]})" ) do |debug|
|
22
23
|
opts[:debug] = false
|
23
24
|
end
|
24
25
|
parser.on( "--verbose", "--debug",
|
25
26
|
"turn on verbose / debug output (default: #{opts[:debug]})" ) do |debug|
|
26
27
|
opts[:debug] = true
|
27
28
|
end
|
29
|
+
parser.on( "-w", "--warn",
|
30
|
+
"turn warnings into errors (default: #{opts[:warn]})" ) do |warn|
|
31
|
+
opts[:warn] = true
|
32
|
+
end
|
33
|
+
|
28
34
|
|
29
35
|
parser.on( "-f FILE", "--file FILE",
|
30
36
|
"read datafiles (pathspecs) via .csv file") do |file|
|
@@ -42,11 +48,12 @@ if opts[:debug]
|
|
42
48
|
p opts
|
43
49
|
puts "ARGV:"
|
44
50
|
p args
|
45
|
-
|
46
|
-
SportDb::Parser::Linter.debug = true
|
47
|
-
SportDb::Parser::Opts.debug = true
|
48
51
|
end
|
49
52
|
|
53
|
+
SportDb::Parser::Linter.debug = opts[:debug]
|
54
|
+
SportDb::Parser::Opts.debug = opts[:debug]
|
55
|
+
|
56
|
+
SportDb::Parser::Linter.warn = opts[:warn]
|
50
57
|
|
51
58
|
|
52
59
|
|
data/lib/fbtok/linter.rb
CHANGED
@@ -10,49 +10,59 @@ def self.debug=(value) @@debug = value; end
|
|
10
10
|
def self.debug?() @@debug ||= false; end ## note: default is FALSE
|
11
11
|
def debug?() self.class.debug?; end
|
12
12
|
|
13
|
+
## turn warn(ings) into errors (default is false)
|
14
|
+
def self.warn=(value) @@warn = value; end
|
15
|
+
def self.warn?() @@warn ||= false; end ## note: default is FALSE
|
16
|
+
def warn?() self.class.warn?; end
|
13
17
|
|
14
18
|
|
15
19
|
attr_reader :errors
|
16
20
|
|
17
21
|
def initialize
|
18
22
|
@errors = []
|
19
|
-
@parser = Parser.new ## use own parser instance (not shared) - why? why not?
|
20
23
|
end
|
21
24
|
|
22
25
|
|
23
26
|
def errors?() @errors.size > 0; end
|
24
27
|
|
25
28
|
|
29
|
+
|
26
30
|
#########
|
27
31
|
## parse - false (default) - tokenize (only)
|
28
32
|
## - true - tokenize & parse
|
29
33
|
def read( path, parse: true )
|
30
34
|
## note: every (new) read call - resets errors list to empty
|
31
35
|
@errors = []
|
32
|
-
|
33
|
-
@tree = []
|
36
|
+
@tree = []
|
34
37
|
|
35
38
|
outline = QuickMatchOutline.read( path )
|
36
39
|
|
37
40
|
outline.each_para do |lines|
|
38
|
-
|
39
|
-
if parse
|
41
|
+
|
40
42
|
## flatten lines (array of strings) into all-in-one string
|
41
43
|
txt = lines.reduce( String.new ) do |mem, line|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
mem << line
|
45
|
+
mem << "\n"
|
46
|
+
mem
|
47
|
+
end
|
48
|
+
|
49
|
+
if parse
|
47
50
|
if debug?
|
48
51
|
puts "lines:"
|
49
52
|
pp txt
|
50
53
|
end
|
51
54
|
|
52
|
-
## todo/fix - add/track parse errors!!!!!!
|
53
55
|
## pass along debug flag to parser (& tokenizer)?
|
54
56
|
parser = RaccMatchParser.new( txt ) ## use own parser instance (not shared) - why? why not?
|
55
|
-
tree = parser.
|
57
|
+
tree, errors = parser.parse_with_errors
|
58
|
+
|
59
|
+
if errors.size > 0
|
60
|
+
## add to "global" error list
|
61
|
+
## make a triplet tuple (file / msg / line text)
|
62
|
+
errors.each do |msg|
|
63
|
+
@errors << [path, msg]
|
64
|
+
end
|
65
|
+
end
|
56
66
|
|
57
67
|
if debug?
|
58
68
|
puts "parse tree:"
|
@@ -62,32 +72,44 @@ def read( path, parse: true )
|
|
62
72
|
@tree += tree ## add nodes
|
63
73
|
|
64
74
|
else ## process for tokenize only
|
65
|
-
lines.each_with_index do |line,i|
|
66
75
|
|
67
76
|
if debug?
|
68
|
-
|
69
|
-
|
77
|
+
puts "lines:"
|
78
|
+
pp txt
|
70
79
|
end
|
71
80
|
|
72
|
-
|
81
|
+
##
|
82
|
+
## add (bakc) a line-by-line tracing (debug) option - why? why not?
|
83
|
+
## now debug output is by section (not line-by-line)
|
84
|
+
|
85
|
+
lexer = Lexer.new( txt )
|
86
|
+
t, errors = lexer.tokenize_with_errors
|
73
87
|
|
74
|
-
if
|
88
|
+
if errors.size > 0
|
75
89
|
## add to "global" error list
|
76
90
|
## make a triplet tuple (file / msg / line text)
|
77
|
-
|
78
|
-
@errors << [
|
79
|
-
msg,
|
80
|
-
line
|
81
|
-
]
|
91
|
+
errors.each do |msg|
|
92
|
+
@errors << [path, msg]
|
82
93
|
end
|
83
94
|
end
|
84
95
|
|
85
|
-
|
86
|
-
|
96
|
+
if debug?
|
97
|
+
puts "tokens:"
|
98
|
+
pp t
|
99
|
+
end
|
100
|
+
|
101
|
+
@tree += t ## add tokens to "tree"
|
87
102
|
end # parse? (or tokenize?)
|
88
103
|
end # each para (node)
|
89
104
|
|
90
|
-
|
105
|
+
|
106
|
+
##
|
107
|
+
## auto-add error if no tokens/tree nodes
|
108
|
+
## note - do NOT report empty file error by default
|
109
|
+
if @tree.empty? && warn? ## @tree.size == 0
|
110
|
+
@errors << [path, "empty; no #{parse ? 'parse tree nodes' : 'tokens'}"]
|
111
|
+
end
|
112
|
+
|
91
113
|
@tree ## return parse tree
|
92
114
|
end # method read
|
93
115
|
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.2
|
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-29 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
|