phc_string_format 0.3.3 → 0.3.8

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: 33dff8312aa061f66c90fdabb7d4630ffdb322c2d770e1714fd7f8115335a72e
4
- data.tar.gz: 87d4da1c7bd827cad52cf8f748184d11d661f7d1757627b87be932aaeaf16728
3
+ metadata.gz: 679957901160f40d7a114d76d447b4c347627108c99f3d7a77039f98ae8775f1
4
+ data.tar.gz: 2fc8ebd4e7043b97769999e92b433e06faab04e3a4aef4d5ff20f9631be2b995
5
5
  SHA512:
6
- metadata.gz: bb3038a561c2b36c94d064fa101dec7aa6dd7c49fd4df7b3da269e3d3595ccd8a54b79c1eebd905a42ea1abec0bcfb2fabe4f6cb54cc728d7a172485ced83105
7
- data.tar.gz: a4c5bc3223bf5a614b485fe3a55afaf04f039d0123a734bef209d7db42ba85e076b7dfaed2685076433a87189762f43d314b5607c304706b3b41283d1ae5b527
6
+ metadata.gz: b8eecd0da8bbbd17de007880bc13f6101e07ba59095a4946ca1e41cbfe1f8fb7c77257a69334329b8d941f17d11d99564b6ad8829c0f7a5444d84cd94246fe84
7
+ data.tar.gz: bdde19da37640bf9ab41bdcc8f1af6f463148d838eb101cfbfc9c0eaa466cf3b12f791df86ec3c0536fb7fc6fb179a242c8ba056df7f6cd6232f6ca9875ff57d
@@ -0,0 +1,35 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on:
11
+ push:
12
+ branches: [ master ]
13
+ pull_request:
14
+
15
+ jobs:
16
+ test:
17
+
18
+ runs-on: ubuntu-latest
19
+ strategy:
20
+ matrix:
21
+ ruby-version: ['2.6', '2.7', '3.0']
22
+
23
+ steps:
24
+ - uses: actions/checkout@v2
25
+ - name: Set up Ruby
26
+ # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
27
+ # change this to (see https://github.com/ruby/setup-ruby#versioning):
28
+ # uses: ruby/setup-ruby@v1
29
+ uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
30
+ with:
31
+ ruby-version: ${{ matrix.ruby-version }}
32
+ bundler-cache: false # runs 'bundle install' and caches installed gems automatically
33
+ - run: bundle install --jobs 4
34
+ - name: Run tests
35
+ run: bundle exec rake
data/.reek.yml CHANGED
@@ -1,21 +1,14 @@
1
1
  ---
2
2
  detectors:
3
3
 
4
- FeatureEnvy:
5
- exclude:
6
- - 'PhcStringFormat::PhcString#parse_params'
7
-
8
4
  LongParameterList:
9
5
  max_params: 6
10
- overrides:
11
- initialize:
12
- max_params: 6
13
6
 
14
7
  TooManyStatements:
15
8
  max_statements: 10
16
9
 
17
10
  TooManyInstanceVariables:
18
- max_instance_variables: 6
11
+ max_instance_variables: 5
19
12
 
20
13
  UncommunicativeModuleName:
21
14
  accept:
data/.rubocop.yml CHANGED
@@ -9,17 +9,12 @@ AllCops:
9
9
  - '*.gemspec'
10
10
  - Rakefile
11
11
 
12
- Metrics/AbcSize:
13
- Max: 20
14
-
15
12
  Metrics/BlockLength:
16
13
  Exclude:
17
14
  - 'spec/**/*'
18
- Metrics/ClassLength:
19
- Max: 120
20
15
 
21
16
  Metrics/CyclomaticComplexity:
22
- Max: 10
17
+ Max: 7
23
18
 
24
19
  Metrics/LineLength:
25
20
  Max: 110
@@ -29,6 +24,3 @@ Metrics/MethodLength:
29
24
 
30
25
  Metrics/ParameterLists:
31
26
  Max: 6
