quaternion_c2 0.1.2 → 0.9.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
- SHA1:
3
- metadata.gz: 6990b36ad863bcfeb0d147530f06461f634b13cc
4
- data.tar.gz: 04be92b14b2149067953ac61c73151aafa42edea
2
+ SHA256:
3
+ metadata.gz: 7db82b9a71381584904b5b2524a76f8f352eeb5b34ca834374c4bce5d370b959
4
+ data.tar.gz: 987d2a9893ef41f0d079931931a648e853d31ae4b54c9822d3179ab8c0bf459d
5
5
  SHA512:
6
- metadata.gz: 4d62049c41e69f64f427932b91499399e122890472d963e2a2185959c197533f9fdac296301a8dd277866a74f710f6020b019fce30d584ae2f5c874b77c82593
7
- data.tar.gz: b3dfa3a4691263ad104b5d9fc5669bd39708b1ad55ef680205f305f2012abc6512a6c93ebf93e9bb6ba660e1dc14b70a74b0e7f258da1aee3f02969ecfd4e9b2
6
+ metadata.gz: a37154fffef6c3a892040f0762ecfb644e0d966fdc091e9e532102fddea4234c86cd03dcf510ccaf865c9e8e1f3dfa85da3ff796fa76dedf79cf16c858e7dd22
7
+ data.tar.gz: 7cf6bd82f8abae76704202a7c891e88111074428571dfa5fa6e61914248c0ace059d6be84d055450bd8d9be7372dc3e812786acaf53f14297b50f722d2cd4197
@@ -121,11 +121,8 @@ class Quaternion
121
121
  end
122
122
 
123
123
  class << self
124
- ##
125
- # @!visibility private
126
- #
127
- def parse(str, strict = false)
128
- regexp = %r{
124
+ RE, RE_STRICT = [false, true].collect do |strict|
125
+ %r{
129
126
  \A
130
127
  \s*+
131
128
  (?:(?'real' [+-]?+ \g'rational' ) (?![ijk]))?+
@@ -133,13 +130,20 @@ class Quaternion
133
130
  (?:(?'imag_j' \g'head_or_sign' \g'rational'?+) j )?+
134
131
  (?:(?'imag_k' \g'head_or_sign' \g'rational'?+) k )?+
135
132
  \s*+
136
- |\z
137
- (?'head_or_sign' (?<=^|\s) [+-]?+ | [+-])
133
+ |(?!)
134
+ (?'head_or_sign' (?<!\S) [+-]?+ | [+-])
138
135
  (?'digits' \d++ (?:#{strict ? "_" : "_++"} \d++)*+)
139
136
  (?'int_or_float' (?:\g'digits')?+ (?:\. \g'digits')?+
140
137
  (?<=\d) (?:e [+-]?+ \g'digits')?+)
141
138
  (?'rational' \g'int_or_float' (?:/ \g'digits')?+)
142
139
  }xi
140
+ end
141
+ private_constant :RE, :RE_STRICT
142
+
143
+ private
144
+
145
+ def parse(str, strict = false)
146
+ regexp = strict ? RE_STRICT : RE
143
147
 
144
148
  # regexp.match(str) always succeeds (even if str is empty)
145
149
  components = regexp.match(str).captures[0,4]
@@ -9,6 +9,18 @@ class Quaternion
9
9
  # * +@ #=> self
10
10
  # * -@ #=> 0 - self
11
11
 
12
+ ##
13
+ # Returns negation of the value.
14
+ #
15
+ # @return [Quaternion]
16
+ #
17
+ # @example
18
+ # -Quaternion(1, 2, 3, 4) #=> (-1-2i-3j-4k)
19
+ #
20
+ def -@
21
+ __new__(-@a, -@b)
22
+ end
23
+
12
24
  ##
13
25
  # Returns its conjugate.
14
26
  #
@@ -3,12 +3,12 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "quaternion_c2"
6
- spec.version = "0.1.2"
6
+ spec.version = "0.9.0"
7
7
  spec.authors = ["Masahiro Nomoto"]
8
8
  spec.email = ["hmmnrst@users.noreply.github.com"]
9
9
 
10
10
  spec.summary = %q{Quaternion class}
11
- spec.description = %q{This provides a numeric class Quaternion which is similar to a built-in class Complex.}
11
+ spec.description = %q{Provides a numeric class Quaternion which is similar to a built-in class Complex.}
12
12
  spec.homepage = "https://github.com/hmmnrst/quaternion_c2"
13
13
  spec.license = "MIT"
14
14
 
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_development_dependency "bundler", "~> 1.14"
23
- spec.add_development_dependency "rake", "~> 10.0"
22
+ spec.add_development_dependency "bundler"
23
+ spec.add_development_dependency "rake"
24
24
  spec.add_development_dependency "rspec", "~> 3.0"
25
25
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quaternion_c2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masahiro Nomoto
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-12 00:00:00.000000000 Z
11
+ date: 2019-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.14'
19
+ version: '0'
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.14'
26
+ version: '0'
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: '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: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,8 +52,8 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
- description: This provides a numeric class Quaternion which is similar to a built-in
56
- class Complex.
55
+ description: Provides a numeric class Quaternion which is similar to a built-in class
56
+ Complex.
57
57
  email:
58
58
  - hmmnrst@users.noreply.github.com
59
59
  executables: []
@@ -101,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
101
  version: '0'
102
102
  requirements: []
103
103
  rubyforge_project:
104
- rubygems_version: 2.6.8
104
+ rubygems_version: 3.0.0.beta3
105
105
  signing_key:
106
106
  specification_version: 4
107
107
  summary: Quaternion class