pp 0.3.0 → 0.4.0

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 (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