xipai 0.0.1a → 0.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d3897adf29572f68ed753e543f6a657c80e8d9f0aa9204c01431e548ab6f2d13
4
- data.tar.gz: fd2df5a5a0144900a2b641f045120da82ab6c030cf2097434f825755b2203f31
3
+ metadata.gz: 3aa59e4bc8e489eaeeb14e86540c01ca05f23dcc1aea61159874e382b20ea41b
4
+ data.tar.gz: 37e82b54443848a72472cd7389af8db116177f37dea87f78cee243e43a00cef6
5
5
  SHA512:
6
- metadata.gz: 20c3bcf1519f376c7c0597f8bb2bb852ceb5e641b870a46eecb0636bbcb383d20126088433aaf39fe72ebedd7d8921caab0842c2bb97877386cfcdbeee3002ec
7
- data.tar.gz: cc26e97198f66e15efc5c33e5dced3ff9114b5b95e3517a12cf2bb8aa0109d05ee03ecccf01b542785e3fbfd6ee5a21313af3633a0588f8352f68807264dd311
6
+ metadata.gz: c330bdfb0d5fcb61d47e9304b93fdc7b8798faeb1e0d25a52cffb51873da395fa0056f31d92bc36de84ac187769adc522b79b2483a0bf54b4598b2f2e731dd77
7
+ data.tar.gz: df9c2b748527bac6972075f502dfa3607269e6dce44503e5c6904c1bd38cd54a8c648407cca6ce6b7941b230a28a6f326a9e78fca5c863603c9c1a20a7651561
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # [WIP] Xipai
1
+ # Xipai
2
2
 
3
3
  Reproducible based on seeds or random shuffling tool.
4
4
 
@@ -27,7 +27,7 @@ Commands:
27
27
  xipai lottery -A, --items=ITEMS -m, --number-of-winners=N # Reproducible based on seeds or random shuffling, then extruct lottery winner.
28
28
  xipai pair -K, --key-items=KEY_ITEMS -V, --value-items=VALUE_ITEMS # Reproducible based on seeds or random shuffling, then pairing key-items and value-items.
29
29
  xipai replay -c, --replay-yaml=REPLAY_YAML # Replay shuffling with xipai-replay yaml
30
- xipai order -A, --items=ITEMS # Reproducible based on seeds or random shuffling.
30
+ xipai order -A, --items=ITEMS # Reproducible based on seeds or random shuffling.
31
31
  xipai team -A, --items=ITEMS -m, --number-of-members=N # Reproducible based on seeds or random shuffling, then create teams
32
32
  xipai version # Show xipai version
