fun_with_string_colors 0.0.2 → 0.0.3

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDgyMGU1MzMyNWY3MzIwNWY4NGFjZTk3NGRhNmI4Yjk2NjRjMThkNg==
4
+ ZjZhNjlhZDM0MmFkYTg1NjhmOGU3MmI0NjcyMDVlNTY0ZjlmZWRjMg==
5
5
  data.tar.gz: !binary |-
6
- Yjk0YzUzZDIyYWM5YjdlOTc5YzAzMTI5YzYxYTNjMGEzZWIwNjc3Mw==
6
+ OWNjZDhiZWQ2MWFjYmY1MDk2YmJjOGVkMmYxOWEzNDE2ZmRkOTIyZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZWZlNzgyZDJmOTMzNDZjMDEzZmFlMWIyYTk2M2FlNDY4NWI1OTMzYWE3Yzkw
10
- ZmQ5ZjA3NzFlZTQyMjVkOWE5NTQ3MzFmNzg4ZDc2ZjBkM2QzMDlmZGZjYTI5
11
- NjA5NDRiNGU0ODI5Y2Y4M2NlOGNmM2RmMjMwOWY0M2NkZTdhMmM=
9
+ ZDI5NzJiNmU2M2E2ZTgyMWU2NGY4ZTFhMzE4YzY1OWZkNTk2OGU1ZDkzOTc5
10
+ MmJjZmQyNjg0NzljYjNkNWZhZGQzMDJhMWI2NGE1ZWQ0OGM5ZDIzM2M0NzE2
11
+ M2JmNTMzMTFiNmYwMmJkMjE1OWJkMTk4MDFmZjhhNjc0MGRlNWQ=
12
12
  data.tar.gz: !binary |-
13
- NDhmYzdhMTU3MThkNzg3ODU4OWZhNWQxNzM1NTQ3NDRkNDI5YWE5MzlhMzNh
14
- YmNkZmU2MjkwMDhkMGI1ZmMyNmZhMDkyNjUyMTliMGE2NjIzZWYwMTg4Njll
15
- ZDhiMjJlZGRhZmZhMDZkMzc0ZWMwOGY1MmY4NzBmMzkzOWYyOGY=
13
+ Njg3OGM2ZmZlZmRiOGI3Nzc5OTU1ZDc4ZTI4MDhlZTYwMDExYzVjNWI5MjQ3
14
+ OTFhYmQxODJmY2Y1NmQ2MTQxMGQ2YzE0M2FhY2Y5MWU1YmIwNDQ4MDE4MzUz
15
+ ZDI1NzZmN2Y2M2Y2MjcwMTJiYmZhMTAwNjBlOWMwZmJkMjNiNDU=
@@ -0,0 +1,14 @@
1
+ 0.0.3
2
+ -----
3
+
4
+ Changed the internals around, added regex highlighting functionality. See examples in README.rdoc.
5
+
6
+ 0.0.2
7
+ -----
8
+
9
+ Expanded lexicon of decorations. All hail the `<blink>` tag! Removed a couple of methods.
10
+
11
+ 0.0.1
12
+ -----
13
+
14
+ Initial public offering. Get in while the getting is good.
data/README.rdoc CHANGED
@@ -1,12 +1,22 @@
1
1
  = fun_with_string_colors
2
2
 
3
- Paint your strings for prettier console output
4
-
5
- require 'fun_with_color_strings'
6
-
7
- FunWith::StringColors.activate
8
- String.colorize( true )
9
- puts "Hello World".paint(:pink)
3
+ Paint your strings for prettier console output. Behold! The Code of Exampleage!
4
+
5
+ require 'fun_with_string_colors'
6
+
7
+ FunWith::StringColors.activate # imports functions into String
8
+ String.colorize( true ) # Yes, we want those functions to add color codes to strings.
9
+ String.colorize( STDOUT.tty? ) # only alter strings if we're in TTY (console)
10
+
11
+ puts "Hello World".paint(:pink) # Pretty shiny!
12
+ puts "Hello World".paint(:bg_red, :blue, :bold, :underline, :blink) # An affront to God and Man, I tells ya.
13
+
14
+ # If your first arg to .paint() is a regular expression, only the matches will be colored in. Useful!
15
+ puts "Hello World".paint(/hello/i, :bg_red).paint(/world/i, :bg_blue, :reverse, :underline)
16
+ String.paint? # Is painting active?
17
+ "".paint? # Same question. One setting controls all strings.
18
+
19
+ puts String::ANSI_COLORS.keys.inspect # What symbols does paint recognize?
10
20
 
