motion_print 1.1.2 → 1.2.0

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: c772e0187fe937a271a34d698929e4bca9635fb5
4
- data.tar.gz: fdd45786552ffd36d249080f21c1f2ad07451627
3
+ metadata.gz: 4557eb04c62bc6167ce65690d2961282035af816
4
+ data.tar.gz: 8cd9c998fa66752736a4406ec96c3abe8dc45319
5
5
  SHA512:
6
- metadata.gz: 61ff97c12ed2f2e2b15fcfb4d2d31e62e381964e9f77c75bc5a67237da99fd470f7bef2a3540b5754ee3a6dc56105edd208c7f81592174b7e97da952716a0e62
7
- data.tar.gz: 1c0f33c77c747e2750770ab463d9676fda9e38dce307d76a2c579be3fa02b1e210f3519d38f1b78946493ef699245a99d9bfc551690128862c2d0b091cb7d189
6
+ metadata.gz: c3e083b5223cf9116fd2afb930ea4c056eb1caece75f29bb83c13efe5ba9118bdad9bf0eebcae2b31338debc3175f2ed8028864c3cf12dd64f1883824db24fec
7
+ data.tar.gz: 9ea84fbd1e435b993c92d56d9f8f24a0ea2d92187195246ac33ad8acfc31649f8019c91ffe467ca99f60f5acc7a3a220c5a80e25f20394ce12999c7369f64a14
data/README.md CHANGED
@@ -126,7 +126,7 @@ That, coupled with the fact that the developer of awesome_print_motion doesn't s
126
126
 
127
127
  `awesome_print_motion` is 793 lines of code and extends `Array`, `Kernel`, `Class`, and `Object`, and is _not_ tested.
128
128
 
129
- `motion_print` is 152 lines of code, adds one method each to `String`, and `Kernel`, and is _fully_ tested (run `rake spec` to see the tests pass).
129
+ `motion_print` is 174 lines of code, adds one method each to `String`, and `Kernel`, and is _fully_ tested (run `rake spec` to see the tests pass).
130
130
 
131
131
  ## Contributing
132
132
 
@@ -8,7 +8,8 @@ module MotionPrint
8
8
  def logger(object, options = {})
9
9
  options = {
10
10
  indent_level: 1,
11
- force_color: nil
11
+ force_color: nil,
12
+ ivar: true
12
13
  }.merge(options)
13
14
 
14
15
  case object
@@ -87,11 +88,38 @@ module MotionPrint
87
88
  else
88
89
  return colorize(object.motion_print, options[:force_color])
89
90
  end
91
+ elsif object.respond_to?(:instance_variables) && !object.instance_variables.empty?
92
+ return l_instance_variables(object, options)
90
93
  end
91
94
 
92
95
  colorize(object, options[:force_color])
93
96
  end
94
97
 
98
+ # Output a list of instance variables. only allows one level to avoid excessive output
99
+ # and circular references. Will also show a different color for instance variables that
100
+ # have accessors or not.
101
+ def l_instance_variables(object, options)
102
+ ivars = object.instance_variables.reject {|item| !item.to_s.start_with?('@')} # only allow proper instance variables
103
+ return colorize(object, options[:force_color]) if !options[:ivar] || ivars.empty?
104
+ data = []
105
+ out = [class_address(object, options[:force_color])]
106
+
107
+ ivars.each do |ivar|
108
+ use_color = object.respond_to?(ivar.to_s[1..-1]) ? colors[:method] : colors[:ivar]
109
+ data << [logger(ivar, options.merge({force_color: specific_color(use_color, options)})), ivar]
110
+ end
111
+
112
+ width = data.map { |ivar_str, | ivar_str.size }.max || 0
113
+ width += indent_by(options[:indent_level]).length
114
+
115
+ data.each do |ivar_str, ivar|
116
+ out << (align(ivar_str, width, options[:indent_level]) << hash_rocket(options[:force_color]) <<
117
+ logger(object.instance_variable_get(ivar), options.merge({ivar: false, force_color: specific_color(:pale, options)})))
118
+ end
119
+
120
+ out.join("\n") << "\n#{indent_by(options[:indent_level] - 1)}"
121
+ end
122
+
95
123
  def colorize(object, force_color = nil)
96
124
  Colorizer.send(force_color || decide_color(object), object.inspect)
97
125
  end
@@ -100,9 +128,17 @@ module MotionPrint
100
128
  Colorizer.send(force_color || decide_color(:hash), " => ")
101
129
  end
102
130
 
131
+ def class_address(object, force_color = nil)
132
+ Colorizer.send(force_color || colors[:class], "#<#{object.class}:0x%08x>" % (object.object_id))
133
+ end
134
+
103
135
  def decide_color(object)
104
136
  colors[object.class.to_s.downcase.to_sym] || :white
105
137
  end
138
+
139
+ def specific_color(color, options)
140
+ options[:force_color] || color
141
+ end
106
142
 
107
143
  def colors
108
144
  {
@@ -125,7 +161,8 @@ module MotionPrint
125
161
  time: :greenish,
126
162
  trueclass: :green,
127
163
  variable: :cyanish,
128
- dir: :white
164
+ dir: :white,
165
+ ivar: :cyanish
129
166
  }
130
167
  end
131
168
 
@@ -1,3 +1,3 @@
1
1
  module MotionPrint
2
- VERSION = "1.1.2"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motion_print
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Rickert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-28 00:00:00.000000000 Z
11
+ date: 2015-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bacon