plurimath 0.11.8 → 0.11.10

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: d4aba76d0509180fff38697e97ce63b1f6864c1246d41abbc087edb773f063e5
4
- data.tar.gz: 321607b62944bee01d1ba6fb74b83d35eedd46202272787cc0b50a232088b0c0
3
+ metadata.gz: 634327887a9f202817e10057ad12d4ee798212ffc0f6452a7cd720ac49637f4a
4
+ data.tar.gz: 4a3ce4dd7d30039d99e7eb9fa4c22dcd14d03c97b63046e33434cdbf436eea86
5
5
  SHA512:
6
- metadata.gz: 161c050c64e74ffe025b0d256306940be63adad014c02942f62b1eef6f9de209f2559da558e4ab9071ac2a24f63bd5f103b29d75012e1cbffbe0d52b3e74b061
7
- data.tar.gz: b9506e100111444689cf170486cc4d907292b303354e2107604514c45bcfda6c86b96fc6aa1ae1416b1146caad6fb47ee520879493b351fb659db915825c4fd0
6
+ metadata.gz: 9b2c01fd19c8063e19d617f0f81cf7cbbd1de3a07a7d8c823393f2a946db0ac908241918b2c9cdb5b749cdf1eba85704ec8bc6618ec85997b78ebe2cdb53de81
7
+ data.tar.gz: 601f9e1f0e59e2beda7968e2c8bd940ed96473d40dd75541ca862017cc27814c2c77ac9ab7a24c01ea5659359f6f6c0fc9cca384217e6a8c30d3180419104883
@@ -15,11 +15,26 @@ module Plurimath
15
15
  hex_number |
16
16
  binary_number |
17
17
  octal_number |
18
- (match("[0-9]").repeat(1) >> decimal_marker >> match("[0-9]").repeat(1)).as(:number) |
19
- match("[0-9]").repeat(1).as(:number) |
18
+ decimal_number.as(:number) |
20
19
  str(".").as(:symbol)
21
20
  end
22
21
 
22
+ rule(:decimal_number) do
23
+ (match("[0-9]").repeat(1) >> decimal_marker >> match("[0-9]").repeat(1)) |
24
+ match("[0-9]").repeat(1)
25
+ end
26
+
27
+ rule(:decimal_operand) do
28
+ (hex_number | binary_number | octal_number).absent? >> decimal_number
29
+ end
30
+
31
+ rule(:signed_number) { (str("-") >> decimal_operand).as(:number) }
32
+ rule(:script_operand) { signed_number | sequence }
33
+ rule(:mod_operand) do
34
+ (str("-") >> decimal_operand.present? >> iteration).as(:negative_mod_operand) |
35
+ iteration
36
+ end
37
+
23
38
  rule(:controversial_symbols) { power_base | expression }
24
39
  rule(:left_right_open_paren) { str("(") | str("[") }
25
40
  rule(:left_right_close_paren) { str(")") | str("]") }
@@ -92,9 +107,9 @@ module Plurimath
92
107
  end
93
108
 
94
109
  rule(:power_base) do
95
- (base >> space? >> sequence.as(:base_value) >> power >> (power >> power.maybe).absent? >> space? >> sequence.as(:power_value)) |
96
- (space? >> base >> space? >> sequence.as(:base_value)).as(:base) |
97
- (space? >> power >> (power >> power.maybe).absent? >> space? >> sequence.as(:power_value)).as(:power) |
110
+ (base >> space? >> script_operand.as(:base_value) >> power >> (power >> power.maybe).absent? >> space? >> script_operand.as(:power_value)) |
111
+ (space? >> base >> space? >> script_operand.as(:base_value)).as(:base) |
112
+ (space? >> power >> (power >> power.maybe).absent? >> space? >> script_operand.as(:power_value)).as(:power) |
98
113
  (space? >> base >> space? >> power.as(:symbol).as(:base_value)).as(:base) |
99
114
  (space? >> power >> (power >> power.maybe).absent? >> space? >> base.as(:symbol).as(:power_value)).as(:power)
100
115
  end
@@ -135,9 +150,9 @@ module Plurimath
135
150
  end
136
151
 
137
152
  rule(:mod) do
