suika 0.2.0 → 0.3.0

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: bfb2e78e15c648ee309868bdfd3f386a66b1cff633cb546880132cdb9b8f3806
4
- data.tar.gz: d398f4de11a4af80b7c62c4e468fa2e3f9393bbb2211e0f2e317a08ed05c73b5
3
+ metadata.gz: f2aaecfc53b051cfbd06052bf22ac14614e459d42789670df1a7a31f601d533f
4
+ data.tar.gz: 39d4ac2b9fc0f4f164f2e3408b3dfcfe478f922d889334243c572a48ddf781de
5
5
  SHA512:
6
- metadata.gz: 6fea777a4229725a174aa0955bcf5f775cc6e319fa73cf6f204385b3a47d84997b74b8798f78269f442aa11dcf151b1319c079c315dfea103dcd7a148cf0b5c5
7
- data.tar.gz: 17d2fd7f248c965b6d585542c4ec4cb90e87663f96b0522f06f1c3e94c55a18e59f08e4ab1e7724f9dd48a114c2c0f35a0499100fb8850a89d2822de87927988
6
+ metadata.gz: dfdf6c08812109d7f6c6a52b64b8d8f7e6febd858bae23ccead4b3e598c76acd24a9c56cd893d958199b6545e37a4e01d6058c2acf39241a472260fda6accd90
7
+ data.tar.gz: 495016afc1854269d20b35e27bbb65cdffc307a9a94ab0149b8dcee884ac8560077ce0367a65f70b11bbdf0d27175134a2f66d67cc9bccc8f91a45353f2f1cf8
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ service_name: github-ci
@@ -0,0 +1,21 @@
1
+ name: build
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+ strategy:
9
+ matrix:
10
+ ruby: [ '2.6', '2.7', '3.0' ]
11
+ steps:
12
+ - uses: actions/checkout@v2
13
+ - name: Set up Ruby ${{ matrix.ruby }}
14
+ uses: actions/setup-ruby@v1
15
+ with:
16
+ ruby-version: ${{ matrix.ruby }}
17
+ - name: Build and test with Rake
18
+ run: |
19
+ gem install --no-document bundler
20
+ bundle install --jobs 4 --retry 3
21
+ bundle exec rake
@@ -0,0 +1,26 @@
1
+ name: coverage
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ coverage:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v2
14
+ - name: Set up Ruby 2.7
15
+ uses: actions/setup-ruby@v1
16
+ with:
17
+ ruby-version: '2.7'
18
+ - name: Build and test with Rake
19
+ run: |
20
+ gem install --no-document bundler
21
+ bundle install --jobs 4 --retry 3
22
+ bundle exec rake
23
+ - name: Coveralls GitHub Action
24
+ uses: coverallsapp/github-action@v1.1.2
25
+ with:
26
+ github-token: ${{ secrets.GITHUB_TOKEN }}
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.3.0
2
+
3
+ ### Changes
4
+ - Add type declaration files.
5
+ - Refactor to avoid assigning null to variables.
6
+ - Fix some configuration files.
7
+
8
+
1
9
  ## 0.2.0
2
10
 
3
11
  ### Breaking Change
data/Gemfile CHANGED
@@ -5,5 +5,9 @@ source 'https://rubygems.org'
5
5
  # Specify your gem's dependencies in suika.gemspec
6
6
  gemspec
7
7
 
8
- gem 'rake', '~> 12.0'
8
+ gem 'rake', '~> 13.0'
9
9
  gem 'rspec', '~> 3.0'
10
+ gem 'simplecov', '~> 0.21'
11
+ gem 'simplecov-lcov', '~> 0.8'
12
+ gem 'rbs', '~> 1.2'
13
+ gem 'steep', '~> 0.44'
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2020 Atsushi Tatsuma
1
+ Copyright (c) 2020-2021 Atsushi Tatsuma
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
data/README.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # Suika
2
2
 
