sprout-as3-puremvc-bundle 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. data/README +48 -0
  2. data/lib/sprout/as3.rb +5 -0
  3. data/lib/sprout/as3/version.rb +12 -0
  4. data/lib/sprout/as3_tasks.rb +7 -0
  5. data/lib/sprout/generators/class/USAGE +42 -0
  6. data/lib/sprout/generators/class/class_generator.rb +20 -0
  7. data/lib/sprout/generators/class/templates/Class.as +8 -0
  8. data/lib/sprout/generators/class/templates/Component.mxml +8 -0
  9. data/lib/sprout/generators/class/templates/TestCase.as +30 -0
  10. data/lib/sprout/generators/class/templates/TestSuite.as +18 -0
  11. data/lib/sprout/generators/component/component_generator.rb +18 -0
  12. data/lib/sprout/generators/component/templates/Component.mxml +3 -0
  13. data/lib/sprout/generators/component/templates/TestSuite.as +18 -0
  14. data/lib/sprout/generators/component/templates/VisualTestCase.as +32 -0
  15. data/lib/sprout/generators/project/project_generator.rb +163 -0
  16. data/lib/sprout/generators/project/templates/MainClass.as +139 -0
  17. data/lib/sprout/generators/project/templates/README.txt +56 -0
  18. data/lib/sprout/generators/project/templates/TestRunner.as +15 -0
  19. data/lib/sprout/generators/project/templates/deploy/assets/css/main.css +5 -0
  20. data/lib/sprout/generators/project/templates/deploy/assets/js/swfobject.js +5 -0
  21. data/lib/sprout/generators/project/templates/deploy/assets/swf/express_install.swf +0 -0
  22. data/lib/sprout/generators/project/templates/deploy/index.html +30 -0
  23. data/lib/sprout/generators/project/templates/embed/fonts/arial.ttf +0 -0
  24. data/lib/sprout/generators/project/templates/embed/fonts/fonts.xml +42 -0
  25. data/lib/sprout/generators/project/templates/embed/template/AssetEmbedTemplate.as +15 -0
  26. data/lib/sprout/generators/project/templates/embed/template/FontTemplate.as +20 -0
  27. data/lib/sprout/generators/project/templates/generate +21 -0
  28. data/lib/sprout/generators/project/templates/lib/PureMVC_AS3_2_0_3.swc +0 -0
  29. data/lib/sprout/generators/project/templates/lib/com_ffsys_utils_font.swc +0 -0
  30. data/lib/sprout/generators/project/templates/lib/com_ffsys_utils_locale.swc +0 -0
  31. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_core.swc +0 -0
  32. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_effects.swc +0 -0
  33. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_effects_tween.swc +0 -0
  34. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_errors.swc +0 -0
  35. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_events.swc +0 -0
  36. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_io.swc +0 -0
  37. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils.swc +0 -0
  38. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_address.swc +0 -0
  39. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_array.swc +0 -0
  40. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_assert.swc +0 -0
  41. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_bezier.swc +0 -0
  42. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_boolean.swc +0 -0
  43. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_byte.swc +0 -0
  44. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_collections.swc +0 -0
  45. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_display.swc +0 -0
  46. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_flex.swc +0 -0
  47. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_font.swc +0 -0
  48. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_history.swc +0 -0
  49. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_identifier.swc +0 -0
  50. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_inspector.swc +0 -0
  51. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_locale.swc +0 -0
  52. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_number.swc +0 -0
  53. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_object.swc +0 -0
  54. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_random.swc +0 -0
  55. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_reflection.swc +0 -0
  56. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_reflection_members.swc +0 -0
  57. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_reflection_meta.swc +0 -0
  58. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_reflection_parser.swc +0 -0
  59. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_regex.swc +0 -0
  60. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_string.swc +0 -0
  61. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_substitution.swc +0 -0
  62. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_time.swc +0 -0
  63. data/lib/sprout/generators/project/templates/lib/opt/ffsys/com_ffsys_utils_xml.swc +0 -0
  64. data/lib/sprout/generators/project/templates/rakeassets.rb +77 -0
  65. data/lib/sprout/generators/project/templates/rakefile.rb +112 -0
  66. data/lib/sprout/generators/project/templates/rakefonts.rb +170 -0
  67. data/lib/sprout/generators/suite/USAGE +0 -0
  68. data/lib/sprout/generators/suite/suite_generator.rb +17 -0
  69. data/lib/sprout/generators/suite/templates/TestSuite.as +18 -0
  70. data/lib/sprout/generators/test/USAGE +37 -0
  71. data/lib/sprout/generators/test/templates/TestCase.as +30 -0
  72. data/lib/sprout/generators/test/templates/TestSuite.as +18 -0
  73. data/lib/sprout/generators/test/test_generator.rb +20 -0
  74. data/lib/sprout/tasks/asdoc_doc.rb +155 -0
  75. data/lib/sprout/tasks/asdoc_rdoc.rb +155 -0
  76. data/lib/sprout/tasks/asdoc_task.rb +276 -0
  77. data/lib/sprout/tasks/asunit_task.rb +148 -0
  78. data/lib/sprout/tasks/compc_doc.rb +543 -0
  79. data/lib/sprout/tasks/compc_rdoc.rb +543 -0
  80. data/lib/sprout/tasks/compc_task.rb +130 -0
  81. data/lib/sprout/tasks/fcsh_task.rb +13 -0
  82. data/lib/sprout/tasks/fdb_task.rb +0 -0
  83. data/lib/sprout/tasks/mxmlc_doc.rb +484 -0
  84. data/lib/sprout/tasks/mxmlc_rdoc.rb +484 -0
  85. data/lib/sprout/tasks/mxmlc_task.rb +659 -0
  86. data/rakefile.rb +73 -0
  87. metadata +192 -0
