Changeset 270

Show
Ignore:
Timestamp:
06/10/07 15:59:07 (18 months ago)
Author:
ged
Message:
  • Started conversion of Test::Unit tests to RSpec (refs #24)
  • Added a Rakefile for common toplevel tasks (refs #24)
  • Converted some more camelCase names to under_barred names.
  • Probably lots of other stuff I'm forgetting.
Location:
trunk
Files:
30 added
61 modified

Legend:

Unmodified
Added
Removed
  • trunk/FaerieMUD.tmproj

    r260 r270  
    44<dict> 
    55    <key>currentDocument</key> 
    6     <string>tests/animatedobject.tests.rb</string> 
     6    <string>spec/entity_spec.rb</string> 
    77    <key>documents</key> 
    88    <array> 
     
    1111            <true/> 
    1212            <key>name</key> 
    13             <string>acceptance</string> 
    14             <key>regexFileFilter</key> 
    15             <string>!(/\.(?!htaccess)[^/]*|\.(tmproj|o|pyc)|/Icon\r)$</string> 
     13            <string>FaerieMUD</string> 
    1614            <key>regexFolderFilter</key> 
    17             <string>!.*/(\.[^/]*|CVS|\{arch\}|build|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> 
     15            <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> 
    1816            <key>sourceDirectory</key> 
    19             <string>acceptance</string> 
    20         </dict> 
    21         <dict> 
    22             <key>expanded</key> 
    23             <true/> 
    24             <key>name</key> 
    25             <string>bin</string> 
    26             <key>regexFileFilter</key> 
    27             <string>!(/\.(?!htaccess)[^/]*|\.(tmproj|o|pyc)|/Icon\r)$</string> 
    28             <key>regexFolderFilter</key> 
    29             <string>!.*/(\.[^/]*|CVS|\{arch\}|build|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> 
    30             <key>sourceDirectory</key> 
    31             <string>bin</string> 
    32         </dict> 
    33         <dict> 
    34             <key>expanded</key> 
    35             <true/> 
    36             <key>name</key> 
    37             <string>docs</string> 
    38             <key>regexFileFilter</key> 
    39             <string>!(/\.(?!htaccess)[^/]*|\.(tmproj|o|pyc)|/Icon\r)$</string> 
    40             <key>regexFolderFilter</key> 
    41             <string>!.*/(\.[^/]*|CVS|\{arch\}|build|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> 
    42             <key>sourceDirectory</key> 
    43             <string>docs</string> 
    44         </dict> 
    45         <dict> 
    46             <key>name</key> 
    47             <string>experiments</string> 
    48             <key>regexFileFilter</key> 
    49             <string>!(/\.(?!htaccess)[^/]*|\.(tmproj|o|pyc)|/Icon\r)$</string> 
    50             <key>regexFolderFilter</key> 
    51             <string>!.*/(\.[^/]*|CVS|\{arch\}|build|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> 
    52             <key>sourceDirectory</key> 
    53             <string>experiments</string> 
    54         </dict> 
    55         <dict> 
    56             <key>expanded</key> 
    57             <true/> 
    58             <key>name</key> 
    59             <string>lib</string> 
    60             <key>regexFileFilter</key> 
    61             <string>!(/\.(?!htaccess)[^/]*|\.(tmproj|o|pyc)|/Icon\r)$</string> 
    62             <key>regexFolderFilter</key> 
    63             <string>!.*/(\.[^/]*|CVS|\{arch\}|build|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> 
    64             <key>sourceDirectory</key> 
    65             <string>lib</string> 
    66         </dict> 
    67         <dict> 
    68             <key>name</key> 
    69             <string>redist</string> 
    70             <key>regexFileFilter</key> 
    71             <string>!(/\.(?!htaccess)[^/]*|\.(tmproj|o|pyc)|/Icon\r)$</string> 
    72             <key>regexFolderFilter</key> 
    73             <string>!.*/(\.[^/]*|CVS|\{arch\}|build|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> 
    74             <key>sourceDirectory</key> 
    75             <string>redist</string> 
    76         </dict> 
    77         <dict> 
    78             <key>name</key> 
    79             <string>specs</string> 
    80             <key>regexFileFilter</key> 
    81             <string>!(/\.(?!htaccess)[^/]*|\.(tmproj|o|pyc)|/Icon\r)$</string> 
    82             <key>regexFolderFilter</key> 
    83             <string>!.*/(\.[^/]*|CVS|\{arch\}|build|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> 
    84             <key>sourceDirectory</key> 
    85             <string>specs</string> 
    86         </dict> 
    87         <dict> 
    88             <key>filename</key> 
    89             <string>TEMPLATE.rb.tpl</string> 
    90         </dict> 
    91         <dict> 
    92             <key>filename</key> 
    93             <string>test.log</string> 
    94             <key>lastUsed</key> 
    95             <date>2005-11-13T21:20:19Z</date> 
    96         </dict> 
    97         <dict> 
    98             <key>filename</key> 
    99             <string>test.rb</string> 
    100             <key>lastUsed</key> 
    101             <date>2006-04-30T01:31:28Z</date> 
    102         </dict> 
    103         <dict> 
    104             <key>expanded</key> 
    105             <true/> 
    106             <key>name</key> 
    107             <string>tests</string> 
    108             <key>regexFileFilter</key> 
    109             <string>!(/\.(?!htaccess)[^/]*|\.(tmproj|o|pyc)|/Icon\r)$</string> 
    110             <key>regexFolderFilter</key> 
    111             <string>!.*/(\.[^/]*|CVS|\{arch\}|build|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> 
    112             <key>sourceDirectory</key> 
    113             <string>tests</string> 
    114         </dict> 
    115         <dict> 
    116             <key>name</key> 
    117             <string>tools</string> 
    118             <key>regexFileFilter</key> 
    119             <string>!(/\.(?!htaccess)[^/]*|\.(tmproj|o|pyc)|/Icon\r)$</string> 
    120             <key>regexFolderFilter</key> 
    121             <string>!.*/(\.[^/]*|CVS|\{arch\}|build|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> 
    122             <key>sourceDirectory</key> 
    123             <string>tools</string> 
    124         </dict> 
    125         <dict> 
    126             <key>filename</key> 
    127             <string>utils.rb</string> 
     17            <string></string> 
    12818        </dict> 
    12919    </array> 
    13020    <key>fileHierarchyDrawerWidth</key> 
    131     <integer>276</integer> 
     21    <integer>266</integer> 
    13222    <key>metaData</key> 
    13323    <dict> 
    134         <key>experiments/personas.rb</key> 
    135         <dict> 
    136             <key>caret</key> 
    137             <dict> 
    138                 <key>column</key> 
    139                 <integer>0</integer> 
    140                 <key>line</key> 
    141                 <integer>0</integer> 
    142             </dict> 
    143             <key>firstVisibleColumn</key> 
    144             <integer>0</integer> 
    145             <key>firstVisibleLine</key> 
    146             <integer>0</integer> 
    147         </dict> 
    148         <key>lib/fm/animatedobject.rb</key> 
    149         <dict> 
    150             <key>caret</key> 
    151             <dict> 
    152                 <key>column</key> 
    153                 <integer>0</integer> 
    154                 <key>line</key> 
    155                 <integer>6</integer> 
    156             </dict> 
    157             <key>firstVisibleColumn</key> 
    158             <integer>0</integer> 
    159             <key>firstVisibleLine</key> 
    160             <integer>0</integer> 
    161         </dict> 
    16224        <key>lib/fm/character.rb</key> 
    16325        <dict> 
     
    16527            <dict> 
    16628                <key>column</key> 
    167                 <integer>0</integer> 
     29                <integer>48</integer> 
    16830                <key>line</key> 
    169                 <integer>49</integer> 
     31                <integer>56</integer> 
    17032            </dict> 
    171             <key>columnSelection</key> 
    172             <false/> 
    17333            <key>firstVisibleColumn</key> 
    17434            <integer>0</integer> 
    17535            <key>firstVisibleLine</key> 
    176             <integer>37</integer> 
    177             <key>selectFrom</key> 
    178             <dict> 
    179                 <key>column</key> 
    180                 <integer>0</integer> 
    181                 <key>line</key> 
    182                 <integer>49</integer> 
    183             </dict> 
    184             <key>selectTo</key> 
    185             <dict> 
    186                 <key>column</key> 
    187                 <integer>0</integer> 
    188                 <key>line</key> 
    189                 <integer>50</integer> 
    190             </dict> 
     36            <integer>86</integer> 
    19137        </dict> 
    19238        <key>lib/fm/composedobject.rb</key> 
     
    19743                <integer>0</integer> 
    19844                <key>line</key> 
    199                 <integer>34</integer> 
     45                <integer>269</integer> 
    20046            </dict> 
    20147            <key>firstVisibleColumn</key> 
    20248            <integer>0</integer> 
    20349            <key>firstVisibleLine</key> 
    204             <integer>43</integer> 
     50            <integer>243</integer> 
    20551        </dict> 
    206         <key>lib/fm/perception.rb</key> 
     52        <key>spec/composedobject_spec.rb</key> 
    20753        <dict> 
    20854            <key>caret</key> 
     
    21157                <integer>0</integer> 
    21258                <key>line</key> 
    213                 <integer>66</integer> 
     59                <integer>18</integer> 
    21460            </dict> 
     61            <key>columnSelection</key> 
     62            <false/> 
    21563            <key>firstVisibleColumn</key> 
    21664            <integer>0</integer> 
    21765            <key>firstVisibleLine</key> 
    218             <integer>12</integer> 
     66            <integer>0</integer> 
     67            <key>selectFrom</key> 
     68            <dict> 
     69                <key>column</key> 
     70                <integer>0</integer> 
     71                <key>line</key> 
     72                <integer>0</integer> 
     73            </dict> 
     74            <key>selectTo</key> 
     75            <dict> 
     76                <key>column</key> 
     77                <integer>0</integer> 
     78                <key>line</key> 
     79                <integer>18</integer> 
     80            </dict> 
    21981        </dict> 
    220         <key>tests/animatedobject.tests.rb</key> 
     82        <key>spec/entity_spec.rb</key> 
    22183        <dict> 
    22284            <key>caret</key> 
     
    22587                <integer>0</integer> 
    22688                <key>line</key> 
    227                 <integer>98</integer> 
     89                <integer>1</integer> 
    22890            </dict> 
    22991            <key>firstVisibleColumn</key> 
    23092            <integer>0</integer> 
    23193            <key>firstVisibleLine</key> 
    232             <integer>39</integer> 
     94            <integer>0</integer> 
    23395        </dict> 
    23496    </dict> 
    23597    <key>openDocuments</key> 
    23698    <array> 
    237         <string>tests/animatedobject.tests.rb</string> 
    238         <string>lib/fm/animatedobject.rb</string> 
    23999        <string>lib/fm/composedobject.rb</string> 
    240         <string>experiments/personas.rb</string> 
     100        <string>spec/composedobject_spec.rb</string> 
     101        <string>spec/entity_spec.rb</string> 
    241102        <string>lib/fm/character.rb</string> 
    242         <string>lib/fm/perception.rb</string> 
    243103    </array> 
    244104    <key>showFileHierarchyDrawer</key> 
    245105    <true/> 
    246106    <key>windowFrame</key> 
    247     <string>{{78, 0}, {1009, 1028}}</string> 
     107    <string>{{61, 6}, {860, 1022}}</string> 
    248108</dict> 
    249109</plist> 
  • trunk/acceptance/epic4.rb

    r250 r270  
    104104        self.log.debug "Tick %d" % [@tickCount] 
    105105        events = @verbs[:tick].invoke( self ) 
    106         self.disperseEvents( events ) 
     106        self.disperse_events( events ) 
    107107        self.chime if (@tickCount % 10).zero? 
    108108    end 
     
    113113        self.log.debug "Chime!" 
    114114        events = @verbs[:chime].invoke( self ) 
    115         self.disperseEvents( events ) 
     115        self.disperse_events( events ) 
    116116    end 
    117117end 
     
    156156            self.log.debug "Result from responding to chime: %p" % 
    157157                [ results ] 
    158             self.disperseEvents( results ) if results 
     158            self.disperse_events( results ) if results 
    159159        else 
    160160            self.log.debug "Ignoring %s" % [ ev.class.name ] 
     
    194194    ### Handle events that are sensed through auditory perception 
    195195    def handleAuditoryEvent( ev ) 
    196         $defout.puts "Observer heard: %s" % describeEvent( ev ) 
     196        $defout.puts "Observer heard: %s" % describe_event( ev ) 
    197197    end 
    198198 
    199199    ### Handle auditory events that contain speech specially. 
    200200    def handleSpeechEvent( ev ) 
    201         prelude = "Observer heard: %s" % describeEvent( ev ) 
     201        prelude = "Observer heard: %s" % describe_event( ev ) 
    202202        $defout.puts %q{%s, "%s"} % [ prelude, ev.words ] 
    203203    end 
     
    205205    ### Handle events sensed through visual perception. 
    206206    def handleVisualEvent( ev ) 
    207         $defout.puts "Observer saw: %s" % describeEvent( ev ) 
     207        $defout.puts "Observer saw: %s" % describe_event( ev ) 
    208208    end 
    209209 
    210210    ### Create a sentence to describe an event. 
    211     def describeEvent( ev ) 
     211    def describe_event( ev ) 
    212212        $deferr.puts ev.inspect 
    213213 
  • trunk/bin/faeriemud.rb

    r254 r270  
    4747# Little world class 
    4848class World < FaerieMUD::Area 
     49     
     50    def initialize( *args ) 
     51        @spirits = [] 
     52        super 
     53    end 
     54 
    4955    def start 
    5056        self.log.notice "Starting the world" 
     
    5359            Thread.current.abort_on_exception = true 
    5460 
    55             while Thread.current[:running] 
    56                 tick = TickVerb.instance.invoke( self, self ) 
    57                 immerseEvents( tick ) 
     61            while Thread.current[:running]  
     62                immerse_events( TickVerb.instance.invoke(self, self) ) 
    5863                sleep 0.5 
     64 
     65                check_spirits 
     66                 
     67                if @spirits.empty? 
     68                    self.log.info "Stopping the world -- no more spirits" 
     69                    self.stop 
     70                end 
    5971            end 
    6072        end 
     
    7385    end 
    7486 
    75     def immerseEvents( *events ) 
     87    def add_spirit( spirit ) 
     88        @spirits << spirit 
     89        spirit.start 
     90    end 
     91 
     92    def check_spirits 
     93        self.log.debug "Checking for dead spirits" 
     94        dead = @spirits.find_all {|spirit| !spirit.running? } 
     95        self.log.debug "  found %d dead spirits" % [dead.length] 
     96 
     97        for spirit in dead 
     98            self.log.info "Removing dead spirit %p" % [spirit] 
     99            begin 
     100                spirit.input_thread.join 
     101            rescue => err 
     102                self.log.error "Spirit stopped with an error: %s\n  %s" % 
     103                    [ err.message, err.backtrace.join("  \n") ] 
     104            end 
     105        end 
     106         
     107        @spirits -= dead 
     108    end 
     109 
     110    def immerse_events( *events ) 
    76111        self.log.debug "Immersing %d event/s" % events.length 
    77112        super 
     
    110145# Create the world 
    111146header "FaerieMUD Explorer" 
     147logger = FaerieMUD::Logger::global 
     148logger.outputters << FaerieMUD::Logger::Outputter::new($deferr) 
     149logger.level = :debug 
    112150 
    113151# Create the character 
     
    123161# Hook up the Spirit's IO callbacks 
    124162message "Setting the Spirit's IO callbacks...\n" 
    125 spirit.onInputReady do |promptText| 
     163spirit.on_input_ready do |promptText| 
    126164    $deferr.puts "Input is ready" 
    127165    promptText ||= DefaultPrompt 
    128166    prompt( promptText ) 
    129167end 
    130 spirit.onOutput do |output| 
     168spirit.on_output do |output| 
    131169    $deferr.puts "Output received" 
    132170    $defout.puts( output ) 
     
    149187$deferr.sync = true 
    150188 
     189message "Starting the spirit and the world...\n" 
     190world.add_spirit( spirit ) 
    151191world.start 
    152192 
     193message "World ended. Shutting down." 
     194world.stop 
    153195 
     196 
  • trunk/docs/FaerieMUD Design Diagrams.graffle

    r254 r270  
    33243324\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 
    33253325 
    3326 \f0\fs24 \cf0 + \ul addAuthorsData()\ 
     3326\f0\fs24 \cf0 + \ul add_authors_data()\ 
    33273327+ contributors(*people:Symbol)\ 
    3328 +distributePoints(*people:Symbol)\ 
    3329 +makeObjectId(object:Object): String\ 
     3328+distribute_points(*people:Symbol)\ 
     3329+make_object_id(object:Object): String\ 
    33303330+rev: Integer\ 
    33313331+abstract(methodName:Symbol)\ 
     
    39083908\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 
    39093909 
    3910 \f0\fs24 \cf0 - eventHandlerCache: Hash}</string> 
     3910\f0\fs24 \cf0 - event_handler_cache: Hash}</string> 
    39113911                            </dict> 
    39123912                            <key>TextPlacement</key> 
     
    39533953\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 
    39543954 
    3955 \f0\fs24 \cf0 + handleEvents( *events=Event )\ 
    3956 - handleAnyEvent( event=Event )\ 
    3957 - getHandlerForEvent( event=Event )}</string> 
     3955\f0\fs24 \cf0 + handle_events( *events=Event )\ 
     3956- handle_any_event( event=Event )\ 
     3957- get_handler_for_event( event=Event )}</string> 
    39583958                            </dict> 
    39593959                            <key>TextPlacement</key> 
     
    1350413504 
    1350513505\f0\fs24 \cf0 + parser: CommandParser\ 
    13506 + animatedObjects: Array\ 
     13506+ animated_objects: Array\ 
    1350713507+ statistics: Hash}</string> 
    1350813508                            </dict> 
  • trunk/docs/makedocs.rb

    r212 r270