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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: db7e5c105200820cbce7e9701ed2b8ce0506e366f4215a013288b66b625528ff
4
- data.tar.gz: 3f02e52b461d14d014a3a4c3283dd452f0ca6316048969b5cf0af1cd4bd457b8
3
+ metadata.gz: 15089da91cb8cb9ce5f6905c3714e52758fcf4254c26f978ef1a64ac053caf9d
4
+ data.tar.gz: 13edb307d1fcbc9b0e30ff80f1764623c5f4a1cc17ef225e61d96e071615bcc6
5
5
  SHA512:
6
- metadata.gz: e8c77935b70909ac04697276af902f0597f6eed411b8bddee77248a0145c1fb704eb58a59cd49744ac7e93da97fa5410ca5a35825ea3ec4ca0ea4f834d30543f
7
- data.tar.gz: 35ef329be9dddaaf94658252e9e2684b4f3f63a89da8484db3507ab36f8afefc319d2ab4f3154389539a7ad6545779dd39e710f0eb7e82990988690cea107458
6
+ metadata.gz: 2d56318a4f9895dd71b8c6309ba131e2a310e0bc5d799bfe646f67220138ca1351bbde05ee5725bd28676988ccdbca009f0868b8de6f0e9a2ea5923743a2a32f
7
+ data.tar.gz: a28531c219b2ccf4cd1ee76129dcb8564433b1b3c2bdd1fd439ab44a4be2d04541cb8436cc9daab15c3010b22f590179556acfed1a2d2c8b23243f5156220e01
data/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ### 0.3.0
1
+ ### 0.3.2
2
2
  ### 0.0.1 / 2025-01-02
3
3
 
4
4
  * Everything is new. First release.
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'hoe'
2
2
 
3
3
 
4
4
  Hoe.spec 'fbtok' do
5
- self.version = '0.3.0'
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.4'],
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 - default is (#{!opts[:debug]})" ) do |debug|
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 - default is (#{!opts[:debug]})" ) do |debug|
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
- mem << line
43
- mem << "\n"
44
- mem
45
- end
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.parse
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
- puts
69
- puts "line >#{line}<"
77
+ puts "lines:"
78
+ pp txt
70
79
  end
71
80
 
72
- t, error_messages = @parser.tokenize_with_errors( line )
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 error_messages.size > 0
88
+ if errors.size > 0
75
89
  ## add to "global" error list
76
90
  ## make a triplet tuple (file / msg / line text)
77
- error_messages.each do |msg|
78
- @errors << [ path,
79
- msg,
80
- line
81
- ]
91
+ errors.each do |msg|
92
+ @errors << [path, msg]
82
93
  end
83
94
  end
84
95
 
85
- pp t if debug?
86
- end # each line
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
- ## note - only returns pare tree for now; no tokens (on parse=false)
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.0
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-23 00:00:00.000000000 Z
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.4
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.4
26
+ version: 0.5.8
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sportdb-formats
29
29
  requirement: !ruby/object:Gem::Requirement