Skip to content

Instantly share code, notes, and snippets.

@sja
Created April 30, 2013 13:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sja/5488859 to your computer and use it in GitHub Desktop.
Save sja/5488859 to your computer and use it in GitHub Desktop.
Convert Ext.extend to Ext.define and add new Files to jso.xml
#!/usr/bin/ruby
# Convert Ext.extend to Ext.define and add new Files to jso.xml
# Input:
# class=Ext.extend(parent, {body})
# Ext.reg(alias, class)
# Output:
# Ext.define('class', {extend: 'parent', alias:'alias', body})
# @author Sebastian Janzen <sebastian.janzen@hl-services.de>
jsoTpl = '<js>/hlx/module/administration/editor/fields/%s</js>'
jsoPart = []
ext4Tpl = "Ext.define('%s', {\n\textend : '%s',\n\talias : '%s',\n%s});"
code = File.read("Fields.js")
fCnt = 0
code.gsub(/^hlx\.module\.administration\.fields\..*?Ext\.reg\(.+?\);/m){ ¦field¦
filename = field[/^hlx\.module\.administration\.fields\.(.*?)\s/, 1] + ".js"
jsoPart += [jsoTpl % [filename]]
allStr = field.split(/Ext\.reg\('(.*?)', '(.*?)'\)/)
aliasStr = allStr[1]
classStr = allStr[2]
#puts "Alias: #{aliasStr}, Class: #{classStr}"
body = field.split(/Ext\.extend\((.*?), \{(.*?)\}\);\W+Ext.reg/m)
extendedStr = body[1]
bodyStr = body[2]
#puts "Body: " + bodyStr
ext4Field = ext4Tpl % [classStr, extendedStr, aliasStr, bodyStr]
print "Writing new File #{filename} ... "
if (filename != nil && !!File.exists?(filename))
f = File.new(filename, "w")
f.print(ext4Field)
f.close
puts "Done."
fCnt += 1
else
puts "Already exists! Skipping."
next
end
}
f = File.new("jsoPart.xml", "w")
jsoPart.each do ¦filename¦
f.puts(filename)
end
f.close
puts "\nCreated #{fCnt} new Files and wrote #{jsoPart.length} JSO-Lines."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment