dye 0.1.1 → 0.1.2

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.
Files changed (6) hide show
  1. data/README.rdoc +8 -1
  2. data/VERSION +1 -1
  3. data/dye.gemspec +1 -1
  4. data/lib/dye.rb +15 -4
  5. data/test/raw_sgr.irt +18 -0
  6. metadata +6 -23
data/README.rdoc CHANGED
@@ -44,6 +44,13 @@ Easy ANSI code coloring for strings in libraries.
44
44
  # back to plain text
45
45
  plain_text = Dye.strip_ansi(ansi_string)
46
46
 
47
+ # raw SGR escape sequences
48
+ Dye.sgr(:cyan) #=> "\e[36m"
49
+ # strict_ansi?
50
+ Dye.sgr(:cyan, :bold) #=> "\e[36;1m"
51
+ # !strict_ansi?
52
+ Dye.sgr(:cyan, :bold) #=> "\e[36m\e[1m"
53
+
47
54
  === Feedback!!!
48
55
 
49
56
  This is feedback-driven software. Just send me a line about you and/or what you think about it:
@@ -54,7 +61,7 @@ My email address is ddnexus at gmail.com ... waiting for your. Ciao.
54
61
  == Features
55
62
 
56
63
  * Does not define methods in String
57
- * Allows you to define basic styles by just requiring the lib
64
+ * Allows you to set basic styles by just requiring the lib
58
65
  * Allows you to easily add your own custom styles
59
66
  * Allows extended (Select Graphic Rendition) parameters
60
67
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
data/dye.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.summary = 'Easy ANSI code coloring for strings in libraries'
11
11
  s.description = 'Dye adds the basic ANSI styles to any string, allowing also to define your own stiles'
12
12
 
13
- s.add_development_dependency('irt', [">= 1.0.0"])
13
+ s.add_development_dependency('irt', [">= 1.1.2"])
14
14
 
15
15
  s.files = `git ls-files -z`.split("\0")
16
16
 
data/lib/dye.rb CHANGED
@@ -54,6 +54,7 @@ module Dye
54
54
 
55
55
  @strict_ansi = !!ENV['DYE_STRICT_ANSI']
56
56
  attr_accessor :strict_ansi
57
+ alias_method :strict_ansi?, :strict_ansi
57
58
 
58
59
  def dye(*args)
59
60
  apply_styles( {}, *args )
@@ -63,6 +64,12 @@ module Dye
63
64
  string.gsub(/\e\[[\d;]+m/, '')
64
65
  end
65
66
 
67
+ def sgr(*names)
68
+ return if names.empty?
69
+ codes = names.map{|n| sgr_to_code(n) }
70
+ strict_ansi? ? "\e[#{codes.join(';')}m" : codes.map{|c| "\e[#{c}m" }.join
71
+ end
72
+
66
73
  private
67
74
 
68
75
  def apply_styles(custom_styles, *args)
@@ -77,13 +84,11 @@ module Dye
77
84
  sgr = [sgr] unless sgr.is_a?(Array)
78
85
  sgr.map do |n|
79
86
  next if n.nil?
80
- code = n.is_a?(Symbol) ? BASIC_SGR[n] : n
81
- raise UnknownSgrCode.new(n) unless code.is_a?(Integer) && (0..109).include?(code)
82
- code
87
+ sgr_to_code(n)
83
88
  end
84
89
  end.flatten.compact
85
90
  return string if codes.empty?
86
- if strict_ansi
91
+ if strict_ansi?
87
92
  string.match(/^\e\[[\d;]+m.*\e\[0m$/m) ?
88
93
  string.sub(/^(\e\[[\d;]+)/, '\1;' + codes.join(';')) :
89
94
  sprintf("\e[0;%sm%s\e[0m", codes.join(';'), string)
@@ -94,4 +99,10 @@ module Dye
94
99
  end
95
100
  end
96
101
 
102
+ def sgr_to_code(name)
103
+ code = name.is_a?(Symbol) ? BASIC_SGR[name] : name
104
+ raise UnknownSgrCode.new(n) unless code.is_a?(Integer) && (0..109).include?(code)
105
+ code
106
+ end
107
+
97
108
  end
data/test/raw_sgr.irt ADDED
@@ -0,0 +1,18 @@
1
+ desc 'one code strict'
2
+ Dye.sgr(:cyan)
3
+ _eql?( "\e[36m" )
4
+
5
+ desc 'two codes strict'
6
+ Dye.sgr(:cyan, :bold)
7
+ _eql?( "\e[36;1m" )
8
+
9
+ Dye.strict_ansi = false
10
+
11
+ desc 'one code no strict'
12
+ Dye.sgr(:cyan)
13
+ _eql?( "\e[36m" )
14
+
15
+ desc 'two codes no strict'
16
+ Dye.sgr(:cyan, :bold)
17
+ _eql?( "\e[36m\e[1m" )
18
+
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dye
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
4
+ prerelease:
5
+ version: 0.1.2
11
6
  platform: ruby
12
7
  authors:
13
8
  - Domizio Demichelis
@@ -15,7 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-02-01 00:00:00 -04:00
13
+ date: 2011-02-02 00:00:00 -04:00
19
14
  default_executable:
20
15
  dependencies:
21
16
  - !ruby/object:Gem::Dependency
@@ -26,12 +21,7 @@ dependencies:
26
21
  requirements:
27
22
  - - ">="
28
23
  - !ruby/object:Gem::Version
29
- hash: 23
30
- segments:
31
- - 1
32
- - 0
33
- - 0
34
- version: 1.0.0
24
+ version: 1.1.2
35
25
  type: :development
36
26
  version_requirements: *id001
37
27
  description: Dye adds the basic ANSI styles to any string, allowing also to define your own stiles
@@ -54,6 +44,7 @@ files:
54
44
  - test/custom.irt
55
45
  - test/irt_helper.rb
56
46
  - test/module.irt
47
+ - test/raw_sgr.irt
57
48
  - test/sgr.irt
58
49
  has_rdoc: true
59
50
  homepage: http://github.com/ddnexus/dye
@@ -69,25 +60,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
69
60
  requirements:
70
61
  - - ">="
71
62
  - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
63
  version: "0"
76
64
  required_rubygems_version: !ruby/object:Gem::Requirement
77
65
  none: false
78
66
  requirements:
79
67
  - - ">="
80
68
  - !ruby/object:Gem::Version
81
- hash: 23
82
- segments:
83
- - 1
84
- - 3
85
- - 6
86
69
  version: 1.3.6
87
70
  requirements: []
88
71
 
89
72
  rubyforge_project:
90
- rubygems_version: 1.3.7
73
+ rubygems_version: 1.5.0
91
74
  signing_key:
92
75
  specification_version: 3
93
76
  summary: Easy ANSI code coloring for strings in libraries