Пусть само пишет

Сегодня за полдня написал небольшой эффектик. Ничего сложного, просто бот сидит пишет программку по некоторым шаблонам и правилам.

Так выглядит XML с шаблонами.

<config>
<node name="const">
<static var="0" color="AAAAAA"/>
</node>
<node name="string">
<static var="0" color="60e18c"/>
</node>
<node name="root">
<input name="site"/>
</node>
<node name="site">
<static text="site " color="00FFFF"/><input name="name"/><static text=" {"/><br/>
<static text="    "/><input name="content"/><br/>
<static text="}"/>
</node>
<node name="statement">
<input name="statement"/>
</node>
<node name="expression">
<input name="expression"/>
</node>
<node name="variable">
<static text="var "/><input name="name"/><static text=" = "/><input name="value"/>
</node>
<node name="object">
<static var="0" color="00FFFF"/><static text="."/><input name="method"/>
</node>
<node name="function">
<static var="0" color="AAAAAA"/><static text="( "/><input name="parameters"/><static text=" )"/>
</node>
<node name="quotes">
<static text=""" color="60e18c"/><input name="string"/><static text=""" color="60e18c"/>
</node>
</config>

А так, собственно, код.

q.addNodeText( ":site", "site", "site", 200, 500 );
q.addConstText( "site:name", "ru.valyard.site", 200 );
q.addNodeList( "site:content", "statement" );

var c: String = "site.content";

q.addText( c+".0:statement", "Application", 200 );
q.addNode( c, "object", ["Application"], 500 );
q.addNodeText( c+".0:method", "function", "addModules", 200, 500 );
q.addNodeList( c+".0.method:parameters", "expression", ", " );

var p: String = c+".0.method.parameters";
q.addText( p+".0:expression", "\"", 200 );
q.addNode( p, "quotes" );
q.addStringText( p+".0:string", "Test", 200, 500 );
q.addText( p+".1:expression", "\"", 200 );
q.addNode( p, "quotes" );
q.addStringText( p+".1:string", "Apple", 200, 500 );
q.addText( p+".2:expression", "\"", 200 );
q.addNode( p, "quotes" );
q.addStringText( p+".2:string", "Warcraft LOL", 200, 500 );

q.addText( c+".1:statement", "var", 200 )
q.addNode( c, "variable", null, 500 );
q.addConstText( c+".1:name", "module", 200, 500 );
q.addNodeText( c+".1:value", "object", "Application", 200, 500 );
q.addNodeText( c+".1.value:method", "function", "loadModule", 200, 500 );

Не знаю, что с жтим делать кроме того назначения, ради которого он был написан. Но добавлять новые шаблончики и перекрашивать старые чрезвычайно удобно. Так как данные хранятся в дереве, легко можно удалять части написанной программы, переписывать ее части.

1 Responses to “Пусть само пишет”


  • Очень прикольно! Почему-то сразу захотелось заглянуть на source.valyard.ru. Хм..

Leave a Reply