pp 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pp.rb +32 -1
  3. data/pp.gemspec +1 -1
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0f66fc26d251e735dab9c7dcc24cbd90ec1616ac358535379358242dea131e5e
4
- data.tar.gz: a04b828096786c7d6de187bcacda6fdb7a3bf246b7dab7399347039feb9dedac
3
+ metadata.gz: 8d57757b241b923f8c7ebf7653855a01231720617dfb2ff9588c724a4968e698
4
+ data.tar.gz: 426b5c5d3132ac1aeea3e96cd5870c72ed5f730cc244a0b9139a46681c42c278
5
5
  SHA512:
6
- metadata.gz: a2b9327741655b4fa03bf3cd2d32113022b4164fdd48608cafdd3abe5b80e394d0fb8b3ebe2acb7818c60d68103ba5cb0900ba9e20d988baac3e311bb8424ace
7
- data.tar.gz: 6bceee1000233e7083f9e3e87aeba7bf28a257acc48a453e88d928bffe0180f65af0c3e70a636dfc9e33e1307c51831a03182308f2f18d51f0d10d53a79bfc9c
6
+ metadata.gz: 83e186173cf60aa175b3beee1bd4d8befd5b54743ab6c08c31d3088907f0a7ba84dfb2e97a91937db45346e8831b7152cb5c85127c83cb6787a997418bbaf98b
7
+ data.tar.gz: bc302f420467a0dc34e65bccd003bc979c8a5cf69005b34ed8140d687bfc73008a2f6f76bfc4b747b530ba43a799ceabea2b7eaa0ba7e56dfad05c7448d9c7bc
data/lib/pp.rb CHANGED
@@ -61,6 +61,16 @@ require 'prettyprint'
61
61
  # Tanaka Akira <akr@fsij.org>
62
62
 
63
63
  class PP < PrettyPrint
64
+ # Returns the usable width for +out+.
65
+ # As the width of +out+:
66
+ # 1. If +out+ is assigned to a tty device, its width is used.
67
+ # 2. Otherwise, or it could not get the value, the +COLUMN+
68
+ # environment variable is assumed to be set to the width.
69
+ # 3. If +COLUMN+ is not set to a non-zero number, 80 is assumed.
70
+ #
71
+ # And finally, returns the above width value - 1.
72
+ # * This -1 is for Windows command prompt, which moves the cursor to
73
+ # the next line if it reaches the last column.
64
74
  def PP.width_for(out)
65
75
  begin
66
76
  require 'io/console'
@@ -74,7 +84,8 @@ class PP < PrettyPrint
74
84
  # +width+ columns in width.
75
85
  #
76
86
  # If +out+ is omitted, <code>$></code> is assumed.
77
- # If +width+ is omitted, 79 is assumed.
87
+ # If +width+ is omitted, the width of +out+ is assumed (see
88
+ # width_for).
78
89
  #
79
90
  # PP.pp returns +out+.
80
91
  def PP.pp(obj, out=$>, width=width_for(out))
@@ -405,6 +416,26 @@ class Struct # :nodoc:
405
416
  end
406
417
  end
407
418
 
419
+ class Data # :nodoc:
420
+ def pretty_print(q) # :nodoc:
421
+ q.group(1, sprintf("#<data %s", PP.mcall(self, Kernel, :class).name), '>') {
422
+ q.seplist(PP.mcall(self, Data, :members), lambda { q.text "," }) {|member|
423
+ q.breakable
424
+ q.text member.to_s
425
+ q.text '='
426
+ q.group(1) {
427
+ q.breakable ''
428
+ q.pp public_send(member)
429
+ }
430
+ }
431
+ }
432
+ end
433
+
434
+ def pretty_print_cycle(q) # :nodoc:
435
+ q.text sprintf("#<data %s:...>", PP.mcall(self, Kernel, :class).name)
436
+ end
437
+ end if "3.2" <= RUBY_VERSION
438
+
408
439
  class Range # :nodoc:
409
440
  def pretty_print(q) # :nodoc:
410
441
  q.pp self.begin
data/pp.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "pp"
3
- spec.version = "0.3.0"
3
+ spec.version = "0.4.0"
4
4
  spec.authors = ["Tanaka Akira"]
5
5
  spec.email = ["akr@fsij.org"]
6
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tanaka Akira
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-12-20 00:00:00.000000000 Z
11
+ date: 2022-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: prettyprint
@@ -56,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0'
58
58
  requirements: []
59
- rubygems_version: 3.3.0.dev
59
+ rubygems_version: 3.4.0.dev
60
60
  signing_key:
61
61
  specification_version: 4
62
62
  summary: Provides a PrettyPrinter for Ruby objects