fbtxt2json 0.2.0 → 0.2.1
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 +1 -1
 - data/bin/fbtxt2json +54 -4
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: eda08bd194e92f91e52f319f99b158dd512ea80011b72bf75045cc08404ee1a9
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 5c0046100b7d4f7d17d2217dca7ca0c782284cac0ad89f1d5ca422e8319548a4
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 7749effafe765758821fc38b7df011b782facf1a78fa80862c7c22e3d1bcfa0e3b7a5009c4e83bae730dc5c29949fb09c61ae3ffc69d9d171557ebd6b3d24b65
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 19d8181d200b05948a6f78428201c48c96942495168e5d84812bd1df271269f90ea8f9a20e8e35cbc3f2f530e921b3042a09b19707c898669083919efeea7bfa
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    
    
        data/bin/fbtxt2json
    CHANGED
    
    | 
         @@ -4,6 +4,13 @@ 
     | 
|
| 
       4 
4 
     | 
    
         
             
            ##   ruby -I ./lib bin/fbtxt2json
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         | 
| 
      
 7 
     | 
    
         
            +
            #####
         
     | 
| 
      
 8 
     | 
    
         
            +
            ## todo
         
     | 
| 
      
 9 
     | 
    
         
            +
            ##   add option for [no]-halt-on-error (default: false)
         
     | 
| 
      
 10 
     | 
    
         
            +
            ##      or use a different (shorter) name e.g. --resume?
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
       7 
14 
     | 
    
         
             
            ## our own code
         
     | 
| 
       8 
15 
     | 
    
         
             
            require 'sportdb/quick'
         
     | 
| 
       9 
16 
     | 
    
         | 
| 
         @@ -16,8 +23,10 @@ require 'optparse' 
     | 
|
| 
       16 
23 
     | 
    
         | 
| 
       17 
24 
     | 
    
         | 
| 
       18 
25 
     | 
    
         
             
            args = ARGV
         
     | 
| 
       19 
     | 
    
         
            -
            opts = { 
     | 
| 
      
 26 
     | 
    
         
            +
            opts = {  debug:  false,
         
     | 
| 
       20 
27 
     | 
    
         
             
                      output: nil,
         
     | 
| 
      
 28 
     | 
    
         
            +
                      summary: false,
         
     | 
| 
      
 29 
     | 
    
         
            +
                      seasons: [],
         
     | 
| 
       21 
30 
     | 
    
         
             
                   }
         
     | 
| 
       22 
31 
     | 
    
         | 
| 
       23 
32 
     | 
    
         
             
            parser = OptionParser.new do |parser|
         
     | 
| 
         @@ -40,15 +49,30 @@ parser.banner = "Usage: #{$PROGRAM_NAME} [options] PATH" 
     | 
|
| 
       40 
49 
     | 
    
         
             
                              "output to file / dir" ) do |output|
         
     | 
| 
       41 
50 
     | 
    
         
             
                 opts[:output] = output
         
     | 
| 
       42 
51 
     | 
    
         
             
               end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
               parser.on( "--summary", 
         
     | 
| 
      
 54 
     | 
    
         
            +
                              "(auto-)generate summary (index.html) page (default: #{opts[:summary]})" ) do |summary|
         
     | 
| 
      
 55 
     | 
    
         
            +
                 opts[:summary] = summary
         
     | 
| 
      
 56 
     | 
    
         
            +
               end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
               parser.on( "--seasons SEASONS",
         
     | 
| 
      
 59 
     | 
    
         
            +
                              "turn on processing only seasons (default: #{!opts[:seasons].empty?}" ) do |seasons|
         
     | 
| 
      
 60 
     | 
    
         
            +
                   pp seasons
         
     | 
| 
      
 61 
     | 
    
         
            +
                   seasons = seasons.split( /[, ]/ )
         
     | 
| 
      
 62 
     | 
    
         
            +
                   seasons = seasons.map {|season| Season.parse(season) }               
         
     | 
| 
      
 63 
     | 
    
         
            +
                   opts[:seasons] = seasons
         
     | 
| 
      
 64 
     | 
    
         
            +
               end   
         
     | 
| 
       43 
65 
     | 
    
         
             
            end
         
     | 
| 
       44 
66 
     | 
    
         
             
            parser.parse!( args )
         
     | 
| 
       45 
67 
     | 
    
         | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
       46 
69 
     | 
    
         
             
            puts "OPTS:"
         
     | 
| 
       47 
70 
     | 
    
         
             
            p opts
         
     | 
| 
       48 
71 
     | 
    
         
             
            puts "ARGV:"
         
     | 
| 
       49 
72 
     | 
    
         
             
            p args
         
     | 
| 
       50 
73 
     | 
    
         | 
| 
       51 
74 
     | 
    
         | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
       52 
76 
     | 
    
         
             
            paths = if args.empty?
         
     | 
| 
       53 
77 
     | 
    
         
             
                      ['/sports/openfootball/euro/2021--europe/euro.txt']
         
     | 
| 
       54 
78 
     | 
    
         
             
                    else
         
     | 
| 
         @@ -89,7 +113,9 @@ end 
     | 
|
| 
       89 
113 
     | 
    
         | 
| 
       90 
114 
     | 
    
         | 
| 
       91 
115 
     | 
    
         | 
