sportdb-quick 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d352420645cf51612b5f1c1185f955ac0766d6bb26d84cae1a9e2adc16b2bd1e
4
- data.tar.gz: fa83e99ca9c5b86ad8f9a101513d537e52338d03e181809579ef06ad03788cff
3
+ metadata.gz: 71f76e171de23b5062c30f432d5fece7bcb2cb0e7283d658dcf8ff79aefb6aa3
4
+ data.tar.gz: 74fc864d5c4b9ca42270abd3fdb941cebdb9857c072c7515e7e422829c018891
5
5
  SHA512:
6
- metadata.gz: 3f962bf9735b43bf53aa733c7543679f00daa08582862b4c4624fdc96556d148a2bcb2ea7a16f7a9637bae908cd71591bbc6f0b2fd7b7a0124d3106712a9094b
7
- data.tar.gz: 818778f17464a71e2e8f7997661a00d4fd0844a5ebffdb22eb7800590f55bf7a7ccbd49aefe7fdd2d325eef84cb4669cdfb1287b5f819d5e5d6aae438c7ae759
6
+ metadata.gz: 83fa67d7c4bbd0952ad9e02f93be65c488bd728b52f8a9a1159ab42bd299b6b9b37ff5e75573582ef4a7f20ebef1d97ff7da111334dd5f6b4b71bf4793ea84af
7
+ data.tar.gz: 9f832375e9d03fe1de7d83d14083428d0f3eda704645cf585449d13cf7929030552075549d68e0d91892be0d66c4bf92fbc41a2403cecee362025ed2b2058513
data/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ### 0.5.0
1
+ ### 0.5.1
2
2
  ### 0.0.1 / 2024-08-27
3
3
 
4
4
  * Everything is new. First release.
data/Rakefile CHANGED
@@ -21,7 +21,7 @@ Hoe.spec 'sportdb-quick' do
21
21
  self.licenses = ['Public Domain']
22
22
 
23
23
  self.extra_deps = [
24
- ['sportdb-parser', '>= 0.5.0'],
24
+ ['sportdb-parser', '>= 0.5.4'],
25
25
  ['sportdb-structs', '>= 0.5.0'],
26
26
  ['logutils', '>= 0.6.1'],
27
27
  ]
@@ -9,7 +9,19 @@ class MatchParser ## simple match parser for team match schedules
9
9
 
10
10
  include Logging ## e.g. logger#debug, logger#info, etc.
11
11
 
12
+ def log( msg )
13
+ ## append msg to ./logs.txt
14
+ ## use ./errors.txt - why? why not?
15
+ File.open( './logs.txt', 'a:utf-8' ) do |f|
16
+ f.write( msg )
17
+ f.write( "\n" )
18
+ end
19
+ end
20
+
12
21
 
22
+
23
+
24
+
13
25
  def self.parse( lines, start: )
14
26
  ## todo/fix: add support for txt and lines
15
27
  ## check if lines_or_txt is an array or just a string
@@ -26,8 +38,8 @@ class MatchParser ## simple match parser for team match schedules
26
38
  lines = []
27
39
  txt.each_line do |line| ## preprocess
28
40
  line = line.strip
29
-
30
41
  next if line.empty? || line.start_with?('#') ### skip empty lines and comments