@@ -0,0 +1,139 @@
1
+ package {
2
+ //import AssetEmbed;
3
+ import flash.display.Sprite;
4
+ import flash.text.TextField;
5
+
6
+ import com.ffsys.io.loaders.events.ILoadEvent;
7
+ import com.ffsys.io.loaders.events.LoadEvent;
8
+ import com.ffsys.io.loaders.events.LoadProgressEvent;
9
+ import com.ffsys.io.loaders.events.LoadStartEvent;
10
+ import com.ffsys.io.loaders.events.LoaderQueueStartEvent;
11
+ import com.ffsys.io.loaders.events.LoadCompleteEvent;
12
+ import com.ffsys.io.loaders.events.MovieLoadEvent;
13
+ import com.ffsys.io.loaders.events.ResourceNotFoundEvent;
14
+ import com.ffsys.io.loaders.events.XmlLoadEvent;
15
+
16
+ import com.ffsys.utils.font.ITypeFaceManager;
17
+ import com.ffsys.utils.font.TypeFaceManager;
18
+
19
+ import com.ffsys.utils.locale.ILocale;
20
+ import com.ffsys.utils.locale.Locale;
21
+
22
+ public class <%= project_name %> extends Sprite {
23
+
24
+ /**
25
+ * The default path to the font definition
26
+ * document.
27
+ */
28
+ static public const DEFAULT_FONTS_PATH:String =
29
+ "assets/xml/fonts.xml";
30
+
31
+ /**
32
+ * The type face manager used to load external
33
+ * font libraries.
34
+ */
35
+ private var _typeFaceManager:ITypeFaceManager;
36
+
37
+ /**
38
+ * Creates a <%= project_name %> instance.
39
+ */
40
+ public function <%= project_name %>()
41
+ {
42
+ trace("<%= project_name %> instantiated!");
43
+ //addChild( new AssetEmbed.CLASS_VARIABLE_NAME() );
44
+ //loadFonts();
45
+ }
46
+
47
+ /**
48
+ * Starts the font loading process.
49
+ */
50
+ private function loadFonts():void
51
+ {
52
+ var locale:ILocale = new Locale();
53
+ locale.lang = "en";
54
+ locale.country = "GB";
55
+
56
+ _typeFaceManager = new TypeFaceManager();
57
+ _typeFaceManager.locale = locale;
58
+
59
+ _typeFaceManager.addEventListener(
60
+ ResourceNotFoundEvent.RESOURCE_NOT_FOUND,
61
+ fontResourceNotFound, false, 0, true );
62
+
63
+ _typeFaceManager.addEventListener(
64
+ LoadEvent.DATA,
65
+ fontLoaded, false, 0, true );
66
+
67
+ _typeFaceManager.addEventListener(
68
+ LoadCompleteEvent.LOAD_COMPLETE,
69
+ fontLoadComplete, false, 0, true );
70
+
71
+ _typeFaceManager.load( DEFAULT_FONTS_PATH );
72
+ }
73
+
74
+ /**
75
+ * Listeners invoked if the font definition document
76
+ * or any referenced font libraries could not be found.
77
+ */
78
+ private function fontResourceNotFound(
79
+ event:ResourceNotFoundEvent ):void
80
+ {
81
+ //call the preventDefault() method
82
+ //if you do not want the runtime error
83
+ //thrown when a resource could not be found
84
+ //event.preventDefault();
85
+ }
86
+
87
+ /**
88
+ * Listener invoked when the type face manager
89
+ * has loaded an asset, this is invoked for
90
+ * the definition document as well as all font
91
+ * libraries.
92
+ */
93
+ private function fontLoaded( event:ILoadEvent ):void
94
+ {
95
+ var uri:String = event.loader.uri;
96
+
97
+ if( event is XmlLoadEvent )
98
+ {
99
+ trace("Font definition document loaded: " + uri );
100
+ }else if( event is MovieLoadEvent )
101
+ {
102
+ trace("Font library loaded: " + uri );
103
+ }
104
+ }
105
+
106
+ /**
107
+ * Listener invoked when all fonts are loaded
108
+ * and available.
109
+ */
110
+ private function fontLoadComplete(
111
+ event:LoadCompleteEvent ):void
112
+ {
113
+ trace( "All fonts loaded and available." );
114
+
115
+ testLoadedFont();
116
+ }
117
+
118
+ /**
119
+ * Tests adding a text field instance using
120
+ * a runtime embedded font library.
121
+ */
122
+ private function testLoadedFont():void
123
+ {
124
+ //test for creating a textfield with loaded font data
125
+ var txt:TextField = new TextField();
126
+
127
+ txt.embedFonts = true;
128
+
129
+ txt.defaultTextFormat =
130
+ _typeFaceManager.getTextFormatById( "main" );
131
+
132
+ txt.width = 300;
133
+ txt.height = 25;
134
+ txt.text = "Runtime font library: " + txt.defaultTextFormat.font;
135
+
136
+ addChild( txt );
137
+ }
138
+ }
139
+ }
@@ -0,0 +1,56 @@
1
+
2
+ ########################################
3
+ This project was generated using Sprouts
4
+ http://code.google.com/p/projectsprouts/
5
+
6
+ Please report any bugs to:
7
+ http://code.google.com/p/projectsprouts/issues/list
8
+
9
+ Please feel free to ask questions at:
10
+ http://groups.google.com/group/projectsprouts
11
+
12
+ ########################################
13
+ Using your favorite terminal, cd to this directory have fun!
14
+
15
+ ########################################
16
+ To create a new ActionScript class, TestCase and rebuild all project TestSuites:
17
+
18
+ script/generate class -s utils.MathUtil
19
+
20
+ ########################################
21
+ To create a new Interface begin the name with I + Capital letter (eg: ISomeName)
22
+ or end the name with 'able'
23
+
24
+ Name begins with Capital 'I' followed by another capital letter
25
+ script/generate class utils.ISomeName
26
+
27
+ or
28
+
29
+ Name ends with 'able'
30
+ script/generate class utils.Observable
31
+
32
+ or
33
+
34
+ Explicitly identify interface creation
35
+ script/generate interface utils.SomeInterface
36
+
37
+ ########################################
38
+ To create a new TestCase only, enter the following:
39
+
40
+ script/generate test utils.SomeTest
41
+
42
+ ########################################
43
+ To compile and launch your application:
44
+
45
+ rake
46
+
47
+ ########################################
48
+ To compile and launch your test suites:
49
+
50
+ rake test
51
+
52
+ ########################################
53
+ To see all available rake tasks:
54
+
55
+ rake -T
56
+
@@ -0,0 +1,15 @@
1
+ package {
2
+ import asunit.textui.TestRunner;
3
+
4
+ public class <%= project_name %>Runner extends TestRunner {
5
+
6
+ public function <%= project_name %>Runner() {
7
+ // start(clazz:Class, methodName:String, showTrace:Boolean)
8
+ // NOTE: sending a particular class and method name will
9
+ // execute setUp(), the method and NOT tearDown.
10
+ // This allows you to get visual confirmation while developing
11
+ // visual entities
12
+ start(AllTests, null, TestRunner.SHOW_TRACE);
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,5 @@
1
+ body {
2
+ color: #ffffff;
3
+ background: #333333;
4
+ font-size: 76%;
5
+ }
@@ -0,0 +1,5 @@
1
+ /* SWFObject v2.0 <http://code.google.com/p/swfobject/>
2
+ Copyright (c) 2007 Geoff Stearns, Michael Williams, and Bobby van der Sluis
3
+ This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
4
+ */
5
+ var swfobject=function(){var Z="undefined",P="object",B="Shockwave Flash",h="ShockwaveFlash.ShockwaveFlash",W="application/x-shockwave-flash",K="SWFObjectExprInst",G=window,g=document,N=navigator,f=[],H=[],Q=null,L=null,T=null,S=false,C=false;var a=function(){var l=typeof g.getElementById!=Z&&typeof g.getElementsByTagName!=Z&&typeof g.createElement!=Z&&typeof g.appendChild!=Z&&typeof g.replaceChild!=Z&&typeof g.removeChild!=Z&&typeof g.cloneNode!=Z,t=[0,0,0],n=null;if(typeof N.plugins!=Z&&typeof N.plugins[B]==P){n=N.plugins[B].description;if(n){n=n.replace(/^.*\s+(\S+\s+\S+$)/,"$1");t[0]=parseInt(n.replace(/^(.*)\..*$/,"$1"),10);t[1]=parseInt(n.replace(/^.*\.(.*)\s.*$/,"$1"),10);t[2]=/r/.test(n)?parseInt(n.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof G.ActiveXObject!=Z){var o=null,s=false;try{o=new ActiveXObject(h+".7")}catch(k){try{o=new ActiveXObject(h+".6");t=[6,0,21];o.AllowScriptAccess="always"}catch(k){if(t[0]==6){s=true}}if(!s){try{o=new ActiveXObject(h)}catch(k){}}}if(!s&&o){try{n=o.GetVariable("$version");if(n){n=n.split(" ")[1].split(",");t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]}}catch(k){}}}}var v=N.userAgent.toLowerCase(),j=N.platform.toLowerCase(),r=/webkit/.test(v)?parseFloat(v.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,i=false,q=j?/win/.test(j):/win/.test(v),m=j?/mac/.test(j):/mac/.test(v);/*@cc_on i=true;@if(@_win32)q=true;@elif(@_mac)m=true;@end@*/return{w3cdom:l,pv:t,webkit:r,ie:i,win:q,mac:m}}();var e=function(){if(!a.w3cdom){return }J(I);if(a.ie&&a.win){try{g.write("<script id=__ie_ondomload defer=true src=//:><\/script>");var i=c("__ie_ondomload");if(i){i.onreadystatechange=function(){if(this.readyState=="complete"){this.parentNode.removeChild(this);V()}}}}catch(j){}}if(a.webkit&&typeof g.readyState!=Z){Q=setInterval(function(){if(/loaded|complete/.test(g.readyState)){V()}},10)}if(typeof g.addEventListener!=Z){g.addEventListener("DOMContentLoaded",V,null)}M(V)}();function V(){if(S){return }if(a.ie&&a.win){var m=Y("span");try{var l=g.getElementsByTagName("body")[0].appendChild(m);l.parentNode.removeChild(l)}catch(n){return }}S=true;if(Q){clearInterval(Q);Q=null}var j=f.length;for(var k=0;k<j;k++){f[k]()}}function J(i){if(S){i()}else{f[f.length]=i}}function M(j){if(typeof G.addEventListener!=Z){G.addEventListener("load",j,false)}else{if(typeof g.addEventListener!=Z){g.addEventListener("load",j,false)}else{if(typeof G.attachEvent!=Z){G.attachEvent("onload",j)}else{if(typeof G.onload=="function"){var i=G.onload;G.onload=function(){i();j()}}else{G.onload=j}}}}}function I(){var l=H.length;for(var j=0;j<l;j++){var m=H[j].id;if(a.pv[0]>0){var k=c(m);if(k){H[j].width=k.getAttribute("width")?k.getAttribute("width"):"0";H[j].height=k.getAttribute("height")?k.getAttribute("height"):"0";if(O(H[j].swfVersion)){if(a.webkit&&a.webkit<312){U(k)}X(m,true)}else{if(H[j].expressInstall&&!C&&O("6.0.65")&&(a.win||a.mac)){D(H[j])}else{d(k)}}}}else{X(m,true)}}}function U(m){var k=m.getElementsByTagName(P)[0];if(k){var p=Y("embed"),r=k.attributes;if(r){var o=r.length;for(var n=0;n<o;n++){if(r[n].nodeName.toLowerCase()=="data"){p.setAttribute("src",r[n].nodeValue)}else{p.setAttribute(r[n].nodeName,r[n].nodeValue)}}}var q=k.childNodes;if(q){var s=q.length;for(var l=0;l<s;l++){if(q[l].nodeType==1&&q[l].nodeName.toLowerCase()=="param"){p.setAttribute(q[l].getAttribute("name"),q[l].getAttribute("value"))}}}m.parentNode.replaceChild(p,m)}}function F(i){if(a.ie&&a.win&&O("8.0.0")){G.attachEvent("onunload",function(){var k=c(i);if(k){for(var j in k){if(typeof k[j]=="function"){k[j]=function(){}}}k.parentNode.removeChild(k)}})}}function D(j){C=true;var o=c(j.id);if(o){if(j.altContentId){var l=c(j.altContentId);if(l){L=l;T=j.altContentId}}else{L=b(o)}if(!(/%$/.test(j.width))&&parseInt(j.width,10)<310){j.width="310"}if(!(/%$/.test(j.height))&&parseInt(j.height,10)<137){j.height="137"}g.title=g.title.slice(0,47)+" - Flash Player Installation";var n=a.ie&&a.win?"ActiveX":"PlugIn",k=g.title,m="MMredirectURL="+G.location+"&MMplayerType="+n+"&MMdoctitle="+k,p=j.id;if(a.ie&&a.win&&o.readyState!=4){var i=Y("div");p+="SWFObjectNew";i.setAttribute("id",p);o.parentNode.insertBefore(i,o);o.style.display="none";G.attachEvent("onload",function(){o.parentNode.removeChild(o)})}R({data:j.expressInstall,id:K,width:j.width,height:j.height},{flashvars:m},p)}}function d(j){if(a.ie&&a.win&&j.readyState!=4){var i=Y("div");j.parentNode.insertBefore(i,j);i.parentNode.replaceChild(b(j),i);j.style.display="none";G.attachEvent("onload",function(){j.parentNode.removeChild(j)})}else{j.parentNode.replaceChild(b(j),j)}}function b(n){var m=Y("div");if(a.win&&a.ie){m.innerHTML=n.innerHTML}else{var k=n.getElementsByTagName(P)[0];if(k){var o=k.childNodes;if(o){var j=o.length;for(var l=0;l<j;l++){if(!(o[l].nodeType==1&&o[l].nodeName.toLowerCase()=="param")&&!(o[l].nodeType==8)){m.appendChild(o[l].cloneNode(true))}}}}}return m}function R(AE,AC,q){var p,t=c(q);if(typeof AE.id==Z){AE.id=q}if(a.ie&&a.win){var AD="";for(var z in AE){if(AE[z]!=Object.prototype[z]){if(z=="data"){AC.movie=AE[z]}else{if(z.toLowerCase()=="styleclass"){AD+=' class="'+AE[z]+'"'}else{if(z!="classid"){AD+=" "+z+'="'+AE[z]+'"'}}}}}var AB="";for(var y in AC){if(AC[y]!=Object.prototype[y]){AB+='<param name="'+y+'" value="'+AC[y]+'" />'}}t.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AD+">"+AB+"</object>";F(AE.id);p=c(AE.id)}else{if(a.webkit&&a.webkit<312){var AA=Y("embed");AA.setAttribute("type",W);for(var x in AE){if(AE[x]!=Object.prototype[x]){if(x=="data"){AA.setAttribute("src",AE[x])}else{if(x.toLowerCase()=="styleclass"){AA.setAttribute("class",AE[x])}else{if(x!="classid"){AA.setAttribute(x,AE[x])}}}}}for(var w in AC){if(AC[w]!=Object.prototype[w]){if(w!="movie"){AA.setAttribute(w,AC[w])}}}t.parentNode.replaceChild(AA,t);p=AA}else{var s=Y(P);s.setAttribute("type",W);for(var v in AE){if(AE[v]!=Object.prototype[v]){if(v.toLowerCase()=="styleclass"){s.setAttribute("class",AE[v])}else{if(v!="classid"){s.setAttribute(v,AE[v])}}}}for(var u in AC){if(AC[u]!=Object.prototype[u]&&u!="movie"){E(s,u,AC[u])}}t.parentNode.replaceChild(s,t);p=s}}return p}function E(k,i,j){var l=Y("param");l.setAttribute("name",i);l.setAttribute("value",j);k.appendChild(l)}function c(i){return g.getElementById(i)}function Y(i){return g.createElement(i)}function O(k){var j=a.pv,i=k.split(".");i[0]=parseInt(i[0],10);i[1]=parseInt(i[1],10);i[2]=parseInt(i[2],10);return(j[0]>i[0]||(j[0]==i[0]&&j[1]>i[1])||(j[0]==i[0]&&j[1]==i[1]&&j[2]>=i[2]))?true:false}function A(m,j){if(a.ie&&a.mac){return }var l=g.getElementsByTagName("head")[0],k=Y("style");k.setAttribute("type","text/css");k.setAttribute("media","screen");if(!(a.ie&&a.win)&&typeof g.createTextNode!=Z){k.appendChild(g.createTextNode(m+" {"+j+"}"))}l.appendChild(k);if(a.ie&&a.win&&typeof g.styleSheets!=Z&&g.styleSheets.length>0){var i=g.styleSheets[g.styleSheets.length-1];if(typeof i.addRule==P){i.addRule(m,j)}}}function X(k,i){var j=i?"visible":"hidden";if(S){c(k).style.visibility=j}else{A("#"+k,"visibility:"+j)}}return{registerObject:function(l,i,k){if(!a.w3cdom||!l||!i){return }var j={};j.id=l;j.swfVersion=i;j.expressInstall=k?k:false;H[H.length]=j;X(l,false)},getObjectById:function(l){var i=null;if(a.w3cdom&&S){var j=c(l);if(j){var k=j.getElementsByTagName(P)[0];if(!k||(k&&typeof j.SetVariable!=Z)){i=j}else{if(typeof k.SetVariable!=Z){i=k}}}}return i},embedSWF:function(n,u,r,t,j,m,k,p,s){if(!a.w3cdom||!n||!u||!r||!t||!j){return }r+="";t+="";if(O(j)){X(u,false);var q=(typeof s==P)?s:{};q.data=n;q.width=r;q.height=t;var o=(typeof p==P)?p:{};if(typeof k==P){for(var l in k){if(k[l]!=Object.prototype[l]){if(typeof o.flashvars!=Z){o.flashvars+="&"+l+"="+k[l]}else{o.flashvars=l+"="+k[l]}}}}J(function(){R(q,o,u);if(q.id==u){X(u,true)}})}else{if(m&&!C&&O("6.0.65")&&(a.win||a.mac)){X(u,false);J(function(){var i={};i.id=i.altContentId=u;i.width=r;i.height=t;i.expressInstall=m;D(i)})}}},getFlashPlayerVersion:function(){return{major:a.pv[0],minor:a.pv[1],release:a.pv[2]}},hasFlashPlayerVersion:O,createSWF:function(k,j,i){if(a.w3cdom&&S){return R(k,j,i)}else{return undefined}},createCSS:function(j,i){if(a.w3cdom){A(j,i)}},addDomLoadEvent:J,addLoadEvent:M,getQueryParamValue:function(m){var l=g.location.search||g.location.hash;if(m==null){return l}if(l){var k=l.substring(1).split("&");for(var j=0;j<k.length;j++){if(k[j].substring(0,k[j].indexOf("="))==m){return k[j].substring((k[j].indexOf("=")+1))}}}return""},expressInstallCallback:function(){if(C&&L){var i=c(K);if(i){i.parentNode.replaceChild(L,i);if(T){X(T,true);if(a.ie&&a.win){L.style.display="block"}}L=null;T=null;C=false}}}}}();
@@ -0,0 +1,30 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
3
+ <head>
4
+ <title><%= project_name %></title>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
6
+ <script type="text/javascript" src="assets/js/swfobject.js"></script>
7
+ <link rel="stylesheet" media="screen" href="assets/css/main.css" type="text/css" />
8
+ <script type="text/javascript">
9
+ swfobject.registerObject( "<%= project_name %>", "9.0.0", "assets/swf/express_install.swf" );
10
+ </script>
11
+ </head>
12
+ <body>
13
+ <h3><%= project_name %></h3>
14
+ <div>
15
+ <object id="<%= project_name.downcase %>" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="800" height="600">
16
+ <param name="movie" value="<%= project_name.downcase %>.swf" />
17
+ <!--[if !IE]>-->
18
+ <object id="<%= project_name.downcase %>" type="application/x-shockwave-flash" data="<%= project_name.downcase %>.swf" width="800" height="600">
19
+ <!--<![endif]-->
20
+ <div>
21
+ <h1>Alternative content</h1>
22
+ <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
23
+ </div>
24
+ <!--[if !IE]>-->
25
+ </object>
26
+ <!--<![endif]-->
27
+ </object>
28
+ </div>
29
+ </body>
30
+ </html>
@@ -0,0 +1,42 @@
1
+ <?xml version="1.0"?>
2
+ <TypeFaceManager>
3
+ <TypeFaceGroup lang="en">
4
+
5
+ <!-- test for non-embedded fonts -->
6
+ <TypeFace id="sans">
7
+ <TypeFaceStyles>
8
+ <TypeFaceStyle id="sansMain">
9
+ <align>left</align>
10
+ <color>0x0000ff</color>
11
+ <font>_sans</font>
12
+ </TypeFaceStyle>
13
+ </TypeFaceStyles>
14
+ </TypeFace>
15
+
16
+ <!-- test for a simple embedded font -->
17
+ <TypeFace id="arial">
18
+ <Embed>
19
+ <source>arial.ttf</source>
20
+ <fontFamily>Arial</fontFamily>
21
+ <fontWeight>normal</fontWeight>
22
+ <mimeType>application/x-font</mimeType>
23
+ <unicodeRange>U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E</unicodeRange>
24
+ <variable>ARIAL</variable>
25
+ </Embed>
26
+ <TypeFaceStyles>
27
+ <TypeFaceStyle id="main">
28
+ <align>left</align>
29
+ <color>0x0000ff</color>
30
+
31
+ <css>
32
+ <![CDATA[
33
+ .link {
34
+ color: #00ff00;
35
+ }
36
+ ]]>
37
+ </css>
38
+ </TypeFaceStyle>
39
+ </TypeFaceStyles>
40
+ </TypeFace>
41
+ </TypeFaceGroup>
42
+ </TypeFaceManager>
@@ -0,0 +1,15 @@
1
+ package {
2
+ import flash.display.Sprite;
3
+
4
+ /**
5
+ * AssetEmbed
6
+ *
7
+ * Automatically generated embed class.
8
+ */
9
+ public class AssetEmbed extends Sprite {
10
+ <% @assets.each do |asset| %>
11
+ [Embed( source='<%= asset[:source] %>' )]
12
+ public static const <%= asset[:variable] %>:Class;
13
+ <% end %>
14
+ }
15
+ }
@@ -0,0 +1,20 @@
1
+ package {
2
+ import flash.display.Sprite;
3
+ import flash.text.Font;
4
+ /**
5
+ * <%= @fontClassName %>
6
+ *
7
+ * Automatically generated font embed class.
8
+ */
9
+ public class <%= @fontClassName %> extends Sprite {
10
+ <% @group[:fonts].each do |font| %>
11
+ [Embed( source='<%= font[:source] %>',
12
+ fontFamily='<%= font[:fontFamily] %>',
13
+ fontWeight='<%= font[:fontWeight] %>',
14
+ mimeType='<%= font[:mimeType] %>',
15
+ unicodeRange='<%= font[:unicodeRange] %>' )]
16
+ public static const <%= font[:variable] %>:Class;
17
+ Font.registerFont( <%= font[:variable] %> );
18
+ <% end %>
19
+ }
20
+ }
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'sprout'
4
+ sprout 'sprout-as3-bundle'
5
+
6
+ # Add a class name if TestSuites were generated
7
+ if(ARGV.size == 1 && ARGV[0] == 'suite')
8
+ ARGV << 'AllTests'
9
+ end
10
+
11
+ # Insert class type by default
12
+ if(ARGV.size == 1)
13
+ ARGV.unshift('class')
14
+ end
15
+
16
+ # Execute generators like this:
17
+ # script/generate class utils.MathUtil
18
+ # script/generate suite
19
+ # script/generate test utils.MathUtilTest
20
+
21
+ Sprout::Sprout.generate('as3', ARGV.shift, ARGV, File.dirname(File.dirname(__FILE__)))
@@ -0,0 +1,77 @@
1
+ require "erb"
2
+
3
+ task :embed do |t|
4
+
5
+ output_class_name = "AssetEmbed";
6
+
7
+ #path to the embed directory
8
+ embed_dir = File.join( "embed" );
9
+
10
+ #path to erb template directory
11
+ template_dir = File.join( "embed", "template" );
12
+
13
+ #path to the template class file
14
+ embed_template = File.join( template_dir, output_class_name + "Template.as" );
15
+
16
+ #array of embeddable assets
17
+ assets = [];
18
+
19
+ template = File.new( embed_template )
20
+
21
+ if !File.exists?( embed_template )
22
+ puts ERR_NO_TEMPLATE;
23
+ exit( 1 );
24
+ end
25
+
26
+ #now read in the template file
27
+ fp = File.open( embed_template );
28
+ contents = fp.read();
29
+ fp.close();
30
+
31
+ @assets = [];
32
+
33
+ dir_pattern = File.join( embed_dir, "**", "*.{png,jpg,jpeg,mp3,wav,aif}" );
34
+
35
+ dir_contents =
36
+ Dir.glob( dir_pattern );
37
+
38
+ #convert the document to an object structure
39
+ dir_contents.each do |element|
40
+
41
+ source = element;
42
+ source = source.sub( /^embed\//, "" );
43
+
44
+ asset = {
45
+ :source => source,
46
+ :variable => get_class_name( File.basename( element ) ) };
47
+
48
+ @assets.push( asset );
49
+ end
50
+
51
+ #set up the ERB instance using the template
52
+ #previously loaded
53
+ erb = ERB.new <<-EOF
54
+ #{contents}
55
+ EOF
56
+
57
+ #now do the erb template parsing
58
+ result = erb.result( binding );
59
+
60
+ #now write the parsed class file for the font group
61
+ output_file = File.join( embed_dir, output_class_name + ".as" );
62
+
63
+ fp = open( output_file, "w+" );
64
+ fp.write( result );
65
+ fp.close();
66
+
67
+ puts "#{@assets.length} assets embedded in #{output_file}";
68
+
69
+ end
70
+
71
+ def get_class_name( file_name )
72
+ #strip the extension
73
+ file_name = file_name.gsub( /\.[a-zA-Z0-9]+$/, "" );
74
+ #replace spaces with underscores
75
+ file_name.gsub( / /, "_" );
76
+ return file_name.upcase;
77
+ end