| 
       92 
     | 
    
         
            -
            def parse( txt, 
     | 
| 
      
 116 
     | 
    
         
            +
            def parse( txt,
         
     | 
| 
      
 117 
     | 
    
         
            +
                        summary: nil, 
         
     | 
| 
      
 118 
     | 
    
         
            +
                        dump: false )   ### check - name parse_txt or txt_to_json or such - why? why not?
         
     | 
| 
       93 
119 
     | 
    
         
             
               quick = SportDb::QuickMatchReader.new( txt )
         
     | 
| 
       94 
120 
     | 
    
         
             
               matches = quick.parse
         
     | 
| 
       95 
121 
     | 
    
         
             
               name    = quick.league_name   ## quick hack - get league+season via league_name
         
     | 
| 
         @@ -109,6 +135,12 @@ def parse( txt, dump: false )   ### check - name parse_txt or txt_to_json or suc 
     | 
|
| 
       109 
135 
     | 
    
         
             
                  exit 1
         
     | 
| 
       110 
136 
     | 
    
         
             
               end
         
     | 
| 
       111 
137 
     | 
    
         | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
               if summary
         
     | 
| 
      
 140 
     | 
    
         
            +
                  ## add stats to summary page
         
     | 
| 
      
 141 
     | 
    
         
            +
                  summary << "- #{name} | #{matches.size} match(es)\n"
         
     | 
| 
      
 142 
     | 
    
         
            +
               end
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
       112 
144 
     | 
    
         
             
               data
         
     | 
| 
       113 
145 
     | 
    
         
             
            end
         
     | 
| 
       114 
146 
     | 
    
         | 
| 
         @@ -130,19 +162,31 @@ if files > 0 
     | 
|
| 
       130 
162 
     | 
    
         
             
                 write_json( opts[:output], data )
         
     | 
| 
       131 
163 
     | 
    
         
             
              end
         
     | 
| 
       132 
164 
     | 
    
         
             
            elsif dirs > 0
         
     | 
| 
      
 165 
     | 
    
         
            +
             
     | 
| 
      
 166 
     | 
    
         
            +
               ## use a html pre(formatted) text
         
     | 
| 
      
 167 
     | 
    
         
            +
               summary = String.new
         
     | 
| 
      
 168 
     | 
    
         
            +
               summary << "<pre>\n"
         
     | 
| 
      
 169 
     | 
    
         
            +
               summary << "run on #{Time.now.to_s}\n\n"   ## add version and such - why? why not?
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
       133 
171 
     | 
    
         
             
               paths.each_with_index do |path,i|
         
     | 
| 
       134 
172 
     | 
    
         
             
                  puts "==> reading dir [#{i+1}/#{paths.size}] >#{path}<..."
         
     | 
| 
      
 173 
     | 
    
         
            +
                  summary << "==> [#{i+1}/#{paths.size}] dir #{path}\n"
         
     | 
| 
      
 174 
     | 
    
         
            +
             
     | 
| 
      
 175 
     | 
    
         
            +
            ### todo/fix: add seasons filter upstream??
         
     | 
| 
      
 176 
     | 
    
         
            +
            ##
         
     | 
| 
       135 
177 
     | 
    
         | 
| 
       136 
178 
     | 
    
         
             
                  datafiles = SportDb::Parser::Opts._find( path )
         
     | 
| 
       137 
179 
     | 
    
         
             
                  pp datafiles
         
     | 
| 
       138 
180 
     | 
    
         
             
                  puts "   #{datafiles.size} datafile(s)"
         
     | 
| 
      
 181 
     | 
    
         
            +
                  summary << "    #{datafiles.size} datafile(s)\n\n"
         
     | 
| 
       139 
182 
     | 
    
         | 
| 
       140 
183 
     | 
    
         
             
                  datafiles.each do |datafile|
         
     | 
| 
       141 
184 
     | 
    
         
             
                     txt = read_text( datafile )
         
     | 
| 
       142 
     | 
    
         
            -
                     data = parse( txt )
         
     | 
| 
      
 185 
     | 
    
         
            +
                     data = parse( txt, summary: summary )
         
     | 
| 
       143 
186 
     | 
    
         | 
| 
       144 
187 
     | 
    
         
             
                     if opts[:output]
         
     | 
| 
       145 
     | 
    
         
            -
                        ### norm - File. 
     | 
| 
      
 188 
     | 
    
         
            +
                        ### norm - File.expand_path !!!
         
     | 
| 
      
 189 
     | 
    
         
            +
                        ##   note - use '.' to use (relative to) local directory !!!
         
     | 
| 
       146 
190 
     | 
    
         
             
                        reldir = File.expand_path(File.dirname( path ))   ## keep last dir (in relative name)
         
     | 
| 
       147 
191 
     | 
    
         
             
                        relpath = datafile.sub( reldir+'/', '' )
         
     | 
| 
       148 
192 
     | 
    
         
             
                        dir     = File.dirname( relpath )
         
     | 
| 
         @@ -159,6 +203,12 @@ elsif dirs > 0 
     | 
|
| 
       159 
203 
     | 
    
         
             
                     write_json( outpath, data )
         
     | 
| 
       160 
204 
     | 
    
         
             
                  end
         
     | 
| 
       161 
205 
     | 
    
         
             
               end
         
     | 
| 
      
 206 
     | 
    
         
            +
             
     | 
| 
      
 207 
     | 
    
         
            +
               summary << "</pre>"
         
     | 
| 
      
 208 
     | 
    
         
            +
               puts summary
         
     | 
| 
      
 209 
     | 
    
         
            +
               if opts[:summary]
         
     | 
| 
      
 210 
     | 
    
         
            +
                 write_text( "#{opts[:output]}/index.html", summary )
         
     | 
| 
      
 211 
     | 
    
         
            +
               end
         
     | 
| 
       162 
212 
     | 
    
         
             
            else 
         
     | 
| 
       163 
213 
     | 
    
         
             
               ## do nothing; no args
         
     | 
| 
       164 
214 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: fbtxt2json
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.2.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- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2025-04-04 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: sportdb-quick
         
     |