nvim 1.1.0 → 1.2.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
2
  SHA256:
3
- metadata.gz: 86b10be9d49da003c89060559febe3e475e543660e957e6c3dffc15522fbbdd5
4
- data.tar.gz: 5d4ea6f5bf523a0a8918eb5a6defbbdf58bfd001fde2ba77d75c4ccd2a75858b
3
+ metadata.gz: ba92c6fed4951efb4f5e19baeb500fa284eb4ff74bdc2c583024633e193c3678
4
+ data.tar.gz: 5642a68aef2c9310c7ee42dc2ce52dc20c5ba45413a69fc17897fbdcde7f8702
5
5
  SHA512:
6
- metadata.gz: 976dbd80726c5626ff8aacefe48f3b9a3f30b432eb915ab82dca589604bc23260f8073184bf007a168acf7576d1923c8ede6fc3d59f64f7751ec54e4d4a37867
7
- data.tar.gz: 8f1f04a090a323ffed4011a7a8c22953a3d294034d5e319f5825307c9c45528766a6ac1268483ba540e773d3b6763048580032aa6f4dfc191d89d7e8355fb648
6
+ metadata.gz: 5a8d2c4fd3b66d4dba74c446f65ae08820dd5feb026e0ab14f8f97af54b495ef421220614473867e3e71039221d471f1da2976240f47fc8f5c96ce3738973320
7
+ data.tar.gz: d33e37d115531e00811714e86de6902be1db2a40748676200e7ee9590556d31f3edfe85ba3078ee3879831536f947222983f17d36a70db4b3b6b7af8b78fa2a8
data/INFO.yaml CHANGED
@@ -3,7 +3,7 @@
3
3
  #
4
4
 
5
5
  nvim:
6
- version: 1.1.0
6
+ version: 1.2.0
7
7
  license: BSD-2-Clause+
8
8
  authors:
9
9
  - Bertram Scharpf
data/README.md CHANGED
@@ -150,9 +150,12 @@ Further, a simple number/cash summing tool is included.
150
150
  ```
151
151
  Apples : 3.99
152
152
  Bananas : 5 * 0.40 # multiplication
153
- Oranges : 3.59 | -10% # percentage added (here subtracted)
153
+ Oranges : 3.59 - 10% # percentage added (here subtracted)
154
154
  Kiwi : 0,40 # comma is allowed
155
155
  Coconut : 5,- # empty decimal places
156
+ # !dot # dot forced now
157
+ Tangerines: 4.44
158
+ # !comma # result with comma
156
159
  ~
157
160
  ~
158
161
  :%ruby +
data/lib/neovim/info.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  require "neovim/meta.rb"
2
2
  Neovim::INFO = Neovim::Meta.new "nvim",
3
- version: "1.1.0",
3
+ version: "1.2.0",
4
4
  license: "BSD-2-Clause+",
5
5
  authors: ["Bertram Scharpf"],
6
6
  email: "software@bertram-scharpf.de",
7
7
  summary: "Yet another Ruby client for Neovim",
8
8
  description: "A simple Ruby client for Neovim.\nClean code, minimal dependecies, no frills, no wokeness.",
9
9
  homepage: "https://github.com/BertramScharpf/ruby-nvim",
10
- commit: "45c1473"
10
+ commit: "2f15f07"
@@ -117,53 +117,6 @@ module Neovim
117
117
  run_dsl DslProvider, &block
118
118
  end
119
119
 
120
- def build_sum lines
121
- require "bigdecimal"
122
- sum = BigDecimal 0
123
- prev, decs = 0, 0
124
- sep = "."
125
- lines.each { |l|
126
- l.slice! /^.*:/
127
- l.slice! /#.*/
128
- l = l.split /(?:\+\s+|\|)/
129
- l.map! { |m|
130
- m.strip!
131
- if m =~ %r/ *%\z/ then
132
- prev * (BigDecimal $`) / 100
133
- else
134
- m = m.split "*"
135
- m.map! { |n|
136
- n.sub! /,/ do sep = $& ; "." end
137
- n.sub! /\.(?:-+|([0-9]+))/ do
138
- if $1 then
139
- d = $1.length
140
- decs = d if decs < d
141
- ".#$1"
142
- else
143
- decs = 2
144
- nil
145
- end
146
- end
147
- BigDecimal n
148
- }
149
- prev = m.inject do |p,e| p*e end
150
- end
151
- }
152
- sum = l.inject sum do |s,e| s+e end
153
- }
154
- sum = sum.round decs
155
- case sum
156
- when BigDecimal then
157
- sum = sum.to_s "F"
158
- sum.sub! /(?:\.([0-9]+))?\z/ do
159
- sep + ($1.to_s.ljust decs, "0")
160
- end
161
- when Integer then
162
- sum = sum.to_s
163
- end
164
- sum
165
- end
166
-
167
120
  end
168
121
 
169
122
  plugin_provider do |dsl|
@@ -180,7 +133,7 @@ module Neovim
180
133
  r.each do |l|
181
134
  require l
182
135
  rescue LoadError
183
- client.err_writeln + $!.to_s
136
+ client.out_write "Warning: #$!"
184
137
  end
