Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/cm/tools/tools.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/tools/tools.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 353, Thu Jun 24 09:43:28 1999 UTC revision 354, Fri Jun 25 08:36:12 1999 UTC
# Line 77  Line 77 
77      include TOOLS      include TOOLS
78    
79      type smlsource =      type smlsource =
80          { sourcepath: AbsPath.t, history: class list, share: bool option }          { sourcepath: SrcPath.t, history: class list, share: bool option }
81    
82      datatype expansion =      datatype expansion =
83          SMLSOURCE of smlsource          SMLSOURCE of smlsource
84        | GROUP of AbsPath.t        | GROUP of SrcPath.t
85    
86      datatype private_rule =      datatype private_rule =
87          ISSML of bool option          ISSML of bool option
88        | ISGROUP        | ISGROUP
89        | ISTOOL of class * rule        | ISTOOL of class * rule
90    
91      val expand : (string -> unit) -> AbsPath.t * class option -> expansion list      val expand : (string -> unit) -> SrcPath.t * class option -> expansion list
92  end  end
93    
94  structure PrivateTools :> PRIVATETOOLS = struct  structure PrivateTools :> PRIVATETOOLS = struct
# Line 105  Line 105 
105      type rule = fname * rulecontext -> item list      type rule = fname * rulecontext -> item list
106    
107      type smlsource =      type smlsource =
108          { sourcepath: AbsPath.t, history: class list, share: bool option }          { sourcepath: SrcPath.t, history: class list, share: bool option }
109    
110      datatype expansion =      datatype expansion =
111          SMLSOURCE of smlsource          SMLSOURCE of smlsource
112        | GROUP of AbsPath.t        | GROUP of SrcPath.t
113    
114      datatype private_rule =      datatype private_rule =
115          ISSML of bool option          ISSML of bool option
# Line 182  Line 182 
182          (* apply a rule to a path within a given context *)          (* apply a rule to a path within a given context *)
183          fun apply (rule, p, c) = let          fun apply (rule, p, c) = let
184              fun rctxt rf = let              fun rctxt rf = let
185                  val dir = AbsPath.contextName c                  val dir = SrcPath.contextName c
186                  val cwd = OS.FileSys.getDir ()                  val cwd = OS.FileSys.getDir ()
187              in              in
188                  SafeIO.perform { openIt = fn () => OS.FileSys.chDir dir,                  SafeIO.perform { openIt = fn () => OS.FileSys.chDir dir,
# Line 201  Line 201 
201                | loop (acc, ((p, c), history) :: t) = let                | loop (acc, ((p, c), history) :: t) = let
202                      fun step (ISSML share) =                      fun step (ISSML share) =
203                          let                          let
204                              val ap = AbsPath.native { context = context,                              val ap = SrcPath.native { context = context,
205                                                        spec = p }                                                        spec = p }
206                              val src = { sourcepath = ap,                              val src = { sourcepath = ap,
207                                          history = rev history,                                          history = rev history,
# Line 210  Line 210 
210                              loop (SMLSOURCE src :: acc, t)                              loop (SMLSOURCE src :: acc, t)
211                          end                          end
212                        | step ISGROUP = let                        | step ISGROUP = let
213                              val ap = AbsPath.native { context = context,                              val ap = SrcPath.native { context = context,
214                                                        spec = p }                                                        spec = p }
215                          in                          in
216                              loop (GROUP ap :: acc, t)                              loop (GROUP ap :: acc, t)
# Line 234  Line 234 
234          end          end
235    
236          fun expand0 (ap, NONE) =          fun expand0 (ap, NONE) =
237              expand' (AbsPath.contextOf ap) [((AbsPath.specOf ap, NONE), [])]              expand' (SrcPath.contextOf ap) [((SrcPath.specOf ap, NONE), [])]
238            | expand0 (ap, SOME class0) = let            | expand0 (ap, SOME class0) = let
239                  (* classes are case-insensitive, internally we use lowercase *)                  (* classes are case-insensitive, internally we use lowercase *)
240                  val class = String.map Char.toLower class0                  val class = String.map Char.toLower class0
# Line 246  Line 246 
246                    | ISGROUP =>                    | ISGROUP =>
247                          [GROUP ap]                          [GROUP ap]
248                    | ISTOOL (class, rule) => let                    | ISTOOL (class, rule) => let
249                          val c = AbsPath.contextOf ap                          val c = SrcPath.contextOf ap
250                          val l = apply (rule, AbsPath.specOf ap, c)                          val l = apply (rule, SrcPath.specOf ap, c)
251                          val l' = map (fn i => (i, [class])) l                          val l' = map (fn i => (i, [class])) l
252                      in                      in
253                          expand' (AbsPath.contextOf ap) l'                          expand' (SrcPath.contextOf ap) l'
254                      end                      end
255              end              end
256      in      in

Legend:
Removed from v.353  
changed lines
  Added in v.354

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0