Changeset 12


Ignore:
Timestamp:
11/12/07 16:39:31 (5 years ago)
Author:
dom
Message:

Refactoring: make file type detectable by pattern matching on messages

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/forge.erl

    r11 r12  
    1919            [file_monitor:stop (M) || M <- Monitors]; 
    2020        {monitor_files, File_system, Dir} -> 
    21             Forge = self(), 
    22             Tell_server = fun (Event, File_name, _) -> Forge ! {Event, File_name} end, 
    23             loop (Listeners, Smiths, Dashboard, [file_monitor:start (File_system, Dir, Tell_server)]); 
     21            loop ( 
     22              Listeners, Smiths, Dashboard, 
     23              [file_monitor:start (File_system, Dir, send_me_file_events_with_extension () )]); 
    2424        {add_event_handler, F} -> 
    2525            loop ([F | Listeners], Smiths, Dashboard, Monitors); 
    26         {found, File} -> 
    27             Smith = file_handler (filename:extension (File), File), 
     26        {found, ".erl", File} -> 
     27            Forge = self(), 
     28            Smith = spawn_link (fun () -> smith:start (File, Forge) end), 
    2829            loop (Listeners, add_smith (File, Smith, Smiths), Dashboard, Monitors); 
    29         {modified, File} -> 
     30        {modified, ".erl", File} -> 
    3031            Smith = fetch (File, Smiths), 
    3132            Smith ! {self(), modified}, 
     
    3536            notify (Event, New_dashboard, Listeners), 
    3637            loop (Listeners, Smiths, New_dashboard, Monitors) 
     38    end. 
     39 
     40send_me_file_events_with_extension () -> 
     41    Me = self(), 
     42    fun (Event, File_name, _) -> 
     43            Extension = filename:extension (File_name), 
     44            Me ! {Event, Extension, File_name} 
    3745    end. 
    3846 
     
    4553      Listeners). 
    4654 
    47 file_handler (".erl", File) -> 
    48     Forge = self(), 
    49     spawn_link (fun () -> smith:start (File, Forge) end); 
    50 file_handler (_, _) -> 
    51     no_handler. 
    52  
    5355add_smith (File, Smith, Smiths) when is_pid (Smith) -> 
    5456    store (File, Smith, Smiths); 
Note: See TracChangeset for help on using the changeset viewer.