quaternion_c2 0.1.2 → 0.9.0

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
- 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