33
33
  ```
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require File.expand_path("../../xipai", File.dirname(__FILE__))
4
3
  require "yaml"
5
4
  require "optional"
6
5
 
@@ -1,7 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require File.expand_path("../../xipai", File.dirname(__FILE__))
3
+ require File.expand_path("../../xipai/core", File.dirname(__FILE__))
4
+ require File.expand_path("../../xipai/result", File.dirname(__FILE__))
5
+ require File.expand_path("../../xipai/arrangement/base", File.dirname(__FILE__))
4
6
  require "optional"
7
+ require "json"
5
8
 
6
9
  module Xipai
7
10
  module Arrangement
@@ -21,9 +24,12 @@ module Xipai
21
24
 
22
25
  def lottery(_items, _number_of_winners)
23
26
  return Some[_number_of_winners].match do |m|
24
- m.some(->(x){x == 1}) {[_items[0]]}
25
- m.some(->(x){x > 0}) {|x|_items[0..(x-1)]}
26
- m.some() {raise "error: number_of_winners"}
27
+ m.some(->(x){x > 0}) {|x|
28
+ _items.sample(x, random: Random.new(
29
+ JSON.generate(_items).bytes.reduce(:*)
30
+ ))
31
+ }
32
+ m.some() {raise "Error: number_of_winners"}
27
33
  end
28
34
  end
29
35
 
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require File.expand_path("../../xipai", File.dirname(__FILE__))
3
+ require File.expand_path("../../xipai/core", File.dirname(__FILE__))
4
+ require File.expand_path("../../xipai/result", File.dirname(__FILE__))
5
+ require File.expand_path("../../xipai/arrangement/base", File.dirname(__FILE__))
4
6
 
5
7
  module Xipai
6
8
  module Arrangement
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require File.expand_path("../../xipai", File.dirname(__FILE__))
3
+ require File.expand_path("../../xipai/core", File.dirname(__FILE__))
4
+ require File.expand_path("../../xipai/result", File.dirname(__FILE__))
5
+ require File.expand_path("../../xipai/arrangement/base", File.dirname(__FILE__))
4
6
  require "optional"
5
7
 
6
8
  module Xipai
@@ -25,7 +27,7 @@ module Xipai
25
27
  end
26
28
 
27
29
  def pair(_keys, _values)
28
- return Hash[Some[{a:_keys.size, b: _values.size}].match { |m|
30
+ return Hash[Some[{a: _keys.size, b: _values.size}].match { |m|
29
31
  m.some(->(x){x[:a] > x[:b]}) {
30
32
  result = [].tap {|me|
31
33
  _keys.each.with_index do |key, index|
@@ -47,9 +49,11 @@ module Xipai
47
49
  }
48
50
  }
49
51
  m.some(->(x){x[:a] == x[:b]}) { |x|
50
- [*0..x[:a].to_i].map do |index|
51
- result.push([_keys[index], _values[index]])
52
- end
52
+ result = [].tap {|me|
53
+ [*0..(x[:a].to_i-1)].each do |index|
54
+ me.push([_keys[index], _values[index]])
55
+ end
56
+ }
53
57
  }
54
58
  }]
55
59
  end
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require File.expand_path("../../xipai", File.dirname(__FILE__))
3
+ require File.expand_path("../../xipai/core", File.dirname(__FILE__))
4
+ require File.expand_path("../../xipai/result", File.dirname(__FILE__))
5
+ require File.expand_path("../../xipai/arrangement/base", File.dirname(__FILE__))
4
6
 
5
7
  module Xipai
6
8
  module Arrangement
data/lib/xipai/core.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  #
3
- require File.expand_path("../xipai", File.dirname(__FILE__))
3
+ require File.expand_path("../xipai/hashcode_generator", File.dirname(__FILE__))
4
4
 
5
5
  module Xipai
6
6
  module Core
@@ -11,8 +11,13 @@ module Xipai
11
11
  seed, hashcode = spinkle_hashcode_bytes(generate_seed(words), hashcode, opt)
12
12
 
13
13
  random = seed == 0 ? Random.new : Random.new(seed)
14
-
15
- shuffled = normalize_items(items).shuffle!(random: random)
14
+ normalized_items = normalize_items(items)
15
+ shuffled =
16
+ normalized_items.shuffle!(
17
+ random: Random.new(JSON.generate(
18
+ normalized_items.shuffle!(random: random)
19
+ ).bytes.reduce(:+) + seed.to_i
20
+ ))
16
21
  return {
17
22
  hashcode: hashcode,
18
23
  shuffled: shuffled
data/lib/xipai/result.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require File.expand_path("../xipai", File.dirname(__FILE__))
4
3
  require "json"
5
4
  require "time"
6
5
  require "optional"
@@ -1,6 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require File.expand_path("../xipai", File.dirname(__FILE__))
3
+ Dir.glob(
4
+ "arrangement/*.rb", base: File.dirname(__FILE__)
5
+ ).each do |mode_name|
6
+ require "#{File.dirname(__FILE__)}/#{mode_name}"
7
+ end
8
+
4
9
  require "yaml"
5
10
  require "optional"
6
11
 
data/lib/xipai/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Xipai
4
- VERSION = "0.0.1a"
4
+ VERSION = "0.0.1"
5
5
  end
data/lib/xipai.rb CHANGED
@@ -3,10 +3,9 @@
3
3
  Dir.glob(
4
4
  File.expand_path("xipai/**/*.rb", File.dirname(__FILE__)
5
5
  )).each do |mod_name|
6
- require_relative "#{mod_name}"
6
+ require "#{mod_name}"
7
7
  end
8
8
 
9
- require "ostruct"
10
9
 
11
10
  module Xipai
12
11
  class << self
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xipai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1a
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroshi IKEGAMI
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-11 00:00:00.000000000 Z
11
+ date: 2021-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -66,7 +66,6 @@ files:
66
66
  - lib/xipai/result.rb
67
67
  - lib/xipai/table_set.rb
68
68
  - lib/xipai/version.rb
69
- - xipai.gemspec
70
69
  homepage: https://github.com/magicdrive/xipai
71
70
  licenses:
72
71
  - MIT
@@ -86,11 +85,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
86
85
  version: 2.5.0
87
86
  required_rubygems_version: !ruby/object:Gem::Requirement
88
87
  requirements:
89
- - - ">"
88
+ - - ">="
90
89
  - !ruby/object:Gem::Version
91
- version: 1.3.1
90
+ version: '0'
92
91
  requirements: []
93
- rubygems_version: 3.2.22
92
+ rubygems_version: 3.0.3.1
94
93
  signing_key:
95
94
  specification_version: 4
96
95
  summary: Reproducible based on seeds or random shuffling tool.
data/xipai.gemspec DELETED
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/xipai/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "xipai"
7
- spec.version = Xipai::VERSION
8
- spec.authors = ["Hiroshi IKEGAMI"]
9
- spec.email = ["hiroshi.ikegami@magicdrive.jp"]
10
-
11
- spec.summary = "Reproducible based on seeds or random shuffling tool."
12
- spec.description = "Reproducible based on seeds or random shuffling tool."
13
- spec.homepage = "https://github.com/magicdrive/xipai"
14
- spec.license = "MIT"
15
- spec.required_ruby_version = ">= 2.5.0"
16
-
17
- spec.metadata["allowed_push_host"] = "https://rubygems.org"
18
-
19
- spec.metadata["homepage_uri"] = spec.homepage
20
- spec.metadata["source_code_uri"] = spec.homepage
21
- spec.metadata["changelog_uri"] = spec.homepage
22
-
23
- # Specify which files should be added to the gem when it is released.
24
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
26
- `git ls-files -z`.split("\x0").reject do |f|
27
- (f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
28
- end
29
- end
30
-
31
- spec.bindir = "exe"
32
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
33
-
34
- spec.require_paths = ["lib"]
35
- spec.add_runtime_dependency 'thor', '>= 1.0'
36
- spec.add_runtime_dependency 'optional', '>= 0.0.7'
37
-
38
- # Uncomment to register a new dependency of your gem
39
- # spec.add_dependency "example-gem", "~> 1.0"
40
-
41
- # For more information and examples about making a new gem, checkout our
42
- # guide at: https://bundler.io/guides/creating_gem.html
43
- end