晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/alt/ruby18/lib64/ruby/1.8/rdoc/ri/ |
| Current File : //opt/alt/ruby18/lib64/ruby/1.8/rdoc/ri/ri_util.rb |
######################################################################
class RiError < Exception; end
#
# Break argument into its constituent class or module names, an
# optional method type, and a method name
class NameDescriptor
attr_reader :class_names
attr_reader :method_name
# true and false have the obvious meaning. nil means we don't care
attr_reader :is_class_method
# arg may be
# 1. a class or module name (optionally qualified with other class
# or module names (Kernel, File::Stat etc)
# 2. a method name
# 3. a method name qualified by a optionally fully qualified class
# or module name
#
# We're fairly casual about delimiters: folks can say Kernel::puts,
# Kernel.puts, or Kernel\#puts for example. There's one exception:
# if you say IO::read, we look for a class method, but if you
# say IO.read, we look for an instance method
def initialize(arg)
@class_names = []
separator = nil
tokens = arg.split(/(\.|::|#)/)
# Skip leading '::', '#' or '.', but remember it might
# be a method name qualifier
separator = tokens.shift if tokens[0] =~ /^(\.|::|#)/
# Skip leading '::', but remember we potentially have an inst
# leading stuff must be class names
while tokens[0] =~ /^[A-Z]/
@class_names << tokens.shift
unless tokens.empty?
separator = tokens.shift
break unless separator == "::"
end
end
# Now must have a single token, the method name, or an empty
# array
unless tokens.empty?
@method_name = tokens.shift
# We may now have a trailing !, ?, or = to roll into
# the method name
if !tokens.empty? && tokens[0] =~ /^[!?=]$/
@method_name << tokens.shift
end
if @method_name =~ /::|\.|#/ or !tokens.empty?
raise RiError.new("Bad argument: #{arg}")
end
if separator && separator != '.'
@is_class_method = separator == "::"
end
end
end
# Return the full class name (with '::' between the components)
# or "" if there's no class name
def full_class_name
@class_names.join("::")
end
end
|