module XSD::CodeGen::GenSupport

Public Class Methods

capitalize(target) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 156
def capitalize(target)
  target.sub(/^([a-z])/) { $1.upcase }
end
constant?(word) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 221
def constant?(word)
  CONSTANTS.key?(word)
end
keyword?(word) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 216
def keyword?(word)
  KEYWORDS.key?(word)
end
safeconstname(name) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 166
def safeconstname(name)
  safename = name.scan(/[a-zA-Z0-9_]+/).collect { |ele|
    GenSupport.capitalize(ele)
  }.join
  if /\A[A-Z]/ !~ safename or keyword?(safename) or constant?(safename)
    "C_#{safename}"
  else
    safename
  end
end
safeconstname?(name) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 178
def safeconstname?(name)
  /\A[A-Z][a-zA-Z0-9_]*\z/ =~ name and !keyword?(name)
end
safemethodname(name) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 183
def safemethodname(name)
  postfix = name[/[=?!]$/]
  safename = name.scan(/[a-zA-Z0-9_]+/).join('_')
  safename = uncapitalize(safename)
  safename += postfix if postfix
  if /\A[a-z]/ !~ safename or keyword?(safename)
    "m_#{safename}"
  else
    safename
  end
end
safemethodname?(name) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 196
def safemethodname?(name)
  /\A[a-zA-Z_][a-zA-Z0-9_]*[=!?]?\z/ =~ name and !keyword?(name)
end
safevarname(name) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 201
def safevarname(name)
  safename = uncapitalize(name.scan(/[a-zA-Z0-9_]+/).join('_'))
  if /\A[a-z]/ !~ safename or keyword?(safename)
    "v_#{safename}"
  else
    safename
  end
end
safevarname?(name) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 211
def safevarname?(name)
  /\A[a-z_][a-zA-Z0-9_]*\z/ =~ name and !keyword?(name)
end
uncapitalize(target) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 161
def uncapitalize(target)
  target.sub(/^([A-Z])/) { $1.downcase }
end

Public Instance Methods

format(str, indent = nil) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 226
def format(str, indent = nil)
  str = trim_eol(str)
  str = trim_indent(str)
  if indent
    str.gsub(/^/, " " * indent)
  else
    str
  end
end

Private Instance Methods

capitalize(target) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 156
def capitalize(target)
  target.sub(/^([a-z])/) { $1.upcase }
end
constant?(word) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 221
def constant?(word)
  CONSTANTS.key?(word)
end
dump_emptyline() click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 266
def dump_emptyline
  "\n"
end
keyword?(word) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 216
def keyword?(word)
  KEYWORDS.key?(word)
end
safeconstname(name) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 166
def safeconstname(name)
  safename = name.scan(/[a-zA-Z0-9_]+/).collect { |ele|
    GenSupport.capitalize(ele)
  }.join
  if /\A[A-Z]/ !~ safename or keyword?(safename) or constant?(safename)
    "C_#{safename}"
  else
    safename
  end
end
safeconstname?(name) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 178
def safeconstname?(name)
  /\A[A-Z][a-zA-Z0-9_]*\z/ =~ name and !keyword?(name)
end
safemethodname(name) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 183
def safemethodname(name)
  postfix = name[/[=?!]$/]
  safename = name.scan(/[a-zA-Z0-9_]+/).join('_')
  safename = uncapitalize(safename)
  safename += postfix if postfix
  if /\A[a-z]/ !~ safename or keyword?(safename)
    "m_#{safename}"
  else
    safename
  end
end
safemethodname?(name) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 196
def safemethodname?(name)
  /\A[a-zA-Z_][a-zA-Z0-9_]*[=!?]?\z/ =~ name and !keyword?(name)
end
safevarname(name) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 201
def safevarname(name)
  safename = uncapitalize(name.scan(/[a-zA-Z0-9_]+/).join('_'))
  if /\A[a-z]/ !~ safename or keyword?(safename)
    "v_#{safename}"
  else
    safename
  end
end
safevarname?(name) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 211
def safevarname?(name)
  /\A[a-z_][a-zA-Z0-9_]*\z/ =~ name and !keyword?(name)
end
trim_eol(str) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 238
def trim_eol(str)
  str.lines.collect { |line|
    line.sub(/\r?\n\z/, "") + "\n"
  }.join
end
trim_indent(str) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 244
def trim_indent(str)
  indent = nil
  str = str.lines.collect { |line| untab(line) }.join
  str.lines do |line|
    head = line.index(/\S/)
    if !head.nil? and (indent.nil? or head < indent)
      indent = head
    end
  end
  return str unless indent
  str.lines.collect { |line|
    line.sub(/^ {0,#{indent}}/, "")
  }.join
end
uncapitalize(target) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 161
def uncapitalize(target)
  target.sub(/^([A-Z])/) { $1.downcase }
end
untab(line, ts = 8) click to toggle source
# File lib/xsd/codegen/gensupport.rb, line 259
def untab(line, ts = 8)
  while pos = line.index(/\t/)
    line = line.sub(/\t/, " " * (ts - (pos % ts)))
  end
  line
end