4 # usage cecil-mig.rb directory
7 dir = ARGV.length > 0 ? ARGV[0] : "."
10 "GenericParamAttributes" => "GenericParameterAttributes",
11 "ParamAttributes" => "ParameterAttributes",
12 "IParameterReference" => "ParameterDefinition",
13 "IPropertyReference" => "PropertyDefinition",
14 "IEventReference" => "EventDefinition",
15 "IVariableReference" => "VariableDefinition",
16 "IMarshalDesc" => "MarshalSpec",
17 "MarshalDesc" => "MarshalSpec",
18 "IArrayMarshalDesc" => "ArrayMarshalSpec",
19 "ArrayMarshalDesc" => "ArrayMarshalSpec",
20 "ICustomMarshalerDesc" => "CustomMarshalerSpec",
21 "CustomMarshalerDesc" => "CustomMarshalerSpec",
22 "ISafeArrayDesc" => "SafeArraySpec",
23 "SafeArrayDesc" => "SafeArraySpec",
24 "IFixedArrayDesc" => "FixedArraySpec",
25 "FixedArrayDesc" => "FixedArraySpec",
26 "IFixedSysStringDesc" => "FixedSysStringSpec",
27 "FixedSysStringDesc" => "FixedSysStringSpec",
28 "IModifierType" => "ModType"
32 "AssemblyNameReferenceCollection",
33 "ModuleReferenceCollection",
34 "ModuleDefinitionCollection",
36 "TypeDefinitionCollection",
37 "TypeReferenceCollection",
38 "InterfaceCollection",
39 "ParameterDefinitionCollection",
41 "MethodDefinitionCollection",
42 "ConstructorCollection",
43 "EventDefinitionCollection",
44 "FieldDefinitionCollection",
45 "PropertyDefinitionCollection",
46 "InstructionCollection",
47 "ExceptionHandlerCollection",
48 "VariableDefinitionCollection",
49 "ArrayDimensionCollection",
50 "CustomAttributeCollection",
51 "ExternTypeCollection",
52 "NestedTypeCollection",
53 "SecurityDeclarationCollection",
54 "MemberReferenceCollection",
55 "GenericParameterCollection",
56 "GenericArgumentCollection",
57 "ConstraintCollection"
64 "AssemblyLinkedResource",
65 "AssemblyNameReference",
66 "AssemblyNameDefinition",
74 "FunctionPointerType",
75 "GenericInstanceMethod",
76 "GenericInstanceType",
86 "ParameterDefinition",
94 "SecurityDeclaration",
102 "VariableDefinition",
110 def bang(buffer, re, str)
112 buffer.gsub!(Regexp.new("#{nl}(#{re})#{nl}"), "\\1" + str + "\\3")
115 def process_replaces(buffer)
116 $replaces.each_key { |key|
117 bang(buffer, key, $replaces[key])
121 def process_collections(buffer)
122 $collections.each { |name|
123 bang(buffer, iface(name), name)
127 def process_types(buffer)
129 bang(buffer, iface(name), name)
133 def process_unbreak(buffer)
134 $unbreak.each { |name|
135 bang(buffer, name, iface(name))
142 File.open(file, File::RDONLY) { |f|
144 buffer = original.clone
145 process_replaces(buffer)
146 process_collections(buffer)
147 process_types(buffer)
150 File.open(file, File::WRONLY | File::TRUNC) { |f|
152 puts("#{file} processed")
153 } if (original != buffer)
157 Dir[File.join(dir, "**", "*.*")].each { |file|
158 process(file) if not File.directory?(file)