excel_to_json 0.1.0 → 0.1.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: ecc602a237cfed73c79dca0852a86ce51aa9d5e672810429f83f3ff254872f13
4
- data.tar.gz: 84b277743e060d83f7fca3dbb4c22ebe1adc4d85209fa8c0d5b3d08dc0e5c4cd
3
+ metadata.gz: 641235ca6742e1748ba45703a30738c38d1ecfeb647c55129714d2e296540dde
4
+ data.tar.gz: 8705f1128f4b837e2f1c7123df2d0ca978eb5d7674bbdc39f56d24c7a8ea8728
5
5
  SHA512:
6
- metadata.gz: 166519e91b94aaf68dae483002f5719938f8049beb17c665c18c901624e960221cef7f5e37a796c31d8cbeafcd006b03bb2ca2a54665bab132cb90678e41723d
7
- data.tar.gz: cacc3899ca24505a41240b12177b9ae1b8e352d4ccaf1026def1d49c97f62afee2cb11b4de9929e33b515add54529b462f655860dbc9e72795574122bc51083c
6
+ metadata.gz: 1f22e407edb42aec0a124778c7a60a7a5eb8518fecf78fc9b2e26f21324972bbc03e470ae170b658bf10ec16b5340a3344ef8bbfeb868623c948bd1e14efca45
7
+ data.tar.gz: 1526fb7c059f028de85b63341860b2e9af821d4885896de0a2a839c02350ead550ce7f04213abc1583686aa34f9c5a4df26e840d3e39d0cfdf3e5f4b9ab46259
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- excel_to_json (0.1.0)
4
+ excel_to_json (0.1.1)
5
5
  highline (= 2.0.0)
6
6
  roo (= 2.7.1)
7
7
 
@@ -29,7 +29,6 @@ Gem::Specification.new do |spec|
29
29
  end
30
30
  spec.bindir = "exe"
31
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
- # spec.executables = %w( say_hello )
33
32
  spec.require_paths = ["lib"]
34
33
 
35
34
  spec.add_dependency "roo", "2.7.1"
data/exe/excel_to_json CHANGED
@@ -6,12 +6,10 @@ cli = HighLine.new
6
6
  cli.say "Welcome to use Excel To Json Tool!"
7
7
  input_path = cli.ask "Please input source path,such as: sources/template.xlsx"
8
8
  output_path = cli.ask "Please input output path,such as: outputs/result"
9
+
9
10
  begin
10
11
  ExcelToJson::Converter.new(input_path).save_as(output_path)
11
12
  cli.say "Conversion successful! Output file save at #{output_path}"
12
13
  rescue => err
13
14
  cli.say "Error: #{err.message} !"
14
- end
15
-
16
-
17
-
15
+ end
@@ -1,3 +1,3 @@
1
1
  module ExcelToJson
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/excel_to_json.rb CHANGED
@@ -8,10 +8,11 @@ module ExcelToJson
8
8
 
9
9
  def initialize(input_file_path)
10
10
  @document = load_file(input_file_path)
11
- @supported_sheets = %w( Symbols LineMatrix BaseGamePaytable BaseGameStrip FreeGamePaytable FreeGameStrip JustTest)
11
+ @supported_sheets = %w(Symbols BaseGameCalcWay FreeGameCalcWay LineMatrix BaseGamePaytable BaseGameStrip FreeGamePaytable FreeGameStrip )
12
12
  @outputs = {}
13
13
  raise "sheet 'Symbols' not found !" unless @document.sheets.include?('Symbols')
14
14
  end
15
+
15
16
  def save_as(filename)
16
17
  dirname = File.dirname(filename)
17
18
  FileUtils.mkdir_p(dirname) unless File.directory?(dirname)
@@ -25,17 +26,20 @@ module ExcelToJson
25
26
 
26
27
  def to_json
27
28
  @supported_sheets.each do |sheet_name|
28
- @outputs[sheet_name.to_sym] = klass("#{sheet_name}Parser").new(@document).to_json if @document.sheets.include?(sheet_name)
29
+ @outputs[sheet_name.to_sym] = klass("#{sheet_name}Parser").new(@document).to_json
30
+ rescue RangeError
31
+ next
29
32
  end
30
33
  end
31
-
34
+
32
35
  def serialize_json
33
36
  to_json
34
37
  symbol_mapping = @outputs[:Symbols]
35
38
  symbols = symbol_mapping.map do |_, v|
36
39
  v.slice(:name, :type)
37
40
  end