138
- (sequence.as(:dividend) >> space? >> str("mod").as(:mod) >> space? >> iteration.as(:divisor)).as(:mod) |
139
- ((power_base_rules >> power_base).as(:dividend) >> space? >> str("mod").as(:mod) >> space? >> iteration.as(:divisor)).as(:mod) |
140
- (power_base_rules.as(:dividend) >> space? >> str("mod").as(:mod) >> space? >> iteration.as(:divisor)).as(:mod)
153
+ (sequence.as(:dividend) >> space? >> str("mod").as(:mod) >> space? >> mod_operand.as(:divisor)).as(:mod) |
154
+ ((power_base_rules >> power_base).as(:dividend) >> space? >> str("mod").as(:mod) >> space? >> mod_operand.as(:divisor)).as(:mod) |
155
+ (power_base_rules.as(:dividend) >> space? >> str("mod").as(:mod) >> space? >> mod_operand.as(:divisor)).as(:mod)
141
156
  end
142
157
 
143
158
  rule(:iteration) do
@@ -15,6 +15,14 @@ module Plurimath
15
15
  rule(rparen: simple(:rparen)) { Utility.asciimath_symbol_object(rparen) }
16
16
  rule(number: simple(:number)) { Math::Number.new(number) }
17
17
 
18
+ rule(negative_mod_operand: simple(:operand)) do
19
+ if operand.is_a?(Math::Number)
20
+ Math::Number.new("-#{operand.value}")
21
+ else
22
+ Math::Formula.new([Math::Symbols::Minus.new, operand])
23
+ end
24
+ end
25
+
18
26
  rule(ternary: simple(:ternary)) { ternary }
19
27
  rule(sequence: simple(:sequence)) { sequence }
20
28
  rule(table_row: simple(:table_row)) { table_row }
@@ -11,7 +11,7 @@ module Plurimath
11
11
  end
12
12
 
13
13
  def to_latex(options:)
14
- "{\\lVert #{parameter_one&.to_latex(options: options)} \\lVert}"
14
+ "{\\lVert #{parameter_one&.to_latex(options: options)} \\rVert}"
15
15
  end
16
16
 
17
17
  def to_mathml_without_math_tag(intent, options:)
@@ -79,12 +79,11 @@ module Plurimath
79
79
  def to_latex(options:)
80
80
  return "\\begin{Vmatrix}#{latex_content(options: options)}\\end{Vmatrix}" if open_paren.is_a?(Math::Symbols::Paren::Norm)
81
81
 
82
- separator = "{#{table_attribute(:latex)}}" if environment&.include?("array")
83
82
  left_paren = open_paren&.to_latex(options: options) || "."
84
83
  right_paren = close_paren&.to_latex(options: options) || "."
85
84
  left = "\\left #{left_paren.delete_prefix('\\left')}\\begin{matrix}"
86
85
  right = "\\end{matrix}\\right #{right_paren.delete_prefix('\\right')}"
87
- "#{left}#{separator}#{latex_content(options: options)}#{right}"
86
+ "#{left}#{latex_content(options: options)}#{right}"
88
87
  end
89
88
 
90
89
  def to_html(options:)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Plurimath
4
- VERSION = "0.11.8"
4
+ VERSION = "0.11.10"
5
5
  end
data/plurimath.gemspec CHANGED
@@ -29,8 +29,8 @@ Gem::Specification.new do |spec|
29
29
  spec.require_paths = ["lib"]
30
30
  spec.add_dependency "bigdecimal"
31
31
  spec.add_dependency "htmlentities"
32
- spec.add_dependency "lutaml-model", "~> 0.8.17"
33
- spec.add_dependency "mml", "~> 2.4.0"
32
+ spec.add_dependency "lutaml-model", "~> 0.8.65"
33
+ spec.add_dependency "mml", "~> 2.4.2"
34
34
  spec.add_dependency "omml", "~> 0.2.5"
35
35
  spec.add_dependency "ostruct"
36
36
  spec.add_dependency "ox"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plurimath
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.8
4
+ version: 0.11.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-09-23 00:00:00.000000000 Z
11
+ date: 2026-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bigdecimal
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.8.17
47
+ version: 0.8.65
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.8.17
54
+ version: 0.8.65
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: mml
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 2.4.0
61
+ version: 2.4.2
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 2.4.0
68
+ version: 2.4.2
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: omml
71
71
  requirement: !ruby/object:Gem::Requirement