157 lines
4.2 KiB
Plaintext
157 lines
4.2 KiB
Plaintext
; ============================================================================
|
|
; DataModel Module - Data Structures and Utilities
|
|
; ============================================================================
|
|
|
|
Module DataModel
|
|
EnableExplicit
|
|
|
|
; -- Private Procedure Declarations --
|
|
Declare LoadMimeTypes()
|
|
|
|
; ========================================================================
|
|
; Response Parsing Utilities
|
|
; ========================================================================
|
|
|
|
Procedure.s StripPrefix(Result.s, Prefix.s)
|
|
ProcedureReturn RemoveString(Result, Prefix, #PB_String_CaseSensitive, 0, 1)
|
|
EndProcedure
|
|
|
|
Procedure.s GetField(Record.s, Index)
|
|
ProcedureReturn StringField(Record, Index, General::#FieldSeparator)
|
|
EndProcedure
|
|
|
|
Procedure GetRecordCount(Result.s)
|
|
ProcedureReturn CountString(Result, General::#RecordSeparator)
|
|
EndProcedure
|
|
|
|
Procedure.s GetRecord(Result.s, Index)
|
|
ProcedureReturn StringField(Result, Index, General::#RecordSeparator)
|
|
EndProcedure
|
|
|
|
Procedure.b ValidateResponse(Result.s, ExpectedPrefix.s)
|
|
ProcedureReturn Bool(Left(Result, Len(ExpectedPrefix)) = ExpectedPrefix)
|
|
EndProcedure
|
|
|
|
; ========================================================================
|
|
; Formatting for List Display
|
|
; ========================================================================
|
|
|
|
Procedure.s FormatArticleListItem(*Article.Article)
|
|
Protected Status.s
|
|
|
|
If *Article\Draft
|
|
Status = "Draft"
|
|
Else
|
|
Status = "Published"
|
|
EndIf
|
|
|
|
ProcedureReturn *Article\Title + Chr(10) + Status + Chr(10) + FormatDate("%yy-%mm-%dd", *Article\Date)
|
|
EndProcedure
|
|
|
|
Procedure.s FormatTagListItem(*Tag.Tag)
|
|
ProcedureReturn *Tag\DefaultName + Chr(10) + *Tag\Color
|
|
EndProcedure
|
|
|
|
; ========================================================================
|
|
; Lookup Functions
|
|
; ========================================================================
|
|
|
|
Procedure FindArticleByID(ID)
|
|
ForEach Articles()
|
|
If Articles()\ID = ID
|
|
ProcedureReturn #True
|
|
EndIf
|
|
Next
|
|
ProcedureReturn #False
|
|
EndProcedure
|
|
|
|
Procedure FindFileByID(ID)
|
|
ForEach Files()
|
|
If Files()\ID = ID
|
|
ProcedureReturn #True
|
|
EndIf
|
|
Next
|
|
ProcedureReturn #False
|
|
EndProcedure
|
|
|
|
Procedure FindTagByID(ID)
|
|
ForEach Tags()
|
|
If Tags()\ID = ID
|
|
ProcedureReturn #True
|
|
EndIf
|
|
Next
|
|
ProcedureReturn #False
|
|
EndProcedure
|
|
|
|
; ========================================================================
|
|
; MIME Type Loading
|
|
; ========================================================================
|
|
|
|
Procedure LoadMimeTypes()
|
|
Protected.s Ext, Type
|
|
|
|
Restore MimeData
|
|
Read.s Ext
|
|
While Ext <> "END"
|
|
Read.s Type
|
|
MIMETypes(Ext) = Type
|
|
Read.s Ext
|
|
Wend
|
|
EndProcedure
|
|
|
|
; -- Module Initialization --
|
|
LoadMimeTypes()
|
|
|
|
; ========================================================================
|
|
; MIME Type Data
|
|
; ========================================================================
|
|
|
|
DataSection
|
|
MimeData:
|
|
Data.s "aac", "audio/aac"
|
|
Data.s "abw", "application/x-abiword"
|
|
Data.s "apng", "image/apng"
|
|
Data.s "avi", "video/x-msvideo"
|
|
Data.s "bin", "application/octet-stream"
|
|
Data.s "bmp", "image/bmp"
|
|
Data.s "css", "text/css"
|
|
Data.s "csv", "text/csv"
|
|
Data.s "doc", "application/msword"
|
|
Data.s "gif", "image/gif"
|
|
Data.s "htm", "text/html"
|
|
Data.s "html", "text/html"
|
|
Data.s "ico", "image/x-icon"
|
|
Data.s "jpeg", "image/jpeg"
|
|
Data.s "jpg", "image/jpeg"
|
|
Data.s "js", "text/javascript"
|
|
Data.s "json", "application/json"
|
|
Data.s "mp3", "audio/mpeg"
|
|
Data.s "mp4", "video/mp4"
|
|
Data.s "mpeg", "video/mpeg"
|
|
Data.s "otf", "font/otf"
|
|
Data.s "png", "image/png"
|
|
Data.s "pdf", "application/pdf"
|
|
Data.s "php", "application/x-httpd-php"
|
|
Data.s "svg", "image/svg+xml"
|
|
Data.s "txt", "text/plain"
|
|
Data.s "wav", "audio/wav"
|
|
Data.s "webm", "video/webm"
|
|
Data.s "webp", "image/webp"
|
|
Data.s "woff", "font/woff"
|
|
Data.s "woff2", "font/woff2"
|
|
Data.s "xml", "application/xml"
|
|
Data.s "zip", "application/zip"
|
|
Data.s "END"
|
|
EndDataSection
|
|
EndModule
|
|
|
|
; IDE Options = SpiderBasic 3.10 (Linux - x64)
|
|
; CursorPosition = 9
|
|
; FirstLine = 42
|
|
; Folding = BA-
|
|
; iOSAppOrientation = 0
|
|
; AndroidAppCode = 0
|
|
; AndroidAppOrientation = 0
|
|
; EnableXP
|
|
; DPIAware
|
|
; CompileSourceDirectory |