42
+
31
43
  line = line.sub( /#.*/, '' ).strip ### cut-off end-of line comments too
32
44
  lines << line
33
45
  end
@@ -35,29 +47,7 @@ class MatchParser ## simple match parser for team match schedules
35
47
  end
36
48
 
37
49
 
38
- ## note: colon (:) MUST be followed by one (or more) spaces
39
- ## make sure mon feb 12 18:10 will not match
40
- ## allow 1. FC Köln etc.
41
- ## Mainz 05:
42
- ## limit to 30 chars max
43
- ## only allow chars incl. intl buut (NOT ()[]/;)
44
- ##
45
- ## Group A:
46
- ## Group B: - remove colon
47
- ## or lookup first
48
-
49
- ATTRIB_RE = %r{^
50
- [ ]*? # slurp leading spaces
51
- (?<key>[^:|\]\[()\/; -]
52
- [^:|\]\[()\/;]{0,30}
53
- )
54
- [ ]*? # slurp trailing spaces
55
- :[ ]+
56
- (?<value>.+)
57
- [ ]*? # slurp trailing spaces
58
- $
59
- }ix
60
-
50
+
61
51
  #
62
52
  # todo/fix: change start to start: too!!!
63
53
  # might be optional in the future!! - why? why not?
@@ -99,41 +89,20 @@ class MatchParser ## simple match parser for team match schedules
99
89
 
100
90
  @tree = []
101
91
 
102
- attrib_found = false
103
-
104
-
105
- lines = []
106
- @lines.each_with_index do |line,i|
107
92
 
93
+ ## flatten lines
94
+ txt = []
95
+ @lines.each_with_index do |line,i|
96
+ txt << line
97
+ txt << "\n"
98
+ end
99
+ txt = txt.join
100
+
108
101
  if debug?
109
- puts
110
- puts "line >#{line}<"
102
+ puts "lines:"
103
+ pp txt
111
104
  end
112
105
 
113
- ## skip new (experimental attrib syntax)
114
- if attrib_found == false &&
115
- ATTRIB_RE.match?( line )
116
- ## note: check attrib regex AFTER group def e.g.:
117
- ## Group A:
118
- ## Group B: etc.
119
- ## todo/fix - change Group A: to Group A etc.
120
- ## Group B: to Group B
121
- attrib_found = true
122
- ## logger.debug "skipping key/value line - >#{line}<"
123
- next
124
- end
125
-
126
- if attrib_found
127
- ## check if line ends with dot
128
- ## if not slurp up lines to the next do!!!
129
- ## logger.debug "skipping key/value line - >#{line}<"
130
- attrib_found = false if line.end_with?( '.' )
131
- # logger.debug "skipping key/value line (cont.) - >#{line}<"
132
- next
133
- end
134
-
135
- lines << line
136
-
137
106
  =begin
138
107
  t, error_messages = @parser.parse_with_errors( line )
139
108
 
@@ -153,15 +122,11 @@ class MatchParser ## simple match parser for team match schedules
153
122
 
154
123
  @tree << t
155
124
  =end
156
- end # each lines
157
125
 
158
- txt = lines.join( "\n") + "\n"
159
126
  parser = RaccMatchParser.new( txt ) ## use own parser instance (not shared) - why? why not?
160
127
  @tree = parser.parse
161
128
  ## pp @tree
162
129
 
163
- ## pp @tree
164
-
165
130
  ## report parse errors here - why? why not?
166
131
 
167
132
 
@@ -188,9 +153,13 @@ class MatchParser ## simple match parser for team match schedules
188
153
  on_goal_line( node )
189
154
  else
190
155
  ## report error
191
- puts "!! ERROR - unknown node (parse tree type)"
156
+ msg = "!! WARN - unknown node (parse tree type) - #{node.class.name}"
157
+ puts msg
192
158
  pp node
193
- exit 1
159
+
160
+ log( msg )
161
+ log( node.pretty_inspect )
162
+ ## exit 1
194
163
  end
195
164
  end # tree.each
196
165
 
@@ -478,7 +447,8 @@ class GoalStruct
478
447
  ## note - there's no time (-only) type in ruby
479
448
  ## use string (e.g. '14:56', '1:44')
480
449
  ## use 01:44 or 1:44 ?
481
- ## check for 0:00 or 24:00 possible?
450
+ ## check for 0:00 or 24:00 possible?
451
+ time = nil
482
452
  time = ('%d:%02d' % [node.time[:h], node.time[:m]]) if node.time
483
453
 
484
454
 
@@ -497,17 +467,20 @@ class GoalStruct
497
467
  score = Score.new( *values )
498
468
  end
499
469
 
500
- more = []
501
470
 
502
471
  status = nil
472
+ status = node.status if node.status ### assume text for now
503
473
  ## if node_type == :status # e.g. awarded, canceled, postponed, etc.
504
474
  ## status = node[1]
505
-
506
-
507
- #
508
- ## todo - add ## find (optional) match status e.g. [abandoned] or [replay] or [awarded]
509
- ## or [cancelled] or [postponed] etc.
510
- ## status = find_status!( line ) ## todo/check: allow match status also in geo part (e.g. after @) - why? why not?
475
+ #
476
+ ## todo - add ## find (optional) match status e.g. [abandoned] or [replay] or [awarded]
477
+ ## or [cancelled] or [postponed] etc.
478
+ ## status = find_status!( line ) ## todo/check: allow match status also in geo part (e.g. after @) - why? why not?
479
+
480
+
481
+ ###############
482
+ # add more for ground (and timezone!!!)
483
+ more = []
511
484
  #
512
485
  # elsif node_type == :'@' ||
513
486
  # node_type == :',' ||
@@ -73,6 +73,14 @@ class QuickMatchReader
73
73
  Date.new( season.start_year, 7, 1 )
74
74
  end
75
75
 
76
+ # if debug?
77
+ # puts " (sec) lines:"
78
+ # pp lines
79
+ # end
80
+
81
+ ### note - skip section if no lines !!!!!
82
+ next if lines.empty? ## or use lines.size == 0
83
+
76
84
 
77
85
  parser = MatchParser.new( lines,
78
86
  start ) ## note: keep season start_at date for now (no need for more specific stage date need for now)
@@ -4,7 +4,7 @@ module SportDb
4
4
  module Quick
5
5
  MAJOR = 0 ## todo: namespace inside version or something - why? why not??
6
6
  MINOR = 5
7
- PATCH = 0
7
+ PATCH = 1
8
8
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
9
 
10
10
  def self.version
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sportdb-quick
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.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-15 00:00:00.000000000 Z
11
+ date: 2025-01-18 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.0
19
+ version: 0.5.4
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.0
26
+ version: 0.5.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sportdb-structs
29
29
  requirement: !ruby/object:Gem::Requirement