Project Description
Code Snippet Editor fot MS Visual Studio 2005 and 2008 with using XML

http://rudisweb.qsh.cz - RudisBlog: my notes

V rámci soutěže se tato práce umístila na hezkém 3.místě.

Zadání soutěžní úlohy:

Visual Studio .NET podporuje vkládání tzv. Code Snippets. Jedná se o možnost rychlého používání často opakujících se kousků kódu. Pokud například napíšete slovo for a stisknete tabulátor, Visual Studio vám doplní základní strukturu For cyklu. Takovýchto snippetů je nepřeberné množství, nemusí to být jenom syntaktické konstrukce jazyka, ale patří sem i komplexnější kusy kódu, například připojení k databázi a spuštění SQL příkazu, stažení souboru z webu atd. Jejich kompletní sadu si můžete prohlédnout, pokud ve Visual Studiu podržíte klávesu ctrl a zmáčknete k a x.

Code Snippet může obsahovat tzv. placeholdery. Placeholder je místo, na které můžete dosadit nějakou vlastní hodnotu, na obrázku jsou vyznačeny zeleně. V praxi to vypadá tak, že napíšete příkladně ve VB.NET slovo property a stisknete tabulátor. Objeví se kód, který je na obrázku, a modře se zvýrazní první placeholder. Tam napíšete název privátní proměnné a tabulátorem se přepnete na další placeholder. Název privátní proměnné se doplní i do placeholderů v sekcích Get a Set, protože na nich mají být stejné hodnoty. Stejně tak i placeholder s datovým typem String je ve snippetu víckrát, když ho tedy změníme na jednom místě, změní se všude.

Obrovskou výhodou je, že kromě té hromady vestavěných code snippetů si můžeme sami nadefinovat vlastní. Snippety jsou popsány v souborech s příponou .snippet a uložené ve složce Dokumenty\Visual Studio verze\Code Snippets\jazyk\My Code Snippets, k popisu snippetu se používá formát XML. Vaším úkolem bude napsat program, v němž bude možné vlastní snippety vytvářet a upravovat.

Požadované funkce


Každý placeholder je popsán v příslušné sekci Literal. ID je hodnota, která je uvedena v kódu mezi znaky $, v našem případě bude například Placeholder1, Placeholder2 atd. Elementy Type, Tooltip a Function nás nebudou zajímat, důležitý je element DefaultValue, který bude obsahovat hodnotu, jež se do placeholderu předvyplní automaticky při vložení snippetu.

Pak už následuje sekce Code. Atribut Language určuje programovací jazyk, v našem případě uvažujeme hodnoty VB nebo CSharp. Atribut Kind určuje místo, kde se snippet bude používat. To by mělo jít také v aplikaci zvolit, možné hodnoty jsou tři - type decl (Deklarace tříd a typů), method decl (Deklarace funkcí a vlastností) a method body (Kód uvnitř metody). Atribut Delimeter určuje znak, kterým jsou placeholdery ohraničeny. U nových snippetů jej bude aplikace ukládat vždy jako $, načíst ale musí umět i snippet, který má delimeter jiný! Při ukládání snippetu s jiným oddělovačem může nechat ten původní, nebo ho zkonvertovat na $.

Uvnitř elementu Code je pak samotný kód snippetu (v konstrukci CDATA), to je celé. Doporučuji stáhnout si aplikaci Visual Studio Code Snippet Editor a použít ji jako inspiraci co se týče generovaného kódu. Upozorňuji, že tato aplikace má poměrně dost nedostatků, kterými se raději neinspirujte. Samotné snippety ale vytváří korektně.

Abyste získali plný počet bodů, je nutné, aby aplikace uměla všechny funkce popsané v zadání. Pokud toho bude umět více, můžete získat nějaké bonusové body. Kreativitě se meze nekladou. Snažte se, aby aplikace byla uživatelsky přívětivá a její ovládání intuitivní, pamatujte, že lepší je funkční aplikace se standardním systémovým vzhledem komponent, než aplikace, která podporuje vlastní skiny a cool efekty, ale hlavní funkce nemá dotažené do konce.

Stránky soutěže

http://soutez.vbnet.cz

Moje poznámky a další soutěžní úlohy

http://rudisweb.qsh.cz