smart_colored 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.2
1
+ 1.1.0
@@ -20,6 +20,10 @@ module SmartColored
20
20
 
21
21
  CLEAR_SEQUENCE = "\e[0m"
22
22
 
23
+ def width
24
+ gsub(/\e\[\d+(?:;\d+)*m/, '').length
25
+ end
26
+
23
27
  def apply_format(format = {})
24
28
  apply_attributes = {}
25
29
  if color = COLOR_CODES[format[:color]]
@@ -37,7 +41,7 @@ module SmartColored
37
41
  previous_attributes = {}
38
42
  clear_sequence = false
39
43
  str = "#{CLEAR_SEQUENCE}#{self}"
40
- str.gsub!(/(?:(?:\e\[\d+(?:;\d+)*m)+)/) do |m|
44
+ str.gsub!(/(?:\e\[\d+(?:;\d+)*m)+/) do |m|
41
45
  unless $'.empty?
42
46
  codes = m.scan(/\d+/).map(&:to_i).uniq
43
47
  sequence_attributes = {}
@@ -92,7 +96,7 @@ module SmartColored
92
96
  end
93
97
 
94
98
  PART_REGEXP = "(?:on_)?(?:#{COLOR_CODES.keys.join('|')})|#{FORMAT_CODES.keys.join('|')}"
95
- COMBINED_REGEXP = /^#{PART_REGEXP}{2,}$/
99
+ COMBINED_REGEXP = /^(?:(?:#{PART_REGEXP})_){2,}$/
96
100
  COMBINED_REGEXP_PART = /#{PART_REGEXP}/
97
101
 
98
102
  def method_missing(method, *arguments, &block)
@@ -4,12 +4,12 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{smart_colored}
8
- s.version = "1.0.2"
7
+ s.name = "smart_colored"
8
+ s.version = "1.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ivan Kuchin"]
12
- s.date = %q{2011-02-14}
12
+ s.date = "2011-10-18"
13
13
  s.extra_rdoc_files = [
14
14
  "LICENSE.txt",
15
15
  "README.markdown"
@@ -26,15 +26,11 @@ Gem::Specification.new do |s|
26
26
  "spec/smart_colored_spec.rb",
27
27
  "spec/spec_helper.rb"
28
28
  ]
29
- s.homepage = %q{http://github.com/toy/smart_colored}
29
+ s.homepage = "http://github.com/toy/smart_colored"
30
30
  s.licenses = ["MIT"]
31
31
  s.require_paths = ["lib"]
32
- s.rubygems_version = %q{1.5.0}
33
- s.summary = %q{Color and formatting in terminal}
34
- s.test_files = [
35
- "spec/smart_colored_spec.rb",
36
- "spec/spec_helper.rb"
37
- ]
32
+ s.rubygems_version = "1.8.11"
33
+ s.summary = "Color and formatting in terminal"
38
34
 
39
35
  if s.respond_to? :specification_version then
40
36
  s.specification_version = 3
@@ -15,6 +15,24 @@ describe SmartColored do
15
15
  end
16
16
  end
17
17
 
18
+ describe "width" do
19
+ it "should return width for unformatted string" do
20
+ 'string'.width.should == 'string'.length
21
+ end
22
+
23
+ it "should return width of red string" do
24
+ 'string'.red.width.should == 'string'.length
25
+ end
26
+
27
+ it "should return width of bold underline cyan string" do
28
+ 'string'.bold_underline_cyan.width.should == 'string'.length
29
+ end
30
+
31
+ it "should return width of complex formatted string" do
32
+ "#{"on yellow #{'red underlined'.red.underline} on yellow".on_yellow} #{"bold red".bold.red} blue inversed".blue.inverse.width.should == "on yellow red underlined on yellow bold red blue inversed".length
33
+ end
34
+ end
35
+
18
36
  describe "simple" do
19
37
  it "should apply none" do
20
38
  'clear'.apply_format.should == 'clear'
@@ -89,7 +107,7 @@ describe SmartColored do
89
107
  end
90
108
 
91
109
  it "should apply bold, underlined, cyan on yellow" do
92
- %w[bold underlined cyan on_yellow].permutation.each do |parts|
110
+ %w[bold underline cyan on_yellow].permutation.each do |parts|
93
111
  'bold underlined cyan'.send(parts.join('_')).should == "\e[1;4;36;43m" 'bold underlined cyan' "\e[0m"
94
112
  end
95
113
  end
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
+ - 1
8
9
  - 0
9
- - 2
10
- version: 1.0.2
10
+ version: 1.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ivan Kuchin
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-14 00:00:00 +03:00
19
- default_executable:
18
+ date: 2011-10-18 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: jeweler
@@ -82,7 +81,6 @@ files:
82
81
  - smart_colored.gemspec
83
82
  - spec/smart_colored_spec.rb
84
83
  - spec/spec_helper.rb
85
- has_rdoc: true
86
84
  homepage: http://github.com/toy/smart_colored
87
85
  licenses:
88
86
  - MIT
@@ -112,10 +110,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
110
  requirements: []
113
111
 
114
112
  rubyforge_project:
115
- rubygems_version: 1.5.0
113
+ rubygems_version: 1.8.11
116
114
  signing_key:
117
115
  specification_version: 3
118
116
  summary: Color and formatting in terminal
119
- test_files:
120
- - spec/smart_colored_spec.rb
121
- - spec/spec_helper.rb
117
+ test_files: []
118
+