diff options
author | Qieerb <qieerbushe7@gmail.com> | 2018-03-22 15:06:40 +0000 |
---|---|---|
committer | Qieerb <qieerbushe7@gmail.com> | 2018-03-22 15:06:40 +0000 |
commit | 77640344e36b5af3d62882dc122217d6a514ae03 (patch) | |
tree | 120dd858c30dccb67e795983ac1dc29cb92bea28 | |
parent | f1a2e7443470e9b99147f48acf133f0ad5b84461 (diff) | |
download | FMark-77640344e36b5af3d62882dc122217d6a514ae03.tar.gz FMark-77640344e36b5af3d62882dc122217d6a514ae03.zip |
agnostic whitespace and refstyle
-rw-r--r-- | FMark/src/Common/TOCite/RefParse.fs | 49 | ||||
-rw-r--r-- | FMark/src/Common/TOCite/TOCite.fs | 2 | ||||
-rw-r--r-- | FMark/src/Common/TOCite/TOCiteTest.fs | 2 |
3 files changed, 34 insertions, 19 deletions
diff --git a/FMark/src/Common/TOCite/RefParse.fs b/FMark/src/Common/TOCite/RefParse.fs index 20808a4..d278324 100644 --- a/FMark/src/Common/TOCite/RefParse.fs +++ b/FMark/src/Common/TOCite/RefParse.fs @@ -152,6 +152,14 @@ let ref2TLine format ref:TLine = urlGen Harvard ref.URL; dateGen Harvard ref.AccessDate] |> List.reduce List.append +let (|Assign|_|) = function + | LITERAL field::WHITESPACE _::EQUAL::WHITESPACE _::tl + | LITERAL field::WHITESPACE _::EQUAL::tl + | LITERAL field::EQUAL::WHITESPACE _::tl + | LITERAL field::EQUAL::tl -> + Some (field, tl) + | _ -> None + // parses a single reference entry // This probably should never see ENDLINE let refParser style tLst = @@ -170,24 +178,31 @@ let refParser style tLst = | _ -> None, tail match tLst with - | LITERAL "type"::WHITESPACE _::EQUAL::WHITESPACE _::LITERAL t::tl -> - match t with - | "Book" -> refPar' {refData with Cat = Some Book} tl - | "Website" -> refPar' {refData with Cat = Some Website} tl + | Assign (f,tl) -> + match f with + | "type" -> + match tl with + | LITERAL "Book"::tl -> refPar' {refData with Cat = Some Book} tl + | LITERAL "Website":: tl -> refPar' {refData with Cat = Some Website} tl + | _ -> refPar' refData tl + | "author" -> + refParse' [] tl + |> fun (x,y) -> refPar' {refData with Author = Some x} y + | "title" -> + refParse' [] tl + |> fun (x,y) -> refPar' {refData with Title = Some x} y + | "year" -> + match tl with + | NUMBER a::tl -> refPar' {refData with Year = Some (int a)} tl + | _ -> refPar' refData tl + | "url" -> + match tl with + | LITERAL s::tl -> refPar' {refData with URL = Some s} tl + | _ -> refPar' refData tl + | "access" -> + dateFormat tl + |> fun (x,y) -> refPar' {refData with AccessDate = x} y | _ -> refPar' refData tl - | LITERAL "author"::WHITESPACE _::EQUAL::WHITESPACE _::tl -> - refParse' [] tl - |> fun (x,y) -> refPar' {refData with Author = Some x} y - | LITERAL "title"::WHITESPACE _::EQUAL::WHITESPACE _::tl -> - refParse' [] tl - |> fun (x,y) -> refPar' {refData with Title = Some x} y - | LITERAL "year"::WHITESPACE _::EQUAL::WHITESPACE _::NUMBER a::tl -> - refPar' {refData with Year = Some (int a)} tl - | LITERAL "url"::WHITESPACE _::EQUAL::WHITESPACE _::LITERAL s::tl -> - refPar' {refData with URL = Some s} tl - | LITERAL "access"::WHITESPACE _::EQUAL::WHITESPACE _::tl -> - dateFormat tl - |> fun (x,y) -> refPar' {refData with AccessDate = x} y | ENDLINE::ENDLINE::tl -> refData,tl | ENDLINE::tl -> refPar' refData tl | _::tl -> refPar' refData tl diff --git a/FMark/src/Common/TOCite/TOCite.fs b/FMark/src/Common/TOCite/TOCite.fs index d6ea4d4..d4b5ba2 100644 --- a/FMark/src/Common/TOCite/TOCite.fs +++ b/FMark/src/Common/TOCite/TOCite.fs @@ -111,7 +111,7 @@ let rec styleParse rLst tocLst = | "IEEE" -> Some IEEE | _ -> None // use default match tocLst with - | ENDLINE::PERCENT::PERCENT::LITERAL "Style"::WHITESPACE _ ::EQUAL::WHITESPACE _ ::LITERAL lit::tl -> + | ENDLINE::PERCENT::PERCENT::LITERAL "RefStyle"::WHITESPACE _ ::EQUAL::WHITESPACE _ ::LITERAL lit::tl -> stylify lit, List.append rLst tl | a::tl -> styleParse (a::rLst) tl | [] -> None, rLst diff --git a/FMark/src/Common/TOCite/TOCiteTest.fs b/FMark/src/Common/TOCite/TOCiteTest.fs index fe1351c..554b464 100644 --- a/FMark/src/Common/TOCite/TOCiteTest.fs +++ b/FMark/src/Common/TOCite/TOCiteTest.fs @@ -201,7 +201,7 @@ let testDataFull = ) "Stupidly big test", - [ENDLINE; PERCENT; PERCENT; LITERAL "Style"; WHITESPACE 1; EQUAL; WHITESPACE 1; LITERAL "Chicago"; + [ENDLINE; PERCENT; PERCENT; LITERAL "RefStyle"; WHITESPACE 1; EQUAL; WHITESPACE 1; LITERAL "Chicago"; ENDLINE; LITERAL "text1"; HASH; LITERAL "text2"; ENDLINE; ENDLINE; HASH; WHITESPACE 1; LITERAL "Header1"; ENDLINE; LITERAL "text3"; LSBRA; CARET; NUMBER "1"; RSBRA; LITERAL "text4"; ENDLINE; ENDLINE; LSBRA; CARET; NUMBER "1"; |