1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/prettyprint.rb (PrettyPrint#seplist): added.

* lib/pp.rb (PPMethods#pp_object): use seplist.
  (PPMethods#pp_hash): ditto.
  (Array#pretty_print): ditto.
  (Struct#pretty_print): ditto.
  (MatchData#pretty_print): ditto.

* lib/set.rb (Set#pretty_print): use seplist.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5623 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2004-02-05 14:59:46 +00:00
parent 90d8cbb1ee
commit 0c792a32b7
4 changed files with 32 additions and 19 deletions

View file

@ -1,3 +1,15 @@
Thu Feb 5 23:56:55 2004 Tanaka Akira <akr@m17n.org>
* lib/prettyprint.rb (PrettyPrint#seplist): added.
* lib/pp.rb (PPMethods#pp_object): use seplist.
(PPMethods#pp_hash): ditto.
(Array#pretty_print): ditto.
(Struct#pretty_print): ditto.
(MatchData#pretty_print): ditto.
* lib/set.rb (Set#pretty_print): use seplist.
Wed Feb 4 22:39:46 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (rb_stat_mode): should not sign-expand, so backout.

View file

@ -203,10 +203,9 @@ class PP < PrettyPrint
def pp_object(obj)
object_address_group(obj) {
obj.pretty_print_instance_variables.each {|v|
v = v.to_s if Symbol === v
text ',' unless first?
seplist(obj.pretty_print_instance_variables, lambda { text ',' }) {|v|
breakable
v = v.to_s if Symbol === v
text v
text '='
group(1) {
@ -219,8 +218,7 @@ class PP < PrettyPrint
def pp_hash(obj)
group(1, '{', '}') {
obj.each {|k, v|
comma_breakable unless first?
seplist(obj, nil, :each_pair) {|k, v|
group {
pp k
text '=>'
@ -279,8 +277,7 @@ end
class Array
def pretty_print(q)
q.group(1, '[', ']') {
self.each {|v|
q.comma_breakable unless q.first?
q.seplist(self) {|v|
q.pp v
}
}
@ -310,8 +307,7 @@ end
class Struct
def pretty_print(q)
q.group(1, '#<struct ' + self.class.name, '>') {
self.members.each {|member|
q.text "," unless q.first?
q.seplist(self.members, lambda { q.text "," }) {|member|
q.breakable
q.text member.to_s
q.text '='
@ -420,8 +416,7 @@ class MatchData
def pretty_print(q)
q.object_group(self) {
q.breakable
1.upto(self.size) {|i|
q.breakable unless q.first?
q.seplist(1..self.size, lambda { q.breakable }) {|i|
q.pp self[i-1]
}
}

View file

@ -159,6 +159,19 @@ class PrettyPrint
@group_stack.last
end
def seplist(list, sep=nil, iter_method=:each)
sep ||= lambda { comma_breakable }
first = true
list.__send__(iter_method) {|*v|
if first
first = false
else
sep.call
end
yield(*v)
}
end
def first?
current_group.first?
end

View file

@ -418,14 +418,7 @@ class Set
def pretty_print(pp) # :nodoc:
pp.text sprintf('#<%s: {', self.class.name)
pp.nest(1) {
first = true
each { |o|
if first
first = false
else
pp.text ","
pp.breakable
end
pp.seplist(self) { |o|
pp.pp o
}
}