11
21
 
12
22
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -36,12 +36,21 @@ module FunWith
36
36
  :reverse => "\e[27m",
37
37
  7 => "\e[27m",
38
38
  :bold => "\e[22m",
39
- 1 => "\e[22m"
39
+ 1 => "\e[22m",
40
+ :color => "\e[0m"
40
41
  }
41
42
 
43
+ # Note: use :reset and :unpaint in isolation (no other args). It will nullify everything prior.
42
44
  def paint( *colors )
43
45
  if paint?
46
+ # debugger if colors.first == "95"
47
+ # puts "\e[27m\e[0m\e[22mcalling paint(*#{colors.inspect})"
48
+
49
+ colors.flatten!
50
+ highlight_regex = colors.first.is_a?(Regexp) ? colors.shift : nil
51
+
44
52
  rval = self.dup
53
+ prependers = []
45
54
  terminations = []
46
55
 
47
56
  for color in colors
@@ -49,21 +58,28 @@ module FunWith
49
58
  when :reset, :unpaint
50
59
  regex = /\e\[\d+m/
51
60
  rval = rval.gsub( regex, '' )
61
+ prependers = []
52
62
  terminations = []
53
63
  when Symbol
54
64
  if ANSI_COLORS[color]
55
- rval = "\e[#{ANSI_COLORS[color]}m#{rval}"
56
- terminations << (ANSI_COLOR_TERMINATORS[color] || "\e[0m")
65
+ prependers << "\e[#{ANSI_COLORS[color]}m"
66
+ terminations << (ANSI_COLOR_TERMINATORS[color] || ANSI_COLOR_TERMINATORS[:color])
57
67
  end
58
68
  when /^\d+$/, Integer # you can give numbers/number strings directly
59
- rval = "\e[#{ANSI_COLORS[color] || color}m#{rval}"
60
- terminations << (ANSI_COLOR_TERMINATORS[color.to_i] || "\e[0m")
69
+ prependers << "\e[#{ANSI_COLORS[color] || color}m"
70
+ terminations << (ANSI_COLOR_TERMINATORS[color.to_i] || ANSI_COLOR_TERMINATORS[:color])
61
71
  end
62
72
  end
63
-
64
- rval + terminations.uniq.join
73
+
74
+ if highlight_regex.nil?
75
+ #puts "prependers #{prependers.inspect}"
76
+ #puts "terminations #{terminations.inspect}"
77
+ prependers.join + rval + terminations.join
78
+ else
79
+ rval.gsub( /(#{highlight_regex})/, prependers.join + "\\1" + terminations.join )
80
+ end
65
81
  else
66
- self
82
+ self.dup # Since it returns a duplicate of the original when in paint mode, this is more consistent behavior
67
83
  end
68
84
  end
69
85
 
@@ -38,4 +38,16 @@ class TestFunWithStringColors < FunWith::StringColors::TestCase
38
38
  should "not alter output when .paint() receives nil/unrecognized" do
39
39
  assert_equal "hello", "hello".paint(nil)
40
40
  end
41
+
42
+ should "highlight!" do
43
+ str = "Should highlight the number in brackets: 0 1 2 3 (4) 5"
44
+ puts str.paint( /4/, :bg_red, :bold )
45
+
46
+ str = "Should highlight the numbers in brackets: 0 1 2 3 (4) 5 6 (7)"
47
+ puts str.paint( /4/, :bg_red, :bold ).paint( /7/, :bg_blue )
48
+
49
+ str = "Should highlight all the numbers: 0 1 2 3 4 5 6 7"
50
+ puts str.paint( /\d+/, :bg_red, :bold ).paint( /7/, :bg_blue )
51
+
52
+ end
41
53
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fun_with_string_colors
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryce Anderson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-17 00:00:00.000000000 Z
11
+ date: 2014-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fun_with_testing
@@ -34,6 +34,7 @@ extra_rdoc_files:
34
34
  - README.rdoc
35
35
  files:
36
36
  - .document
37
+ - CHANGELOG.markdown
37
38
  - Gemfile
38
39
  - LICENSE.txt
39
40
  - README.rdoc