mb_string 0.1.1 → 0.1.2

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
  SHA1:
3
- metadata.gz: fbd32c3eec62098ccbf1700f04739de5911e10c3
4
- data.tar.gz: 73beacd1999603039ce7d4051c7bc758a7c451d1
3
+ metadata.gz: 40a3d7b7a1fe61dd390df2fc93dfdf2d7b700f47
4
+ data.tar.gz: 7a081de0e2a80978feca7828647bdabbf25245a8
5
5
  SHA512:
6
- metadata.gz: bd2b849e980b1a0d205a55af766cff4a1b99764c5c4a133ec1967159787b4782d413e1a5d49b5ce50659bfae410963a494a668079b80f3d1bcfa0add359e9209
7
- data.tar.gz: ff913091b15e6cc4346ed5d4e3399080d85c26a67b2d42b744cdf1c47c040a9528a76c42b34eb4f26428daf540ad7ccb39384a4a3c5166228c21968d6ee90dd0
6
+ metadata.gz: 5311b27cab2c3290970128a36ec751bc3abc927e9db011480c5b6a629f58208863a04d86fa3fa4e580fc7551095d1cd41ad2377d2e50bf9e54358e44007a76fa
7
+ data.tar.gz: 34b3701a0464a1d3be2c41225103b12adecd71b2d97a1a2ac2edbc871c8c243f2d5ce7eba93ff924067e58a1bd37ce9d435df63a11c5fbc98d21fb0ba9acb61e
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ ## 0.1.2 (Tue Dec 1 2015)
2
+ * Add `mb_truncate` method [099f432]
3
+
4
+ ## 0.1.1 initial (Fri Nov 27 2015)
5
+ * Add `mb_rjust`, `mb_ljust` and `mb_center` methods
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # mb_string
2
2
 
3
- `mb_string` is extended Ruby string class for dealing multi-byte strings, add `mb_ljust`, `mb_rjust` and `mb_center` methods.
3
+ `mb_string` is extended Ruby string class for dealing multi-byte strings, add `mb_ljust`, `mb_rjust`, `mb_center` and `mb_truncate` methods.
4
4
 
5
5
  ## Installation
6
6
 
@@ -31,7 +31,14 @@ Or install it yourself as:
31
31
  "あいうえお".mb_ljust(20, 'ほげ')
32
32
  => "あいうえおほげほげほ"
33
33
 
34
+ `mb_truncate`:
34
35
 
36
+ require 'mb_string'
37
+ "あいうえお".mb_truncate(6)
38
+ => "あ..."
39
+
40
+ "あいうえお".mb_truncate(8, omission: 'ほげ')
41
+ => "あいほげ"
35
42
 
36
43
  ## Development
37
44
 
@@ -1,4 +1,6 @@
1
1
  require 'unicode/display_width'
2
+ # TODO: asciiかどうか判定する?
3
+ # TODO: circle ci
2
4
 
3
5
  class String
4
6
  def mb_ljust(width, pad_str = ' ')
@@ -25,6 +27,26 @@ class String
25
27
  end
26
28
  end
27
29
 
30
+ def mb_truncate(truncate_at, options = {})
31
+ return dup unless display_width > truncate_at
32
+
33
+ omission = options[:omission] || '...'
34
+ length_with_room_for_omission = truncate_at - omission.display_width
35
+
36
+ size = 0
37
+ slice = ''
38
+ each_char do |c|
39
+ char_size = c.display_width
40
+ if size + char_size > length_with_room_for_omission
41
+ slice << omission
42
+ break
43
+ end
44
+ size += char_size
45
+ slice << c
46
+ end
47
+ slice
48
+ end
49
+
28
50
  private
29
51
 
30
52
  def mb_execute(width)
@@ -1,3 +1,3 @@
1
1
  module MbString
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mb_string
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - rochefort
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-26 00:00:00.000000000 Z
11
+ date: 2015-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unicode-display_width
@@ -76,6 +76,7 @@ files:
76
76
  - ".gitignore"
77
77
  - ".rspec"
78
78
  - ".travis.yml"
79
+ - CHANGELOG.md
79
80
  - Gemfile
80
81
  - README.md
81
82
  - Rakefile