晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/alt/ruby18/lib64/ruby/1.8/irb/ |
| Current File : //opt/alt/ruby18/lib64/ruby/1.8/irb/notifier.rb |
#
# notifier.rb - output methods used by irb
# $Release Version: 0.9.5$
# $Revision: 16857 $
# $Date: 2008-06-06 17:05:24 +0900 (Fri, 06 Jun 2008) $
# by Keiju ISHITSUKA(keiju@ruby-lang.org)
#
# --
#
#
#
require "e2mmap"
require "irb/output-method"
module IRB
module Notifier
extend Exception2MessageMapper
def_exception :ErrUndefinedNotifier,
"undefined notifier level: %d is specified"
def_exception :ErrUnrecognizedLevel,
"unrecognized notifier level: %s is specified"
def def_notifier(prefix = "", output_method = StdioOutputMethod.new)
CompositeNotifier.new(prefix, output_method)
end
module_function :def_notifier
class AbstructNotifier
def initialize(prefix, base_notifier)
@prefix = prefix
@base_notifier = base_notifier
end
attr_reader :prefix
def notify?
true
end
def print(*opts)
@base_notifier.print prefix, *opts if notify?
end
def printn(*opts)
@base_notifier.printn prefix, *opts if notify?
end
def printf(format, *opts)
@base_notifier.printf(prefix + format, *opts) if notify?
end
def puts(*objs)
if notify?
@base_notifier.puts(*objs.collect{|obj| prefix + obj.to_s})
end
end
def pp(*objs)
if notify?
@base_notifier.ppx @prefix, *objs
end
end
def ppx(prefix, *objs)
if notify?
@base_notifier.ppx @prefix+prefix, *objs
end
end
def exec_if
yield(@base_notifier) if notify?
end
end
class CompositeNotifier<AbstructNotifier
def initialize(prefix, base_notifier)
super
@notifiers = [D_NOMSG]
@level_notifier = D_NOMSG
end
attr_reader :notifiers
def def_notifier(level, prefix = "")
notifier = LeveledNotifier.new(self, level, prefix)
@notifiers[level] = notifier
notifier
end
attr_reader :level_notifier
alias level level_notifier
def level_notifier=(value)
case value
when AbstructNotifier
@level_notifier = value
when Integer
l = @notifiers[value]
Notifier.Raise ErrUndefinedNotifer, value unless l
@level_notifier = l
else
Notifier.Raise ErrUnrecognizedLevel, value unless l
end
end
alias level= level_notifier=
end
class LeveledNotifier<AbstructNotifier
include Comparable
def initialize(base, level, prefix)
super(prefix, base)
@level = level
end
attr_reader :level
def <=>(other)
@level <=> other.level
end
def notify?
@base_notifier.level >= self
end
end
class NoMsgNotifier<LeveledNotifier
def initialize
@base_notifier = nil
@level = 0
@prefix = ""
end
def notify?
false
end
end
D_NOMSG = NoMsgNotifier.new
end
end
|