nvim 1.1.0 → 1.3.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
2
  SHA256:
3
- metadata.gz: 86b10be9d49da003c89060559febe3e475e543660e957e6c3dffc15522fbbdd5
4
- data.tar.gz: 5d4ea6f5bf523a0a8918eb5a6defbbdf58bfd001fde2ba77d75c4ccd2a75858b
3
+ metadata.gz: f5191debebad5c3b62e615186a5d01bd768a0b1b5779e56a2f52e01f0c421773
4
+ data.tar.gz: 264e879be038d63211c76b1ad2bcffcf8cb28796212010850b6e733a5ad702f3
5
5
  SHA512:
6
- metadata.gz: 976dbd80726c5626ff8aacefe48f3b9a3f30b432eb915ab82dca589604bc23260f8073184bf007a168acf7576d1923c8ede6fc3d59f64f7751ec54e4d4a37867
7
- data.tar.gz: 8f1f04a090a323ffed4011a7a8c22953a3d294034d5e319f5825307c9c45528766a6ac1268483ba540e773d3b6763048580032aa6f4dfc191d89d7e8355fb648
6
+ metadata.gz: '0696bf812f39ad42982db2cb61242ba325dae1f94405c1ca537058617cac648a2e601215a8c2f02c40e27e238efc28a681a6a19e4abd55b9c11865318e77ecfc'
7
+ data.tar.gz: 9ead8707a4fc45cf519a92f7ad03bc78acac2a3b2e8a532e3f3a02e06cfe5963d69bb82817cf098f40293ce03f7384a3102d844d1becc1f252067301132b7601
data/INFO.yaml CHANGED
@@ -3,7 +3,7 @@
3
3
  #
4
4
 
5
5
  nvim:
6
- version: 1.1.0
6
+ version: 1.3.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.3.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: "7dc787c"
@@ -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,114 @@
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
+ @result or return
15
+ r = @result.round @decs
16
+ case r
17
+ when BigDecimal then
18
+ r = r.to_s "F"
19
+ r.sub! /(?:(\.)([0-9]+))?\z/ do
20
+ (@sep||$1) + ($2.to_s.ljust @decs, "0")
21
+ end
22
+ when Integer then
23
+ r = r.to_s
24
+ end
25
+ r
26
+ end
27
+
28
+ def reset!
29
+ @result = nil
30
+ end
31
+
32
+ def decs= d ; @decs = Integer d ; end
33
+
34
+ def dot! ; @sep = "." ; end
35
+ def dot? ; @sep == "." ; end
36
+ def comma! ; @sep = "," ; end
37
+ def comma? ; @sep == "," ; end
38
+ def auto! ; @sep = nil ; end
39
+
40
+ def add line
41
+ line = line.chomp
42
+ line.slice! /#.*/
43
+ if $& =~ /!(\w+)/ then
44
+ case $1
45
+ when "c", "comma", "k", "komma" then comma!
46
+ when "d", "dot", "p", "point" then dot!
47
+ when "a", "auto" then auto!
48
+ when /\A\d+\z/ then @decs = $1.to_i
49
+ end
50
+ end
51
+ line.slice! /^.*:/
52
+ line.strip!
53
+ line.notempty? or return
54
+
55
+ products = []
56
+ line.split /(?:[;|&]|\s+[,+-]\s+)/ do |p|
57
+ products.push [ (split_products p), $& =~ /-/]
58
+ end
59
+
60
+ minus = false
61
+ products.each { |p,nm|
62
+ if not @result then @result = p
63
+ elsif minus then @result -= p
64
+ else @result += p
65
+ end
66
+ minus = nm
67
+ }
68
+ @result
69
+ end
70
+
71
+ private
72
+
73
+ def split_products p
74
+ nums = []
75
+ p.split /[*\/]/ do |n|
76
+ nums.push [ (parse_number n), $& == "/"]
77
+ end
78
+
79
+ inv = false
80
+ prod = nil
81
+ nums.each { |n,ni|
82
+ if not prod then prod = n
83
+ elsif inv then prod /= n
84
+ else prod *= n
85
+ end
86
+ inv = ni
87
+ }
88
+ @prev = prod
89
+ end
90
+
91
+ def parse_number n
92
+ n.strip!
93
+ if n =~ %r/ *%\z/ then
94
+ @prev * (BigDecimal $`) / 100
95
+ else
96
+ comma! if not @sep and n =~ /\d,(?:-|\d+\b(?:[^.]|$))/
97
+ if @sep == "," then n.gsub! ".", "_" ; n.sub! @sep, "."
98
+ else n.gsub! ",", "_"
99
+ end
100
+ if n =~ /\.-/ then
101
+ n = $`
102
+ @decs ||= 2
103
+ elsif n =~ /\.(\d*)/ then
104
+ d = $1.length
105
+ @decs = d if not @decs or @decs < d
106
+ end
107
+ @decs.nonzero? ? (BigDecimal n) : (Integer n)
108
+ end
109
+ end
110
+
111
+ end
112
+
113
+ end
114
+
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.3.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-10-04 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.19
64
65
  signing_key:
65
66
  specification_version: 4
66
67
  summary: Yet another Ruby client for Neovim