185
138
  end
186
139
  end
@@ -226,9 +179,16 @@ module Neovim
226
179
  client.command "#{lst}"
227
180
  set_globals client, fst..lst do |lines|
228
181
  WriteBuf.redirect client do
229
- s = build_sum lines
230
- puts "-"*(s.length + 4)
231
- puts s
182
+ require "neovim/tools/calculator"
183
+ @calc ||= Calculator.new
184
+ @calc.reset!
185
+ w = 0
186
+ lines.each { |l|
187
+ l.length.tap { |g| w = g if g > w }
188
+ @calc.add l
189
+ }
190
+ puts "-"*w
191
+ puts @calc.result
232
192
  rescue
233
193
  puts "Error: #$! (#{$!.class})"
234
194
  end
@@ -0,0 +1,112 @@
1
+ #
2
+ # neovim/tools/calculator.rb -- Simple calculator
3
+ #
4
+
5
+ require "supplement"
6
+ require "bigdecimal"
7
+
8
+
9
+ module Neovim
10
+
11
+ class Calculator
12
+
13
+ def result
14
+ r = @result.round @decs
15
+ case r
16
+ when BigDecimal then
17
+ r = r.to_s "F"
18
+ r.sub! /(?:(\.)([0-9]+))?\z/ do
19
+ (@sep||$1) + ($2.to_s.ljust @decs, "0")
20
+ end
21
+ when Integer then
22
+ r = r.to_s
23
+ end
24
+ r
25
+ end
26
+
27
+ def reset!
28
+ @result = nil
29
+ end
30
+
31
+ def decs= d ; @decs = Integer d ; end
32
+
33
+ def dot! ; @sep, @grp = ".", "," ; end
34
+ def comma! ; @sep, @grp = ",", "." ; end
35
+ def dot? ; @sep == "." ; end
36
+ def comma? ; @sep == "," ; end
37
+
38
+ def add line
39
+ line = line.chomp
40
+ line.slice! /#.*/
41
+ if $& =~ /!(\w+)/ then
42
+ case $1
43
+ when "c", "comma", "k", "komma" then comma!
44
+ when "d", "dot", "p", "point" then dot!
45
+ when /\A\d+\z/ then @decs = $1.to_i
46
+ end
47
+ end
48
+ line.slice! /^.*:/
49
+ line.strip!
50
+ line.notempty? or return
51
+
52
+ products = []
53
+ line.split /(?<![,.])[+-]/ do |p|
54
+ products.push [ (split_products p), $& == "-"]
55
+ end
56
+
57
+ minus = false
58
+ products.each { |p,nm|
59
+ if not @result then @result = p
60
+ elsif minus then @result -= p
61
+ else @result += p
62
+ end
63
+ minus = nm
64
+ }
65
+ @result
66
+ end
67
+
68
+ private
69
+
70
+ def split_products p
71
+ nums = []
72
+ p.split /[*\/]/ do |n|
73
+ nums.push [ (parse_number n), $& == "/"]
74
+ end
75
+
76
+ inv = false
77
+ prod = nil
78
+ nums.each { |n,ni|
79
+ if not prod then prod = n
80
+ elsif inv then prod /= n
81
+ else prod *= n
82
+ end
83
+ inv = ni
84
+ }
85
+ @prev = prod
86
+ end
87
+
88
+ def parse_number n
89
+ n.strip!
90
+ if n =~ %r/ *%\z/ then
91
+ @prev * (BigDecimal $`) / 100
92
+ else
93
+ comma! if not @sep and n =~ /\d,\d/
94
+ case @sep
95
+ when "," then n.gsub! @grp, "_" ; n.sub! @sep, "."
96
+ when "." then n.gsub! @grp, "_"
97
+ end
98
+ if n =~ /\.-/ then
99
+ n = $`
100
+ @decs ||= 2
101
+ elsif n =~ /\.(\d*)/ then
102
+ d = $1.length
103
+ @decs = d if not @decs or @decs < d
104
+ end
105
+ @decs.nonzero? ? (BigDecimal n) : (Integer n)
106
+ end
107
+ end
108
+
109
+ end
110
+
111
+ end
112
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nvim
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bertram Scharpf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-28 00:00:00.000000000 Z
11
+ date: 2024-09-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: software@bertram-scharpf.de
@@ -39,6 +39,7 @@ files:
39
39
  - lib/neovim/remote.rb
40
40
  - lib/neovim/remote_object.rb
41
41
  - lib/neovim/ruby_provider.rb
42
+ - lib/neovim/tools/calculator.rb
42
43
  - lib/neovim/tools/copy.rb
43
44
  - lib/neovim/vimscript_provider.rb
44
45
  homepage: https://github.com/BertramScharpf/ruby-nvim
@@ -60,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
61
  - !ruby/object:Gem::Version
61
62
  version: '0'
62
63
  requirements: []
63
- rubygems_version: 3.5.14
64
+ rubygems_version: 3.5.18
64
65
  signing_key:
65
66
  specification_version: 4
66
67
  summary: Yet another Ruby client for Neovim