2
2
from pathlib import Path ,PosixPath
3
3
import sys
4
4
5
+ def enforceOrder (listToBeOrdered ):
6
+ for index ,post in enumerate (listToBeOrdered ):
7
+ if index + 1 != post ['order' ]:
8
+ postToBeAltered = frontmatter .load (post ['path' ])
9
+ postToBeAltered .metadata ['jupyter' ]['plotly' ]['order' ]= index + 1
10
+ frontmatter .dump (postToBeAltered ,post ['path' ])
11
+
12
+ def checkConsecutive (l ):
13
+ return sorted (l )== list (range (1 ,len (l )+ 1 ))
14
+
5
15
categories = ["file_settings" ,"basic" ,"statistical" ,"scientific" ,"maps" ,"3d_charts" ,"multiple_axes" ]
16
+
6
17
try :
7
18
path = str (sys .argv [1 ])
8
19
except :
18
29
if post .metadata ['jupyter' ]['plotly' ]['display_as' ]== category :
19
30
postFamily .append ({'path' :str (md_path ),'order' :post .metadata ['jupyter' ]['plotly' ]['order' ]})
20
31
21
- sortedPostFamily = sorted ( postFamily , key = lambda i : i [ 'order' ] )
32
+ postFamily . append ({ 'path' : 'placeholder' , 'order' : 5 } )
22
33
23
- order = []
24
-
25
- for post in sortedPostFamily :
26
- if post ['order' ]== 5 :
27
- raise Exception ("Order Check Failed! Post {} cannot have order 5!" .format (post ['path' ]))
28
- order .append (post ['order' ])
34
+ sortedPostFamily = sorted (postFamily ,key = lambda i :i ['order' ])
29
35
30
- print ( order )
36
+ order = [ p [ 'order' ] for p in sortedPostFamily ]
31
37
32
38
if order [0 ]!= 1 :
33
- raise Exception ("Order Check Failed! First post in {} display_as does not have order 1!" .format (category ))
39
+ if len (sys .argv )== 3 :
40
+ if sys .argv [2 ]== 'enforce' :
41
+ print ('Order Check Did Not Pass! ENFORCING CORRECT ORDER for {}' .format (category ))
42
+ enforceOrder (sortedPostFamily )
43
+ else :
44
+ raise Exception ("Order Check Failed! First post in {} display_as does not have order 1!" .format (category ))
34
45
35
- def checkConsecutive (l ):
36
- return sorted (l )== list (range (min (l ),max (l )+ 1 ))
46
+
37
47
38
- try :
39
- checkConsecutive (order )
40
- except :
41
- raise Exception ("Order Check Failed! Orders in {} display_as are not consecutive integers!!" .format (category ))
48
+ if not checkConsecutive (order ):
49
+ if len (sys .argv )== 3 :
50
+ if sys .argv [2 ]== 'enforce' :
51
+ print ('Order Check Did Not Pass! ENFORCING CORRECT ORDER for {}' .format (category ))
52
+ enforceOrder (sortedPostFamily )
53
+ else :
54
+ raise Exception ("Order Check Failed! Order front-matter in '{}' display_as are not consecutive integers!!" .format (category ))
42
55
43
56
if len (order )!= len (set (order )):
44
- raise Exception ("Order Check Failed! {} display_as has duplicate order frontmatter!!" .format (category ))
45
-
57
+ if len (sys .argv )== 3 :
58
+ if sys .argv [2 ]== 'enforce' :
59
+ print ('Order Check Did Not Pass! ENFORCING CORRECT ORDER for {}' .format (category ))
60
+ enforceOrder (sortedPostFamily )
61
+ else :
62
+ raise Exception ("Order Check Failed! {} display_as has duplicate order frontmatter!!" .format (category ))
46
63
47
64
print ("Order Checks Passed for {} display_as!" .format (category ))
48
65
order = []