32
-
33
- Metrics/PerceivedComplexity:
34
- Max: 10
data/.simplecov ADDED
@@ -0,0 +1,4 @@
1
+ SimpleCov.start do
2
+ add_filter '/tmp/'
3
+ add_filter '/spec/'
4
+ end
data/.travis.yml CHANGED
@@ -1,5 +1,9 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.4.1
5
- before_install: gem install bundler -v 1.16.2
4
+ - 2.4
5
+ - 2.5
6
+ - 2.6
7
+ before_install:
8
+ - gem update --system
9
+ - gem install bundler
data/Gemfile CHANGED
@@ -7,3 +7,5 @@ gemspec
7
7
 
8
8
  gem "rubocop", "~> 0.58.2", require: false, :groups => [:development, :test]
9
9
  gem "reek", "~> 5.0", require: false, :groups => [:development, :test]
10
+ gem 'simplecov', '>= 0.16.1', require: false, group: :test
11
+ gem 'codacy-coverage', '>= 1.1.8', require: false, group: :test
data/Gemfile.lock CHANGED
@@ -1,60 +1,65 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- phc_string_format (0.3.3)
4
+ phc_string_format (0.3.8)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- ast (2.4.0)
9
+ ast (2.4.2)
10
10
  axiom-types (0.1.1)
11
11
  descendants_tracker (~> 0.0.4)
12
12
  ice_nine (~> 0.11.0)
13
13
  thread_safe (~> 0.3, >= 0.3.1)
14
- byebug (10.0.2)
14
+ byebug (11.1.3)
15
+ codacy-coverage (2.2.1)
16
+ simplecov
15
17
  codeclimate-engine-rb (0.4.1)
16
18
  virtus (~> 1.0)
17
- coderay (1.1.2)
19
+ coderay (1.1.3)
18
20
  coercible (1.0.0)
19
21
  descendants_tracker (~> 0.0.1)
20
22
  descendants_tracker (0.0.4)
21
23
  thread_safe (~> 0.3, >= 0.3.1)
22
- diff-lcs (1.3)
24
+ diff-lcs (1.4.4)
25
+ docile (1.3.5)
23
26
  equalizer (0.0.11)
24
27
  ice_nine (0.11.2)
25
- jaro_winkler (1.5.1)
28
+ jaro_winkler (1.5.4)
26
29
  kwalify (0.7.2)
27
- method_source (0.9.0)
28
- parallel (1.12.1)
29
- parser (2.5.1.2)
30
- ast (~> 2.4.0)
31
- powerpack (0.1.2)
32
- pry (0.11.3)
33
- coderay (~> 1.1.0)
34
- method_source (~> 0.9.0)
35
- pry-byebug (3.6.0)
36
- byebug (~> 10.0)
37
- pry (~> 0.10)
30
+ method_source (1.0.0)
31
+ parallel (1.20.1)
32
+ parser (2.7.2.0)
33
+ ast (~> 2.4.1)
34
+ powerpack (0.1.3)
35
+ pry (0.13.1)
36
+ coderay (~> 1.1)
37
+ method_source (~> 1.0)
38
+ pry-byebug (3.9.0)
39
+ byebug (~> 11.0)
40
+ pry (~> 0.13.0)
41
+ psych (3.1.0)
38
42
  rainbow (3.0.0)
39
- rake (10.5.0)
40
- reek (5.0.2)
43
+ rake (13.0.3)
44
+ reek (5.6.0)
41
45
  codeclimate-engine-rb (~> 0.4.0)
42
46
  kwalify (~> 0.7.0)
43
- parser (>= 2.5.0.0, < 2.6, != 2.5.1.1)
47
+ parser (>= 2.5.0.0, < 2.8, != 2.5.1.1)
48
+ psych (~> 3.1.0)
44
49
  rainbow (>= 2.0, < 4.0)
