' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
 '   g e n e r a t e C o n t r o l l e r . v b s 
 ' 
 '   U s a g e : 
 '       c s c r i p t   / / n o l o g o   g e n e r a t e C o n t r o l l e r . v b s   C o n t r o l l e r N a m e   " S u b 1 ; S u b 2 ( p a r a m 1 , p a r a m 2 ) ; S u b 3 " 
 ' 
 '   G e n e r a t e s   a   c o n t r o l l e r   c l a s s   f i l e   w i t h   s p e c i f i e d   a c t i o n   m e t h o d s 
 ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
 
 O p t i o n   E x p l i c i t 
 
 D i m   a r g s ,   c o n t r o l l e r N a m e ,   s u b s L i s t ,   s u b s ,   f s o ,   f i l e N a m e ,   o u t p u t P a t h 
 
 '   P a r s e   a r g u m e n t s 
 S e t   a r g s   =   W S c r i p t . A r g u m e n t s 
 I f   a r g s . C o u n t   <   2   T h e n 
         W S c r i p t . E c h o   " U s a g e :   c s c r i p t   / / n o l o g o   g e n e r a t e C o n t r o l l e r . v b s   C o n t r o l l e r N a m e   " " S u b 1 ; S u b 2 ( p a r a m 1 , p a r a m 2 ) ; . . . " " " 
         W S c r i p t . E c h o   " " 
         W S c r i p t . E c h o   " E x a m p l e :   c s c r i p t   / / n o l o g o   g e n e r a t e C o n t r o l l e r . v b s   U s e r   " " I n d e x ; S h o w ( i d ) ; C r e a t e ; U p d a t e ( i d ) " " " 
         W S c r i p t . Q u i t   1 
 E n d   I f 
 
 c o n t r o l l e r N a m e   =   a r g s ( 0 ) 
 s u b s L i s t   =   a r g s ( 1 ) 
 
 '   V a l i d a t e   c o n t r o l l e r   n a m e   f o r m a t   ( a l p h a n u m e r i c   a n d   u n d e r s c o r e   o n l y ) 
 I f   N o t   I s V a l i d I d e n t i f i e r ( c o n t r o l l e r N a m e )   T h e n 
         W S c r i p t . E c h o   " E r r o r :   I n v a l i d   c o n t r o l l e r   n a m e   f o r m a t .   O n l y   l e t t e r s ,   n u m b e r s ,   a n d   u n d e r s c o r e s   a r e   a l l o w e d . " 
         W S c r i p t . Q u i t   1 
 E n d   I f 
 
 '   P a r s e   a c t i o n   m e t h o d s 
 s u b s   =   S p l i t ( s u b s L i s t ,   " ; " ) 
 
 '   D e t e r m i n e   o u t p u t   p a t h 
 S e t   f s o   =   C r e a t e O b j e c t ( " S c r i p t i n g . F i l e S y s t e m O b j e c t " ) 
 o u t p u t P a t h   =   f s o . G e t P a r e n t F o l d e r N a m e ( W S c r i p t . S c r i p t F u l l N a m e ) 
 f i l e N a m e   =   f s o . B u i l d P a t h ( o u t p u t P a t h ,   c o n t r o l l e r N a m e   &   " C o n t r o l l e r . a s p " ) 
 
 '   C h e c k   i f   f i l e   a l r e a d y   e x i s t s 
 I f   f s o . F i l e E x i s t s ( f i l e N a m e )   T h e n 
         W S c r i p t . E c h o   " E r r o r :   C o n t r o l l e r   f i l e   a l r e a d y   e x i s t s :   "   &   f i l e N a m e 
         W S c r i p t . E c h o   " D e l e t e   t h e   e x i s t i n g   f i l e   o r   c h o o s e   a   d i f f e r e n t   c o n t r o l l e r   n a m e . " 
         W S c r i p t . Q u i t   1 
 E n d   I f 
 
 '   G e n e r a t e   t h e   c o n t r o l l e r   f i l e 
 D i m   c o n t e n t 
 c o n t e n t   =   B u i l d C o n t r o l l e r ( c o n t r o l l e r N a m e ,   s u b s ) 
 
 '   W r i t e   t o   f i l e 
 D i m   f i l e 
 S e t   f i l e   =   f s o . C r e a t e T e x t F i l e ( f i l e N a m e ,   T r u e ,   F a l s e ) 
 f i l e . W r i t e   c o n t e n t 
 f i l e . C l o s e 
 S e t   f i l e   =   N o t h i n g 
 S e t   f s o   =   N o t h i n g 
 
 W S c r i p t . E c h o   " C o n t r o l l e r   f i l e   c r e a t e d :   "   &   f i l e N a m e 
 W S c r i p t . E c h o   " " 
 W S c r i p t . E c h o   " N e x t   s t e p s : " 
 W S c r i p t . E c h o   " 1 .   M o v e   "   &   f i l e N a m e   &   "   t o   a p p / c o n t r o l l e r s / " 
 W S c r i p t . E c h o   " 2 .   A d d   t h i s   l i n e   t o   a p p / c o n t r o l l e r s / a u t o l o a d _ c o n t r o l l e r s . a s p : " 
 W S c r i p t . E c h o   "       < ! - - # i n c l u d e   f i l e = " " "   &   c o n t r o l l e r N a m e   &   " C o n t r o l l e r . a s p " " - - > " 
 W S c r i p t . E c h o   " 3 .   R e g i s t e r   i n   c o r e / l i b . C o n t r o l l e r R e g i s t r y . a s p : " 
 W S c r i p t . E c h o   "       R e g i s t e r C o n t r o l l e r   " " "   &   L C a s e ( c o n t r o l l e r N a m e )   &   " c o n t r o l l e r " " " 
 W S c r i p t . E c h o   " 4 .   A d d   r o u t e s   i n   p u b l i c / D e f a u l t . a s p " 
 
 ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
 '   B u i l d   c o n t r o l l e r   c o n t e n t   u s i n g   a r r a y - b a s e d   s t r i n g   b u i l d i n g 
 ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
 F u n c t i o n   B u i l d C o n t r o l l e r ( c t r l N a m e ,   a c t i o n s A r r a y ) 
         D i m   p a r t s ( ) 
         R e D i m   p a r t s ( 5 0 0 )   '   P r e - a l l o c a t e   f o r   p e r f o r m a n c e 
         D i m   p a r t I d x   :   p a r t I d x   =   0 
 
         D i m   c l a s s N a m e   :   c l a s s N a m e   =   c t r l N a m e   &   " C o n t r o l l e r _ C l a s s " 
         D i m   f u n c N a m e   :   f u n c N a m e   =   c t r l N a m e   &   " C o n t r o l l e r " 
 
         '   H e a d e r   c o m m e n t s 
         p a r t s ( p a r t I d x )   =   " < % "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   " '   A u t o - g e n e r a t e d   C o n t r o l l e r :   "   &   c t r l N a m e   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   " '   G e n e r a t e d   o n   "   &   N o w ( )   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   " '   G e n e r a t o r :   g e n e r a t e C o n t r o l l e r . v b s   v 1 . 0 "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   " ' "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   " '   R e m e m b e r   t o : "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   " '       1 .   A d d   t o   a p p / c o n t r o l l e r s / a u t o l o a d _ c o n t r o l l e r s . a s p "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   " '       2 .   R e g i s t e r   i n   c o r e / l i b . C o n t r o l l e r R e g i s t r y . a s p "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   " '       3 .   A d d   r o u t e s   i n   p u b l i c / D e f a u l t . a s p "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   v b C r L f   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
 
         '   C l a s s   d e f i n i t i o n 
         p a r t s ( p a r t I d x )   =   " C l a s s   "   &   c l a s s N a m e   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "         P r i v a t e   m _ u s e L a y o u t "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "         P r i v a t e   m _ t i t l e "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
 
         '   C l a s s _ I n i t i a l i z e 
         p a r t s ( p a r t I d x )   =   "         P r i v a t e   S u b   C l a s s _ I n i t i a l i z e ( ) "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "                 m _ u s e L a y o u t   =   T r u e "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "                 m _ t i t l e   =   " " "   &   c t r l N a m e   &   " " " "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "         E n d   S u b "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
 
         '   u s e L a y o u t   p r o p e r t y 
         p a r t s ( p a r t I d x )   =   "         P u b l i c   P r o p e r t y   G e t   u s e L a y o u t "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "                 u s e L a y o u t   =   m _ u s e L a y o u t "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "         E n d   P r o p e r t y "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "         P u b l i c   P r o p e r t y   L e t   u s e L a y o u t ( v ) "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "                 m _ u s e L a y o u t   =   v "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "         E n d   P r o p e r t y "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
 
         '   T i t l e   p r o p e r t y 
         p a r t s ( p a r t I d x )   =   "         P u b l i c   P r o p e r t y   G e t   T i t l e "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "                 T i t l e   =   m _ t i t l e "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "         E n d   P r o p e r t y "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "         P u b l i c   P r o p e r t y   L e t   T i t l e ( v ) "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "                 m _ t i t l e   =   v "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "         E n d   P r o p e r t y "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
 
         '   G e n e r a t e   a c t i o n   m e t h o d s 
         D i m   i ,   a c t i o n D e f ,   n a m e P a r t ,   p a r a m s P a r t ,   p a r a m s A r r 
         F o r   i   =   0   T o   U B o u n d ( a c t i o n s A r r a y ) 
                 a c t i o n D e f   =   T r i m ( a c t i o n s A r r a y ( i ) ) 
 
                 '   S k i p   e m p t y   e n t r i e s 
                 I f   L e n ( a c t i o n D e f )   >   0   T h e n 
                         '   P a r s e   a c t i o n   n a m e   a n d   p a r a m e t e r s 
                         I f   I n S t r ( a c t i o n D e f ,   " ( " )   >   0   T h e n 
                                 n a m e P a r t   =   T r i m ( L e f t ( a c t i o n D e f ,   I n S t r ( a c t i o n D e f ,   " ( " )   -   1 ) ) 
                                 p a r a m s P a r t   =   M i d ( a c t i o n D e f ,   I n S t r ( a c t i o n D e f ,   " ( " )   +   1 ) 
                                 p a r a m s P a r t   =   L e f t ( p a r a m s P a r t ,   L e n ( p a r a m s P a r t )   -   1 )   '   S t r i p   t r a i l i n g   ' ) ' 
                                 p a r a m s P a r t   =   T r i m ( p a r a m s P a r t ) 
 
                                 '   V a l i d a t e   p a r a m e t e r   n a m e s 
                                 I f   L e n ( p a r a m s P a r t )   >   0   T h e n 
                                         p a r a m s A r r   =   S p l i t ( p a r a m s P a r t ,   " , " ) 
                                         D i m   j ,   p a r a m N a m e 
                                         F o r   j   =   0   T o   U B o u n d ( p a r a m s A r r ) 
                                                 p a r a m N a m e   =   T r i m ( p a r a m s A r r ( j ) ) 
                                                 I f   N o t   I s V a l i d I d e n t i f i e r ( p a r a m N a m e )   T h e n 
                                                         W S c r i p t . E c h o   " E r r o r :   I n v a l i d   p a r a m e t e r   n a m e   ' "   &   p a r a m N a m e   &   " '   i n   a c t i o n   ' "   &   a c t i o n D e f   &   " ' " 
                                                         W S c r i p t . Q u i t   1 
                                                 E n d   I f 
                                         N e x t 
                                 E n d   I f 
                         E l s e 
                                 n a m e P a r t   =   T r i m ( a c t i o n D e f ) 
                                 p a r a m s P a r t   =   " " 
                         E n d   I f 
 
                         '   V a l i d a t e   a c t i o n   n a m e 
                         I f   N o t   I s V a l i d I d e n t i f i e r ( n a m e P a r t )   T h e n 
                                 W S c r i p t . E c h o   " E r r o r :   I n v a l i d   a c t i o n   n a m e   ' "   &   n a m e P a r t   &   " ' " 
                                 W S c r i p t . Q u i t   1 
                         E n d   I f 
 
                         '   G e n e r a t e   m e t h o d   s t u b 
                         p a r t s ( p a r t I d x )   =   "         ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
                         p a r t s ( p a r t I d x )   =   "         '   A c t i o n :   "   &   n a m e P a r t   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
                         p a r t s ( p a r t I d x )   =   "         ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
 
                         I f   p a r a m s P a r t   =   " "   T h e n 
                                 p a r t s ( p a r t I d x )   =   "         P u b l i c   S u b   "   &   n a m e P a r t   &   " ( ) "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
                                 p a r t s ( p a r t I d x )   =   "                 '   T O D O :   I m p l e m e n t   "   &   n a m e P a r t   &   "   a c t i o n "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
                                 p a r t s ( p a r t I d x )   =   "                 R e s p o n s e . W r i t e   " " "   &   n a m e P a r t   &   "   a c t i o n   c a l l e d " " "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
                         E l s e 
                                 p a r t s ( p a r t I d x )   =   "         P u b l i c   S u b   "   &   n a m e P a r t   &   " ( "   &   p a r a m s P a r t   &   " ) "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
                                 p a r t s ( p a r t I d x )   =   "                 '   T O D O :   I m p l e m e n t   "   &   n a m e P a r t   &   "   a c t i o n "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
                                 p a r t s ( p a r t I d x )   =   "                 R e s p o n s e . W r i t e   " " < s t r o n g > "   &   n a m e P a r t   &   "   c a l l e d < / s t r o n g > < b r > " " "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
                                 p a r t s ( p a r t I d x )   =   "                 R e s p o n s e . W r i t e   " " P a r a m e t e r s : < b r > " " "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
 
                                 '   E c h o   e a c h   p a r a m e t e r 
                                 p a r a m s A r r   =   S p l i t ( p a r a m s P a r t ,   " , " ) 
                                 F o r   j   =   0   T o   U B o u n d ( p a r a m s A r r ) 
                                         p a r a m N a m e   =   T r i m ( p a r a m s A r r ( j ) ) 
                                         p a r t s ( p a r t I d x )   =   "                 R e s p o n s e . W r i t e   " " "   &   p a r a m N a m e   &   "   =   " "   &   S e r v e r . H T M L E n c o d e ( C S t r ( "   &   p a r a m N a m e   &   " ) )   &   " " < b r > " " "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
                                 N e x t 
                         E n d   I f 
 
                         p a r t s ( p a r t I d x )   =   "         E n d   S u b "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
                         p a r t s ( p a r t I d x )   =   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
                 E n d   I f 
         N e x t 
 
         '   E n d   c l a s s 
         p a r t s ( p a r t I d x )   =   " E n d   C l a s s "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
 
         '   S i n g l e t o n   p a t t e r n 
         p a r t s ( p a r t I d x )   =   " '   S i n g l e t o n   i n s t a n c e "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   " D i m   "   &   c l a s s N a m e   &   " _ _ S i n g l e t o n "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   " F u n c t i o n   "   &   f u n c N a m e   &   " ( ) "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "         I f   I s E m p t y ( "   &   c l a s s N a m e   &   " _ _ S i n g l e t o n )   T h e n "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "                 S e t   "   &   c l a s s N a m e   &   " _ _ S i n g l e t o n   =   N e w   "   &   c l a s s N a m e   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "         E n d   I f "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   "         S e t   "   &   f u n c N a m e   &   "   =   "   &   c l a s s N a m e   &   " _ _ S i n g l e t o n "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   " E n d   F u n c t i o n "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
         p a r t s ( p a r t I d x )   =   " % > "   &   v b C r L f   :   p a r t I d x   =   p a r t I d x   +   1 
 
         '   J o i n   a r r a y   f o r   p e r f o r m a n c e 
         R e D i m   P r e s e r v e   p a r t s ( p a r t I d x   -   1 ) 
         B u i l d C o n t r o l l e r   =   J o i n ( p a r t s ,   " " ) 
 E n d   F u n c t i o n 
 
 ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
 '   V a l i d a t e   i d e n t i f i e r   ( c o n t r o l l e r   n a m e ,   a c t i o n   n a m e ,   p a r a m e t e r   n a m e ) 
 ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
 F u n c t i o n   I s V a l i d I d e n t i f i e r ( n a m e ) 
         I f   I s E m p t y ( n a m e )   O r   L e n ( n a m e )   =   0   T h e n 
                 I s V a l i d I d e n t i f i e r   =   F a l s e 
                 E x i t   F u n c t i o n 
         E n d   I f 
 
         D i m   i ,   c h 
         F o r   i   =   1   T o   L e n ( n a m e ) 
                 c h   =   M i d ( n a m e ,   i ,   1 ) 
                 '   A l l o w   a - z ,   A - Z ,   0 - 9 ,   a n d   u n d e r s c o r e   o n l y 
                 I f   N o t   ( ( c h   > =   " a "   A n d   c h   < =   " z " )   O r   _ 
                                 ( c h   > =   " A "   A n d   c h   < =   " Z " )   O r   _ 
                                 ( c h   > =   " 0 "   A n d   c h   < =   " 9 " )   O r   _ 
                                 c h   =   " _ " )   T h e n 
                         I s V a l i d I d e n t i f i e r   =   F a l s e 
                         E x i t   F u n c t i o n 
                 E n d   I f 
         N e x t 
 
         I s V a l i d I d e n t i f i e r   =   T r u e 
 E n d   F u n c t i o n 
 