OSDN Git Service

こっそり、気持ち程度の日本語化しました (UTF-8 / Windows 環境用)。
[ring-lang-081/annotated-ring-with-OmegaT.git] / source / ringpm / core / packages.ring
1 /*
2         Title : The Ring Package Manager 
3         Date  : 2018.10.18
4         Author: Mahmoud Fayed <msfclipper@yahoo.com>
5 */
6
7 C_ALLPACKAGESINFO_PACKAGENAME = 1
8 C_ALLPACKAGESINFO_RELATED     = 2
9
10 class AllPackagesInfo
11
12         cAllPackagesFile = exefolder()+"allpackages.ring"
13         
14         aAllPackagesInfo = [
15                 # [ Package Name , [ List of packages that use this package ] ]
16         ]
17         
18         func LoadInfo 
19                 if ! fexists(cAllPackagesFile) SaveInfo() return ok
20                 cAllPackagesInfo = read(cAllPackagesFile)
21                 eval(cAllPackagesInfo)
22         
23         func AddPackage  cPackageName 
24                 if find(aAllPackagesInfo,cPackageName,1) return ok
25                 aAllPackagesInfo + [ cPackageName , [] ]
26         
27         func AddRelatedPackage cPackageName,cRelatedPackageName
28                 # Second Package ----> First Package 
29                 # AddRelatedPackage(:FirstPackage,:SecondPackage)
30                 AddPackage(cPackageName)
31                 nPos = find(aAllPackagesInfo,cPackageName,1)
32                 # Add the related package
33                         if ! find(aAllPackagesInfo[nPos][C_ALLPACKAGESINFO_RELATED],cRelatedPackageName)
34                                 aAllPackagesInfo[nPos][C_ALLPACKAGESINFO_RELATED] + cRelatedPackageName
35                         ok
36         
37         func SaveInfo
38                 if len(aAllPackagesInfo) = 0 remove(cAllPackagesFile) return ok
39                 oList2Code = new List2Code
40                 write(cAllPackagesFile,
41                 "aAllPackagesInfo = " + oList2Code.List2Code(aAllPackagesInfo))
42
43         func CheckRelatedPackages cPackageName 
44                 AddPackage(cPackageName)
45                 nPos = find(aAllPackagesInfo,cPackageName,1)
46                 return aAllPackagesInfo[nPos][C_ALLPACKAGESINFO_RELATED]
47
48         func RemovePackage cPackageName 
49                 for t=1 to len(aAllPackagesInfo)
50                         aPackage = aAllPackagesInfo[t]
51                         for x = len(aPackage[C_ALLPACKAGESINFO_RELATED]) to 1 step -1 
52                                 if aPackage[C_ALLPACKAGESINFO_RELATED][x] = cPackageName 
53                                         del(aAllPackagesInfo[t][C_ALLPACKAGESINFO_RELATED],x)
54                                 ok
55                         next 
56                 next 
57
58         func DeleteAllPackagesFile 
59                 remove(cAllPackagesFile)
60                 aAllPackagesInfo = []