45
- rspec (3.7.0)
46
- rspec-core (~> 3.7.0)
47
- rspec-expectations (~> 3.7.0)
48
- rspec-mocks (~> 3.7.0)
49
- rspec-core (3.7.1)
50
- rspec-support (~> 3.7.0)
51
- rspec-expectations (3.7.0)
50
+ rspec (3.10.0)
51
+ rspec-core (~> 3.10.0)
52
+ rspec-expectations (~> 3.10.0)
53
+ rspec-mocks (~> 3.10.0)
54
+ rspec-core (3.10.1)
55
+ rspec-support (~> 3.10.0)
56
+ rspec-expectations (3.10.1)
52
57
  diff-lcs (>= 1.2.0, < 2.0)
53
- rspec-support (~> 3.7.0)
54
- rspec-mocks (3.7.0)
58
+ rspec-support (~> 3.10.0)
59
+ rspec-mocks (3.10.2)
55
60
  diff-lcs (>= 1.2.0, < 2.0)
56
- rspec-support (~> 3.7.0)
57
- rspec-support (3.7.1)
61
+ rspec-support (~> 3.10.0)
62
+ rspec-support (3.10.2)
58
63
  rubocop (0.58.2)
59
64
  jaro_winkler (~> 1.5.1)
60
65
  parallel (~> 1.10)
@@ -63,9 +68,15 @@ GEM
63
68
  rainbow (>= 2.2.2, < 4.0)
64
69
  ruby-progressbar (~> 1.7)
65
70
  unicode-display_width (~> 1.0, >= 1.0.1)
66
- ruby-progressbar (1.9.0)
71
+ ruby-progressbar (1.11.0)
72
+ simplecov (0.21.2)
73
+ docile (~> 1.1)
74
+ simplecov-html (~> 0.11)
75
+ simplecov_json_formatter (~> 0.1)
76
+ simplecov-html (0.12.3)
77
+ simplecov_json_formatter (0.1.2)
67
78
  thread_safe (0.3.6)
68
- unicode-display_width (1.4.0)
79
+ unicode-display_width (1.7.0)
69
80
  virtus (1.0.5)
70
81
  axiom-types (~> 0.1)
71
82
  coercible (~> 1.0)
@@ -76,13 +87,15 @@ PLATFORMS
76
87
  ruby
77
88
 
78
89
  DEPENDENCIES
79
- bundler (~> 1.16)
90
+ bundler (~> 2)
91
+ codacy-coverage (>= 1.1.8)
80
92
  phc_string_format!
81
93
  pry-byebug (~> 3.6)
82
- rake (~> 10.0)
94
+ rake (~> 13.0)
83
95
  reek (~> 5.0)
84
96
  rspec (~> 3.0)
85
97
  rubocop (~> 0.58.2)
98
+ simplecov (>= 0.16.1)
86
99
 
87
100
  BUNDLED WITH
