summaryrefslogtreecommitdiff
path: root/ruby_1_8_5/lib/xsd/codegen/moduledef.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_1_8_5/lib/xsd/codegen/moduledef.rb')
-rw-r--r--ruby_1_8_5/lib/xsd/codegen/moduledef.rb191
1 files changed, 0 insertions, 191 deletions
diff --git a/ruby_1_8_5/lib/xsd/codegen/moduledef.rb b/ruby_1_8_5/lib/xsd/codegen/moduledef.rb
deleted file mode 100644
index 744af2ff97..0000000000
--- a/ruby_1_8_5/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