3
- [![Build Status](https://travis-ci.org/yoshoku/suika.svg?branch=master)](https://travis-ci.org/yoshoku/suika)
3
+ [![Build Status](https://github.com/yoshoku/suika/workflows/build/badge.svg)](https://github.com/yoshoku/suika/actions?query=workflow%3Abuild)
4
+ [![Coverage Status](https://coveralls.io/repos/github/yoshoku/suika/badge.svg?branch=main)](https://coveralls.io/github/yoshoku/suika?branch=main)
4
5
  [![Gem Version](https://badge.fury.io/rb/suika.svg)](https://badge.fury.io/rb/suika)
5
- [![BSD 3-Clause License](https://img.shields.io/badge/License-BSD%203--Clause-orange.svg)](https://github.com/yoshoku/suika/blob/master/LICENSE.txt)
6
+ [![BSD 3-Clause License](https://img.shields.io/badge/License-BSD%203--Clause-orange.svg)](https://github.com/yoshoku/suika/blob/main/LICENSE.txt)
6
7
  [![Documentation](https://img.shields.io/badge/api-reference-blue.svg)](https://rubydoc.info/gems/suika)
7
8
 
8
9
  Suika 🍉 is a Japanese morphological analyzer written in pure Ruby.
@@ -74,14 +75,14 @@ end
74
75
  ## Contributing
75
76
 
76
77
  Bug reports and pull requests are welcome on GitHub at https://github.com/yoshoku/suika.
77
- This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/yoshoku/suika/blob/master/CODE_OF_CONDUCT.md).
78
+ This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/yoshoku/suika/blob/main/CODE_OF_CONDUCT.md).
78
79
 
79
80
  ## License
80
81
 
81
82
  The gem is available as open source under the terms of the [BSD-3-Clause License](https://opensource.org/licenses/BSD-3-Clause).
82
83
  In addition, the gem includes binary data generated from mecab-ipadic.
83
- The details of the license can be found in [LICENSE.txt](https://github.com/yoshoku/suika/blob/master/LICENSE.txt)
84
- and [NOTICE.txt](https://github.com/yoshoku/suika/blob/master/NOTICE.txt).
84
+ The details of the license can be found in [LICENSE.txt](https://github.com/yoshoku/suika/blob/main/LICENSE.txt)
85
+ and [NOTICE.txt](https://github.com/yoshoku/suika/blob/main/NOTICE.txt).
85
86
 
86
87
  ## Respect
87
88
 
@@ -94,4 +95,4 @@ Janome, a morphological analyzer written in scripting language, gives me the cou
94
95
 
95
96
  ## Code of Conduct
96
97
 
97
- Everyone interacting in the Suika project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/yoshoku/suika/blob/master/CODE_OF_CONDUCT.md).
98
+ Everyone interacting in the Suika project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/yoshoku/suika/blob/main/CODE_OF_CONDUCT.md).
data/Rakefile CHANGED
@@ -1,6 +1,79 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ require 'csv'
5
+ require 'dartsclone'
6
+ require 'nkf'
7
+ require 'rubygems/package'
8
+ require 'zlib'
3
9
 
4
10
  RSpec::Core::RakeTask.new(:spec)
5
11
 
6
12
  task :default => :spec
13
+
14
+ desc 'Build suika system dictionary'
15
+ task :dictionary do
16
+ base_dir = "#{__dir__}/dict/mecab-ipadic-2.7.0-20070801"
17
+ unless File.directory?(base_dir)
18
+ puts "Download mecab-ipadic file and expand that under dict directory: #{__dir__}/dict/mecab-ipadic-2.7.0-20070801"
19
+ puts
20
+ puts 'Example:'
21
+ puts 'wget -O dict/mecab-ipadic.tgz https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM'
22
+ puts 'cd dict'
23
+ puts 'tar xzf mecab-ipadic.tgz'
24
+ puts 'cd ../'
25
+ next # exit
26
+ end
27
+
28
+ File.open("#{__dir__}/dict/mecab-ipadic-2.7.0-20070801/Reiwa.csv", 'w') do |f|
29
+ f.puts('令和,1288,1288,5904,名詞,固有名詞,一般,*,*,*,令和,レイワ,レイワ')
30
+ end
31
+
32
+ unknowns = {}
33
+ File.open("#{base_dir}/unk.def") do |f|
34
+ f.each_line do |line|
35
+ row = NKF.nkf('-w', line.chomp).split(',')
36
+ unknowns[row[0]] ||= []
37
+ unknowns[row[0]] << [row[1].to_i, row[2].to_i, row[3].to_i, *row[4..-1]]
38
+ end
39
+ end
40
+
41
+ dict = {}
42
+ Dir.glob("#{base_dir}/*.csv").each do |filename|
43
+ File.open(filename) do |f|
44
+ f.each_line do |line|
45
+ row = NKF.nkf('-w', line.chomp).split(',')
46
+ dict[row[0]] ||= []
47
+ dict[row[0]] << [row[1].to_i, row[2].to_i, row[3].to_i, *row[4..-1]]
48
+ end
49
+ end
50
+ end
51
+
52
+ da = DartsClone::DoubleArray.new
53
+ words = dict.keys.sort
54
+ da.build(words)
55
+ features = words.map { |w| dict[w] }
56
+
57
+ concosts = nil
58
+ File.open("#{base_dir}/matrix.def") do |f|
59
+ n_entries = f.readline.chomp.split.map(&:to_i).first
60
+ concosts = Array.new(n_entries) { Array.new(n_entries) }
61
+ f.each_line do |line|
62
+ row, col, cost = line.chomp.split.map(&:to_i)
63
+ concosts[row][col] = cost
64
+ end
65
+ end
66
+
67
+ ipadic = {
68
+ trie: da.get_array,
69
+ features: features,
70
+ unknowns: unknowns,
71
+ concosts: concosts
72
+ }
73
+
74
+ Zlib::GzipWriter.open("#{__dir__}/dict/sysdic.gz", Zlib::BEST_SPEED) { |f| f.write(Marshal.dump(ipadic)) }
75
+
76
+ puts 'The system dictionary has been successfully built:'
77
+ puts "#{__dir__}/dict/sysdic.gz"
78
+ puts Digest::SHA1.file("#{__dir__}/dict/sysdic.gz").to_s
79
+ end
data/Steepfile ADDED
@@ -0,0 +1,20 @@
1
+ target :lib do
2
+ signature "sig"
3
+ #
4
+ check "lib" # Directory name
5
+ # check "Gemfile" # File name
6
+ # check "app/models/**/*.rb" # Glob
7
+ # # ignore "lib/templates/*.rb"
8
+ #
9
+ # # library "pathname", "set" # Standard libraries
10
+ library "dartsclone" # Gems
11
+ end
12
+
13
+ # target :spec do
14
+ # signature "sig", "sig-private"
15
+ #
16
+ # check "spec"
17
+ #
18
+ # # library "pathname", "set" # Standard libraries
19
+ # # library "rspec"
20
+ # end
data/dict/sysdic.gz CHANGED
Binary file
data/lib/suika/tagger.rb CHANGED
@@ -42,28 +42,30 @@ module Suika
42
42
  while start < terminal
43
43
  step = terminal - start
44
44
 
45
- query = sentence[start..-1]
45
+ query = sentence[start..-1] || ''
46
46
  result = trie.common_prefix_search(query)
47
47
  unless result.empty?
48
48
  words, indices = result
49
- words.each_with_index do |word, i|
50
- features[indices[i]].each do |el|
51
- lattice.insert(start, start + word.length, word, false,
52
- el[0].to_i, el[1].to_i, el[2].to_i, el[3..-1])
49
+ unless words.empty?
50
+ step = INT_MAX
51
+ words.each_with_index do |word, i|
52
+ features[indices[i]].each do |el|
53
+ lattice.insert(start, start + word.length, word, false, el[0].to_i, el[1].to_i, el[2].to_i, el[3..-1])
54
+ end
55
+ step = word.length if word.length < step
53
56
  end
54
57
  end
55
- step = words.map(&:size).min
56
58
  end
57
59
 
58
- word = sentence[start]
59
- char_cate = CharDef.char_category(sentence[start])
60
- char_type = CharDef.char_type(sentence[start])
60
+ word = sentence[start] || ''
61
+ char_cate = CharDef.char_category(sentence[start] || '')
62
+ char_type = CharDef.char_type(sentence[start] || '')
61
63
  if char_cate[:invoke]
62
- char_length = char_cate[:group] ? CharDef::MAX_GROUPING_SIZE : char_cate[:length]
63
- unk_terminal = [start + char_length, terminal].min
64
+ unk_terminal = start + (char_cate[:group] ? CharDef::MAX_GROUPING_SIZE : char_cate[:length])
65
+ unk_terminal = terminal if terminal < unk_terminal
64
66
  pos = start + 1
65
- while pos < unk_terminal && char_type == CharDef.char_type(sentence[pos])
66
- word << sentence[pos]
67
+ while pos < unk_terminal && char_type == CharDef.char_type(sentence[pos] || '')
68
+ word << (sentence[pos] || '')
67
69
  pos += 1
68
70
  end
69
71
  end
@@ -71,7 +73,7 @@ module Suika
71
73
  lattice.insert(start, start + word.length, word, true,
72
74
  el[0].to_i, el[1].to_i, el[2].to_i, el[3..-1])
73
75
  end
74
- step = [step, word.length].min
76
+ step = word.length if word.length < step
75
77
 
76
78
  start += step
77
79
  end
@@ -82,7 +84,7 @@ module Suika
82
84
  private
83
85
 
84
86
  DICTIONARY_PATH = "#{__dir__}/../../dict/sysdic.gz"
85
- DICTIONARY_KEY = '562e53853b8a5b9f4857536b0748847a0878ebf0'
87
+ DICTIONARY_KEY = 'eb921bf5e67f5733188527b21adbf9dabdda0c7a'
86
88
  INT_MAX = 2**(([42].pack('i').size * 16) - 2) - 1
87
89
 
88
90
  private_constant :DICTIONARY_PATH, :DICTIONARY_KEY, :INT_MAX
@@ -90,19 +92,19 @@ module Suika
90
92
  attr_reader :trie
91
93
 
92
94
  def features
93
- @sysdic[:dictionary]
95
+ @sysdic[:features]
94
96
  end
95
97
 
96
98
  def unknowns
97
- @sysdic[:unknown_dictionary]
99
+ @sysdic[:unknowns]
98
100
  end
99
101
 
100
- def costmat
101
- @sysdic[:cost_matrix]
102
+ def connect_cost(r_id, l_id)
103
+ @sysdic[:concosts][r_id][l_id]
102
104
  end
103
105
 
104
106
  def viterbi(lattice)
105
- bos = lattice.end_nodes[0].first
107
+ bos = lattice.end_nodes[0][0]
106
108
  bos.min_cost = 0
107
109
  bos.min_prev = nil
108
110
 
@@ -111,7 +113,7 @@ module Suika
111
113
  rnode.min_cost = INT_MAX
112
114
  rnode.min_prev = nil
113
115
  lattice.end_nodes[n].each do |lnode|
114
- cost = lnode.min_cost + costmat[lnode.right_id][rnode.left_id] + rnode.cost
116
+ cost = lnode.min_cost + connect_cost(lnode.right_id, rnode.left_id) + rnode.cost
115
117
  if cost < rnode.min_cost
116
118
  rnode.min_cost = cost
117
119
  rnode.min_prev = lnode
@@ -120,7 +122,7 @@ module Suika
120
122
  end
121
123
  end
122
124
 
123
- eos = lattice.begin_nodes[-1].first
125
+ eos = lattice.begin_nodes[-1][0]
124
126
  prev_node = eos.min_prev
125
127
  res = []
126
128
  until prev_node.nil?
data/lib/suika/version.rb CHANGED
@@ -3,5 +3,5 @@
3
3
  # Suika is a Japanese morphological analyzer written in pure Ruby.
4
4
  module Suika
5
5
  # The version of Suika you are using.
6
- VERSION = '0.2.0'
6
+ VERSION = '0.3.0'
7
7
  end
data/sig/suika.rbs ADDED
@@ -0,0 +1,3 @@
1
+ module Suika
2
+ VERSION: String
3
+ end
@@ -0,0 +1,25 @@
1
+ module Suika
2
+ class CharDef
3
+ def self.char_type: (String ch) -> String
4
+ def self.char_category: (String ch) -> { invoke: bool, group: bool, length: Integer }
5
+
6
+ MAX_GROUPING_SIZE: Integer
7
+
8
+ private
9
+
10
+ #CHAR_CATEGORY: Hash[String, { invoke: bool, group: bool, length: Integer }]
11
+ CHAR_CATEGORY: Hash[String, untyped]
12
+ CHAR_TYPES: Array[String]
13
+
14
+ SPACE: Array[Range[Integer]]
15
+ NUMERIC: Array[Range[Integer]]
16
+ SYMBOL: Array[Range[Integer]]
17
+ ALPHA: Array[Range[Integer]]
18
+ CYRILLIC: Array[Range[Integer]]
19
+ GREEK: Array[Range[Integer]]
20
+ HIRAGANA: Array[Range[Integer]]
21
+ KATAKANA: Array[Range[Integer]]
22
+ KANJI: Array[Range[Integer]]
23
+ KANJINUMERIC: Array[Range[Integer]]
24
+ end
25
+ end
@@ -0,0 +1,11 @@
1
+ module Suika
2
+ class Lattice
3
+ attr_reader begin_nodes: Array[Array[::Suika::Node]]
4
+ attr_reader end_nodes: Array[Array[::Suika::Node]]
5
+ attr_reader length: Integer
6
+
7
+ def initialize: (Integer length) -> void
8
+ def insert: (Integer begin_id, Integer end_id, String surface, bool unknown,
9
+ Integer left_id, Integer right_id, Integer cost, Array[String] attrs) -> void
10
+ end
11
+ end
@@ -0,0 +1,18 @@
1
+ module Suika
2
+ class Node
3
+ attr_accessor surface: String
4
+ attr_accessor unknown: bool
5
+ attr_accessor min_cost: Integer
6
+ # attr_accessor min_prev: ::Suika::Node?
7
+ attr_accessor min_prev: untyped
8
+ attr_accessor left_id: Integer
9
+ attr_accessor right_id: Integer
10
+ attr_accessor cost: Integer
11
+ attr_accessor attrs: Array[String]
12
+
13
+ def initialize: (?surface: String surface, ?unknown: bool unknown,
14
+ ?min_cost: Integer min_cost, ?min_prev: ::Suika::Node? min_prev,
15
+ ?left_id: ::Integer left_id, ?right_id: ::Integer right_id,
16
+ ?cost: ::Integer cost, ?attrs: Array[String] attrs) -> void
17
+ end
18
+ end
@@ -0,0 +1,23 @@
1
+ module Suika
2
+ class Tagger
3
+ def initialize: () -> void
4
+ def parse: (String sentence) -> Array[String]
5
+
6
+ private
7
+
8
+ DICTIONARY_PATH: String
9
+ DICTIONARY_KEY: String
10
+ INT_MAX: untyped
11
+
12
+ attr_reader trie: ::DartsClone::DoubleArray
13
+
14
+ # type feature = [Integer, Integer, Integer, String, String, String, String, String, String, String]
15
+
16
+ # def features: () -> Array[Array[feature]]
17
+ def features: () -> Array[Array[untyped]]
18
+ # def unknowns: () -> Hash[String, Array[feature]]
19
+ def unknowns: () -> Hash[String, Array[untyped]]
20
+ def connect_cost: (Integer r_id, Integer l_id) -> Integer
21
+ def viterbi: (::Suika::Lattice lattice) -> Array[String]
22
+ end
23
+ end
data/suika.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
 
16
16
  spec.metadata['homepage_uri'] = spec.homepage
17
17
  spec.metadata['source_code_uri'] = spec.homepage
18
- spec.metadata['changelog_uri'] = 'https://github.com/yoshoku/suika/blob/master/CHANGELOG.md'
18
+ spec.metadata['changelog_uri'] = 'https://github.com/yoshoku/suika/blob/main/CHANGELOG.md'
19
19
  spec.metadata['documentation_uri'] = 'https://rubydoc.info/gems/suika'
20
20
 
21
21
  # Specify which files should be added to the gem when it is released.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: suika
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yoshoku
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-11 00:00:00.000000000 Z
11
+ date: 2021-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dartsclone
@@ -31,18 +31,20 @@ executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
+ - ".coveralls.yml"
35
+ - ".github/workflows/build.yml"
36
+ - ".github/workflows/coverage.yml"
34
37
  - ".gitignore"
35
38
  - ".rspec"
36
39
  - ".rubocop.yml"
37
- - ".travis.yml"
38
40
  - CHANGELOG.md
39
41
  - CODE_OF_CONDUCT.md
40
42
  - Gemfile
41
- - Gemfile.lock
42
43
  - LICENSE.txt
43
44
  - NOTICE.txt
44
45
  - README.md
45
46
  - Rakefile
47
+ - Steepfile
46
48
  - bin/console
47
49
  - bin/setup
48
50
  - dict/sysdic.gz
@@ -52,6 +54,11 @@ files:
52
54
  - lib/suika/node.rb
53
55
  - lib/suika/tagger.rb
54
56
  - lib/suika/version.rb
57
+ - sig/suika.rbs
58
+ - sig/suika/char_def.rbs
59
+ - sig/suika/lattice.rbs
60
+ - sig/suika/node.rbs
61
+ - sig/suika/tagger.rbs
55
62
  - suika.gemspec
56
63
  homepage: https://github.com/yoshoku/suika
57
64
  licenses:
@@ -59,9 +66,9 @@ licenses:
59
66
  metadata:
60
67
  homepage_uri: https://github.com/yoshoku/suika
61
68
  source_code_uri: https://github.com/yoshoku/suika
62
- changelog_uri: https://github.com/yoshoku/suika/blob/master/CHANGELOG.md
69
+ changelog_uri: https://github.com/yoshoku/suika/blob/main/CHANGELOG.md
63
70
  documentation_uri: https://rubydoc.info/gems/suika
64
- post_install_message:
71
+ post_install_message:
65
72
  rdoc_options: []
66
73
  require_paths:
67
74
  - lib
@@ -76,8 +83,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
83
  - !ruby/object:Gem::Version
77
84
  version: '0'
78
85
  requirements: []
79
- rubygems_version: 3.1.2
80
- signing_key:
86
+ rubygems_version: 3.1.6
87
+ signing_key:
81
88
  specification_version: 4
82
89
  summary: Suika is a Japanese morphological analyzer written in pure Ruby.
83
90
  test_files: []
data/.travis.yml DELETED
@@ -1,12 +0,0 @@
1
- ---
2
- os: linux
3
- dist: xenial
4
- language: ruby
5
- cache: bundler
6
- rvm:
7
- - '2.5'
8
- - '2.6'
9
- - '2.7'
10
-
11
- before_install:
12
- - gem install bundler -v 2.1.4
data/Gemfile.lock DELETED
@@ -1,36 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- suika (0.2.0)
5
- dartsclone (>= 0.2.0)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- dartsclone (0.2.0)
11
- diff-lcs (1.4.4)
12
- rake (12.3.3)
13
- rspec (3.9.0)
14
- rspec-core (~> 3.9.0)
15
- rspec-expectations (~> 3.9.0)
16
- rspec-mocks (~> 3.9.0)
17
- rspec-core (3.9.2)
18
- rspec-support (~> 3.9.3)
19
- rspec-expectations (3.9.2)
20
- diff-lcs (>= 1.2.0, < 2.0)
21
- rspec-support (~> 3.9.0)
22
- rspec-mocks (3.9.1)
23
- diff-lcs (>= 1.2.0, < 2.0)
24
- rspec-support (~> 3.9.0)
25
- rspec-support (3.9.3)
26
-
27
- PLATFORMS
28
- ruby
29
-
30
- DEPENDENCIES
31
- rake (~> 12.0)
32
- rspec (~> 3.0)
33
- suika!
34
-
35
- BUNDLED WITH
36
- 2.1.2