88
- 1.16.2
101
+ 2.0.1
data/README.md CHANGED
@@ -4,6 +4,7 @@
4
4
  [![Build Status](https://travis-ci.org/naokikimura/phc_string_format.svg?branch=master)](https://travis-ci.org/naokikimura/phc_string_format)
5
5
  [![Known Vulnerabilities](https://snyk.io/test/github/naokikimura/phc_string_format/badge.svg?targetFile=Gemfile.lock)](https://snyk.io/test/github/naokikimura/phc_string_format?targetFile=Gemfile.lock)
6
6
  [![Codacy Badge](https://api.codacy.com/project/badge/Grade/cbcb6fa3556447a4af16980f3cc6f1eb)](https://app.codacy.com/app/naokikimura/phc_string_format?utm_source=github.com&utm_medium=referral&utm_content=naokikimura/phc_string_format&utm_campaign=badger)
7
+ [![Codacy Badge](https://api.codacy.com/project/badge/Coverage/26df342921414ee69b69f028cefe4f3b)](https://www.codacy.com/app/naokikimura/phc_string_format?utm_source=github.com&utm_medium=referral&utm_content=naokikimura/phc_string_format&utm_campaign=Badge_Coverage)
7
8
 
8
9
  PHC string format implemented by Ruby
9
10
 
@@ -31,13 +32,13 @@ require 'phc_string_format'
31
32
  encrypted_password = '$argon2i$v=19$m=4096,t=3,p=1$IfH5R3O3r3501DfGnGr2rw$DfQ8Hv9R2eF2uBs1dR99IGjVjDl/rpkJIkaNyZ1g3pk'
32
33
 
33
34
  # parse
34
- phc_string_params = PhcStringFormat::Formatter.parse(encrypted_password)
35
+ phc_string_args = PhcStringFormat::Formatter.parse(encrypted_password)
35
36
  # => {:id=>"argon2i", :version=>19, :params=>{"m"=>4096, "t"=>3, "p"=>1}, :salt=>"!\xF1\xF9Gs\xB7\xAF~t\xD47\xC6\x9Cj\xF6\xAF", :hash=>"\r\xF4<\x1E\xFFQ\xD9\xE1v\xB8\e5u\x1F} h\xD5\x8C9\x7F\xAE\x99\t\"F\x8D\xC9\x9D`\xDE\x99"}
36
37
 
37
38
  # format
38
- password_hash = PhcStringFormat::Formatter.format(phc_string_params)
39
+ password_hash = PhcStringFormat::Formatter.format(phc_string_args)
39
40
 
40
- password_hash == phc_string_format
41
+ password_hash == encrypted_password
41
42
  ```
42
43
 
43
44
  ## Development
@@ -1,7 +1,8 @@
1
1
  require 'phc_string_format/b64'
2
- require 'phc_string_format/formatter'
3
- require 'phc_string_format/phc_string'
4
2
  require 'phc_string_format/version'
3
+ require 'phc_string_format/validations'
4
+ require 'phc_string_format/phc_string'
5
+ require 'phc_string_format/formatter'
5
6
 
6
7
  #
7
8
  # PHC string format implemented by Ruby
@@ -4,7 +4,7 @@ module PhcStringFormat
4
4
  #
5
5
  module Formatter
6
6
  def self.format(**kwargs)
7
- PhcString.create(kwargs).to_s
7
+ PhcString.create(**kwargs).to_s
8
8
  end
9
9
 
10
10
  def self.parse(string, hint: {}, pick: nil)
@@ -3,55 +3,39 @@ module PhcStringFormat
3
3
  # Parser for parsing PHC-string-format.
4
4
  #
5
5
  class PhcString
6
- def self.validates(name, **options)
7
- @validators ||= []
8
- @validators << lambda { |object|
9
- value = object.instance_variable_get(name)
10
- return if options[:allow_nil] && !value
11
- regex = options.dig(:format, :with)
12
- raise ArgumentError, options[:message] unless !regex || value =~ regex
13
- }
14
- end
15
-
16
- def self.validate(name, **options)
17
- @validators ||= []
18
- @validators << ->(object) { raise ArgumentError, options[:message] unless object.send(name) }
19
- end
6
+ include Validations
20
7
 
21
- def self.do_validate(that)
22
- @validators.each { |validator| validator.call(that) }
23
- that
8
+ def self.parse(string)
9
+ string ||= ''
10
+ PhcString.new(*split(string))
11
+ rescue StandardError => exception
12
+ raise ParseError, exception.message
24
13
  end
25
14
 
26
- private_class_method :validates, :validate
27
-
28
15
  # :reek:DuplicateMethodCall { allow_calls: ['elements.shift', 'elements.first'] }
29
- def self.parse(string)
30
- string ||= ''
16
+ def self.split(string)
31
17
  elements = string.split(/\$/, 6)
32
18
  elements.shift
33
- id = elements.shift
34
- version = elements.shift if (elements.first || '').start_with?('v=')
35
- params = elements.shift if (elements.first || '').include?('=')
36
- salt = elements.shift
37
- hash = elements.shift
38
- begin
39
- PhcString.new(id, version, params, salt, hash)
40
- rescue ArgumentError
41
- raise ParseError
42
- end
19
+ [
20
+ elements.shift,
21
+ (elements.shift if (elements.first || '').start_with?('v=')),
22
+ (elements.shift if (elements.first || '').include?('=')),
23
+ elements.shift,
24
+ elements.shift
25
+ ]
43
26
  end
44
27
 
45
28
  def self.create(id:, version: nil, params: nil, salt: nil, hash: nil, hint: {})
46
- PhcString.new(
29
+ PhcString.new \
47
30
  id,
48
- ("v=#{version}" if version),
49
- (params.map { |entry| entry.join '=' }.join(',') if params),
31
+ (Parameters.to_s(v: version) if version),
32
+ (Parameters.to_s(params) if params),
50
33
  hint.dig(:salt, :encoding) == '7bit' ? salt : B64.encode(salt),
51
34
  B64.encode(hash)
52
- )
53
35
  end
54
36
 
37
+ private_class_method :split
38
+
55
39
  validates :@id, message: 'id is non-compliant', format: { with: /\A[a-z0-9-]{1,32}\z/ }
56
40
  validates \
57
41
  :@version_string,
@@ -63,12 +47,12 @@ module PhcStringFormat
63
47
  :@encoded_salt,
64
48
  message: 'encoded salt is non-compliant',
65
49
  allow_nil: true,
66
- format: { with: %r{\A[a-zA-Z0-9/+.-]+\z} }
50
+ format: { with: %r{\A[a-zA-Z0-9/+.-]*\z} }
67
51
  validates \
68
52
  :@encoded_hash,
69
53
  message: 'encoded hash is non-compliant',
70
54
  allow_nil: true,
71
- format: { with: %r{\A[a-zA-Z0-9/+]+\z} }
55
+ format: { with: %r{\A[a-zA-Z0-9/+]*\z} }
72
56
  validate :validate_salt_and_hash, message: 'hash needs salt'
73
57
 
74
58
  def initialize(id, version_string, params_string, encoded_salt, encoded_hash)
@@ -88,15 +72,15 @@ module PhcStringFormat
88
72
  @params_string,
89
73
  @encoded_salt,
90
74
  @encoded_hash
91
- ].reject { |element| !element || element.empty? }.join('$')
75
+ ].compact.join('$')
92
76
  end
93
77
 
94
78
  def to_h(pick: nil, hint: {})
95
79
  pick ||= %i[id version params salt hash]
96
80
  {
97
81
  id: (@id if pick.include?(:id)),
98
- version: (parse_version(@version_string) if pick.include?(:version)),
99
- params: (parse_params(@params_string) if pick.include?(:params)),
82
+ version: (Parameters.to_h(@version_string)['v'] if pick.include?(:version)),
83
+ params: (Parameters.to_h(@params_string) if pick.include?(:params)),
100
84
  salt:
101
85
  if pick.include?(:salt)
102
86
  hint.dig(:salt, :encoding) == '7bit' ? @encoded_salt : B64.decode(@encoded_salt)
@@ -118,21 +102,26 @@ module PhcStringFormat
118
102
  end
119
103
 
120
104
  def validate_salt_and_hash
121
- !((!@encoded_salt || @encoded_salt.empty?) && !(!@encoded_hash || @encoded_hash.empty?))
105
+ @encoded_salt || !@encoded_hash
122
106
  end
123
107
 
124
- def parse_version(version_string)
125
- parse_params(version_string)['v']
126
- end
108
+ #
109
+ # PHC string parameters
110
+ #
111
+ module Parameters
112
+ def self.to_s(params)
113
+ params ||= {}
114
+ params.map { |param| param.join '=' }.join(',')
115
+ end
127
116
 
128
- def parse_params(params_string)
129
- mapper = ->(param) { param.split '=' }
130
- reducer = lambda do |param, params|
131
- name, value = param
132
- params[name] = value =~ /\A-?\d+(.\d+)?\Z/ ? value.to_i : value
117
+ def self.to_h(params_string)
118
+ params_string ||= ''
119
+ params_string
120
+ .split(/,/)
121
+ .map { |param| param.split '=' }
122
+ .map { |name, value| [name, value =~ /\A-?\d+(.\d+)?\Z/ ? value.to_i : value] }
123
+ .to_h
133
124
  end
134
- params_string ||= ''
135
- params_string.split(/,/).map(&mapper).each_with_object({}, &reducer)
136
125
  end
137
126
  end
138
127
 
@@ -0,0 +1,34 @@
1
+ module PhcStringFormat
2
+ #
3
+ # Provides a validation framework to your objects.
4
+ #
5
+ module Validations
6
+ def self.included(klass)
7
+ klass.extend ClassMethods
8
+ end
9
+ #
10
+ # class methods
11
+ #
12
+ module ClassMethods
13
+ def validates(name, **options)
14
+ @validators ||= []
15
+ @validators << lambda { |object|
16
+ value = object.instance_variable_get(name)
17
+ return if options[:allow_nil] && !value
18
+ regex = options.dig(:format, :with)
19
+ raise ArgumentError, options[:message] unless !regex || value =~ regex
20
+ }
21
+ end
22
+
23
+ def validate(name, **options)
24
+ @validators ||= []
25
+ @validators << ->(object) { raise ArgumentError, options[:message] unless object.send(name) }
26
+ end
27
+
28
+ def do_validate(that)
29
+ @validators.each { |validator| validator.call(that) }
30
+ that
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,3 +1,3 @@
1
1
  module PhcStringFormat
2
- VERSION = "0.3.3"
2
+ VERSION = "0.3.8"
3
3
  end
@@ -27,8 +27,8 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ["lib"]
29
29
 
30
- spec.add_development_dependency "bundler", "~> 1.16"
31
- spec.add_development_dependency "rake", "~> 10.0"
30
+ spec.add_development_dependency "bundler", "~> 2"
31
+ spec.add_development_dependency "rake", "~> 13.0"
32
32
  spec.add_development_dependency "rspec", "~> 3.0"
33
33
  spec.add_development_dependency "pry-byebug", "~> 3.6"
34
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phc_string_format
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - naokikimura
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-02 00:00:00.000000000 Z
11
+ date: 2021-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
19
+ version: '2'
20
20
  type: :development
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: '1.16'
26
+ version: '2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,17 +66,19 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.6'
69
- description:
69
+ description:
70
70
  email:
71
71
  - n.kimura.cap@gmail.com
72
72
  executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
+ - ".github/workflows/ruby.yml"
76
77
  - ".gitignore"
77
78
  - ".reek.yml"
78
79
  - ".rspec"
79
80
  - ".rubocop.yml"
81
+ - ".simplecov"
80
82
  - ".travis.yml"
81
83
  - CODE_OF_CONDUCT.md
82
84
  - Gemfile
@@ -90,6 +92,7 @@ files:
90
92
  - lib/phc_string_format/b64.rb
91
93
  - lib/phc_string_format/formatter.rb
92
94
  - lib/phc_string_format/phc_string.rb
95
+ - lib/phc_string_format/validations.rb
93
96
  - lib/phc_string_format/version.rb
94
97
  - phc_string_format.gemspec
95
98
  homepage: https://github.com/naokikimura/phc_string_format
@@ -98,7 +101,7 @@ licenses:
98
101
  metadata:
99
102
  bug_tracker_uri: https://github.com/naokikimura/phc_string_format/issues
100
103
  source_code_uri: https://github.com/naokikimura/phc_string_format.git
101
- post_install_message:
104
+ post_install_message:
102
105
  rdoc_options: []
103
106
  require_paths:
104
107
  - lib
@@ -113,9 +116,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
116
  - !ruby/object:Gem::Version
114
117
  version: '0'
115
118
  requirements: []
116
- rubyforge_project:
117
- rubygems_version: 2.7.6
118
- signing_key:
119
+ rubygems_version: 3.0.3
120
+ signing_key:
119
121
  specification_version: 4
120
122
  summary: PHC string format implemented by Ruby.
121
123
  test_files: []