diff options
Diffstat (limited to 'ruby_1_8_6/lib/xsd/codegen/moduledef.rb')
-rw-r--r-- | ruby_1_8_6/lib/xsd/codegen/moduledef.rb | 191 |
1 files changed, 0 insertions, 191 deletions
diff --git a/ruby_1_8_6/lib/xsd/codegen/moduledef.rb b/ruby_1_8_6/lib/xsd/codegen/moduledef.rb deleted file mode 100644 index 744af2ff97..0000000000 --- a/ruby_1_8_6/lib/xsd/codegen/moduledef.rb +++ /dev/null @@ -1,191 +0,0 @@ -# XSD4R - Generating module definition code -# Copyright (C) 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>. - -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -require 'xsd/codegen/gensupport' -require 'xsd/codegen/methoddef' -require 'xsd/codegen/commentdef' - - -module XSD -module CodeGen - - -class ModuleDef - include GenSupport - include CommentDef - - def initialize(name) - @name = name - @comment = nil - @const = [] - @code = [] - @requirepath = [] - @methoddef = [] - end - - def def_require(path) - @requirepath << path - end - - def def_const(const, value) - unless safeconstname?(const) - raise ArgumentError.new("#{const} seems to be unsafe") - end - @const << [const, value] - end - - def def_code(code) - @code << code - end - - def def_method(name, *params) - add_method(MethodDef.new(name, *params) { yield if block_given? }, :public) - end - alias def_publicmethod def_method - - def def_protectedmethod(name, *params) - add_method(MethodDef.new(name, *params) { yield if block_given? }, - :protected) - end - - def def_privatemethod(name, *params) - add_method(MethodDef.new(name, *params) { yield if block_given? }, :private) - end - - def add_method(m, visibility = :public) - @methoddef << [visibility, m] - end - - def dump - buf = "" - unless @requirepath.empty? - buf << dump_requirepath - end - buf << dump_emptyline unless buf.empty? - package = @name.split(/::/)[0..-2] - buf << dump_package_def(package) unless package.empty? - buf << dump_comment if @comment - buf << dump_module_def - spacer = false - unless @const.empty? - buf << dump_emptyline if spacer - spacer = true - buf << dump_const - end - unless @code.empty? - buf << dump_emptyline if spacer - spacer = true - buf << dump_code - end - unless @methoddef.empty? - buf << dump_emptyline if spacer - spacer = true - buf << dump_methods - end - buf << dump_module_def_end - buf << dump_package_def_end(package) unless package.empty? - buf.gsub(/^\s+$/, '') - end - -private - - def dump_requirepath - format( - @requirepath.collect { |path| - %Q(require '#{path}') - }.join("\n") - ) - end - - def dump_const - dump_static( - @const.sort.collect { |var, value| - %Q(#{var} = #{dump_value(value)}) - }.join("\n") - ) - end - - def dump_code - dump_static(@code.join("\n")) - end - - def dump_static(str) - format(str, 2) - end - - def dump_methods - methods = {} - @methoddef.each do |visibility, method| - (methods[visibility] ||= []) << method - end - str = "" - [:public, :protected, :private].each do |visibility| - if methods[visibility] - str << "\n" unless str.empty? - str << visibility.to_s << "\n\n" unless visibility == :public - str << methods[visibility].collect { |m| format(m.dump, 2) }.join("\n") - end - end - str - end - - def dump_value(value) - if value.respond_to?(:to_src) - value.to_src - else - value - end - end - - def dump_package_def(package) - format(package.collect { |ele| "module #{ele}" }.join("; ")) + "\n\n" - end - - def dump_package_def_end(package) - "\n\n" + format(package.collect { |ele| "end" }.join("; ")) - end - - def dump_module_def - name = @name.to_s.split(/::/) - format("module #{name.last}") - end - - def dump_module_def_end - format("end") - end -end - - -end -end - - -if __FILE__ == $0 - require 'xsd/codegen/moduledef' - include XSD::CodeGen - m = ModuleDef.new("Foo::Bar::HobbitName") - m.def_require("foo/bar") - m.def_require("baz") - m.comment = <<-EOD - foo - bar - baz - EOD - m.def_method("foo") do - <<-EOD - foo.bar = 1 - baz.each do |ele| - ele + 1 - end - EOD - end - m.def_method("baz", "qux") - #m.def_protectedmethod("aaa") - m.def_privatemethod("bbb") - puts m.dump -end |