markw-dmenu 1.0.0 → 1.1.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 +4 -4
- data/dmenu.gemspec +3 -2
- data/lib/dmenu.rb +21 -8
- data/lib/test.rb +17 -0
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4970b9671c550168bff003f3d5abcc252d83768
|
4
|
+
data.tar.gz: 7611b44957a330b91861133914ff9d26e1756693
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 300bead8873d4137a9958bb88575e65809cbae196a2db1a8342666b6f8626c74b0a37deda27ec463ef3a362ceb530e1b9d7ba127f286e886d5f26bbc16d5a889
|
7
|
+
data.tar.gz: b27278737605cc1d50a98dcbf4511347a0586e74ea8cbf1edfe547e2e9297a47c37e7beba80afc86da1877d4f0204171312b769a24f711c1cc1b73720d08466d
|
data/dmenu.gemspec
CHANGED
@@ -2,12 +2,13 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "markw-dmenu"
|
5
|
-
spec.version = "1.
|
5
|
+
spec.version = "1.1.0"
|
6
6
|
spec.authors = ["Mark Watts"]
|
7
7
|
spec.email = ["wattsmark2015@gmail.com"]
|
8
8
|
spec.summary = %q{A set of utilites for working with the dmenu command line tool.}
|
9
9
|
spec.homepage = "http://github.com/mwatts15/dmenu"
|
10
10
|
spec.license = "MPL-2.0"
|
11
|
+
spec.description = """Primarily for use by other things made by markw. Use at your own risk"""
|
11
12
|
spec.files = `git ls-files -z`.split("\x0")
|
12
13
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
13
14
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
@@ -15,5 +16,5 @@ Gem::Specification.new do |spec|
|
|
15
16
|
|
16
17
|
spec.add_development_dependency "bundler", "~> 1.7"
|
17
18
|
spec.add_development_dependency "rake", "~> 10.0"
|
18
|
-
spec.add_runtime_dependency "markw-wcwidth", "
|
19
|
+
spec.add_runtime_dependency "markw-wcwidth", "0.0.3"
|
19
20
|
end
|
data/lib/dmenu.rb
CHANGED
@@ -6,6 +6,7 @@ class String
|
|
6
6
|
force_encoding("utf-8")
|
7
7
|
end
|
8
8
|
end
|
9
|
+
|
9
10
|
module Dmenu
|
10
11
|
require 'wcwidth'
|
11
12
|
# Characters that, in the keyed fonts, are actually double width,
|
@@ -37,16 +38,28 @@ module Dmenu
|
|
37
38
|
res = ""
|
38
39
|
lr_separation = 4
|
39
40
|
textwidth = 2 * width / font_width - lr_separation
|
40
|
-
|
41
|
+
if !repl_chars.nil?
|
42
|
+
expr = %r{[^#{repl_chars}]+}
|
43
|
+
end
|
41
44
|
entries.collect! do |line|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
45
|
+
transformed_line = line.each_char.reject{|char| char.ord < 32 or (char.ord >= 0x7f and char.ord < 0xa0)}.inject(:+)
|
46
|
+
s = if !transformed_line.nil?
|
47
|
+
l, r = transformed_line.split("|||")
|
48
|
+
loff = 0
|
49
|
+
roff = 0
|
50
|
+
if !repl_chars.nil?
|
51
|
+
loff = l.gsub(expr, "").length
|
52
|
+
roff = r.nil? ? 0 : r.gsub(expr, "").length
|
53
|
+
end
|
54
|
+
scrunched = scrunch(r, [textwidth - l.width - lr_separation, textwidth / 2].max)
|
55
|
+
r ? alignr(l, scrunched, textwidth - loff - roff) : l
|
56
|
+
else
|
57
|
+
$stderr.puts "Couldn't list #{line.inspect}"
|
58
|
+
nil
|
59
|
+
end
|
48
60
|
s
|
49
|
-
end
|
61
|
+
end.reject! {|x| x.nil? or x.empty? or x.match(/\s+/) }
|
62
|
+
|
50
63
|
cmdline = "dmenu -f -p \"#{prompt}\" -nf \"#{fg_color}\" \
|
51
64
|
-nb \"#{bg_color}\" \
|
52
65
|
-sb \"#{sel_bg_color}\" \
|
data/lib/test.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'dmenu'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
class DmenuTest < Test::Unit::TestCase
|
7
|
+
include Dmenu
|
8
|
+
def test_1
|
9
|
+
assert_equal(10, Dmenu::scrunch("012345678901234567890", 10).width)
|
10
|
+
end
|
11
|
+
def test_2
|
12
|
+
assert(Dmenu::scrunch("患部で止まってすぐ溶ける ~ 狂気の優曇華院 (03:04)", 10).width <= 10)
|
13
|
+
end
|
14
|
+
def test_3
|
15
|
+
assert_not_nil(Dmenu::dmenu(%w<a b c>))
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: markw-dmenu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Watts
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -42,17 +42,17 @@ dependencies:
|
|
42
42
|
name: markw-wcwidth
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 0.0.3
|
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
54
|
version: 0.0.3
|
55
|
-
description:
|
55
|
+
description: Primarily for use by other things made by markw. Use at your own risk
|
56
56
|
email:
|
57
57
|
- wattsmark2015@gmail.com
|
58
58
|
executables: []
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- Gemfile
|
63
63
|
- dmenu.gemspec
|
64
64
|
- lib/dmenu.rb
|
65
|
+
- lib/test.rb
|
65
66
|
homepage: http://github.com/mwatts15/dmenu
|
66
67
|
licenses:
|
67
68
|
- MPL-2.0
|