38
- lines = @outputs[:LineMatrix][:lines]
41
+
42
+ lines = @outputs[:LineMatrix][:lines] if @outputs[:LineMatrix]
39
43
 
40
44
  paytable_mapping = ->(game_paytable) {
41
45
  game_paytable[:line].each do |ele|
@@ -43,8 +47,8 @@ module ExcelToJson
43
47
  end
44
48
  }
45
49
 
46
- base_game_paytable = @outputs[:BaseGamePaytable]
47
- free_game_paytable = @outputs[:FreeGamePaytable]
50
+ base_game_paytable = @outputs[:BaseGamePaytable] || @outputs[:BaseGameCalcWay]
51
+ free_game_paytable = @outputs[:FreeGamePaytable] || @outputs[:FreeGameCalcWay]
48
52
 
49
53
  paytable_mapping.call(base_game_paytable)
50
54
  paytable_mapping.call(free_game_paytable)
@@ -54,7 +58,7 @@ module ExcelToJson
54
58
 
55
59
  reel_mapping = ->(reels) {
56
60
  reels.each do |reel|
57
- reel.each_with_index do |ele, index|
61
+ reel.each_with_index do |ele, index|
58
62
  reel[index] = symbol_mapping[ele][:index]
59
63
  end
60
64
  end
@@ -0,0 +1,17 @@
1
+ class BaseGameCalcWayParser < Base
2
+ sheet_name 'Base Game Calc Ways'
3
+
4
+ def parse_sheet
5
+ res = @sheet.to_matrix(4, 1, nil, 6).to_a.select{ |line| !line[0].nil? && !line[1].nil? }.group_by{ |line| line.first.to_s.delete('~') }
6
+ line = []
7
+ res.each do |symbol, combinations|
8
+ reward = {}
9
+ combinations.inject(reward) do |reward, combination|
10
+ reward_count = combination.count { |e| e == symbol }
11
+ reward.merge!( reward_count => { multiplier: combination.last } )
12
+ end
13
+ line << { reward: reward.sort.to_h, symbol: symbol.to_s }
14
+ end
15
+ { line: line }
16
+ end
17
+ end
@@ -12,7 +12,7 @@ class BaseGamePaytableParser < Base
12
12
  symbol = @sheet.cell(row, 1)
13
13
  line << {
14
14
  reward: reward,
15
- symbol: symbol
15
+ symbol: symbol.to_s
16
16
  } if symbol
17
17
  end
18
18
  { line: line }
@@ -6,7 +6,7 @@ class BaseGameStripParser < Base
6
6
  reel = []
7
7
  (3 .. @sheet.last_row).each do |row|
8
8
  value = @sheet.cell(row, col)
9
- reel.unshift(value) if value
9
+ reel.unshift(value.to_s) if value
10
10
  end
11
11
  reels << reel
12
12
  end
@@ -0,0 +1,3 @@
1
+ class FreeGameCalcWayParser < BaseGameCalcWayParser
2
+ sheet_name 'Free Game Calc Ways'
3
+ end
@@ -3,10 +3,10 @@ class SymbolsParser < Base
3
3
 
4
4
  def parse_sheet
5
5
  result = @sheet.to_matrix(2, 1, nil, 3).to_a.inject({}) do |result, arr|
6
- result[arr[1]] = {
6
+ result[arr[1].to_s] = {
7
7
  index: arr[0],
8
- name: arr[2],
9
- type: arr[2].include?("WD") ? 'wild' : nil
8
+ name: arr[2].to_s,
9
+ type: arr[2].to_s.include?("WD") ? 'wild' : nil
10
10
  }.compact
11
11
  result
12
12
  end
data/lib/parser.rb CHANGED
@@ -6,3 +6,5 @@ require 'parser/base_game_paytable'
6
6
  require 'parser/free_game_paytable'
7
7
  require 'parser/base_game_strip'
8
8
  require 'parser/free_game_strip'
9
+ require 'parser/base_game_calc_way'
10
+ require 'parser/free_game_calc_way'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: excel_to_json
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - poppy
@@ -87,8 +87,10 @@ files:
87
87
  - lib/excel_to_json/version.rb
88
88
  - lib/parser.rb
89
89
  - lib/parser/base.rb
90
+ - lib/parser/base_game_calc_way.rb
90
91
  - lib/parser/base_game_paytable.rb
91
92
  - lib/parser/base_game_strip.rb
93
+ - lib/parser/free_game_calc_way.rb
92
94
  - lib/parser/free_game_paytable.rb
93
95
  - lib/parser/free_game_strip.rb
94
96
  - lib/parser/line_matrix.rb