aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQieerb <qieerbushe7@gmail.com>2018-03-22 15:06:40 +0000
committerQieerb <qieerbushe7@gmail.com>2018-03-22 15:06:40 +0000
commit77640344e36b5af3d62882dc122217d6a514ae03 (patch)
tree120dd858c30dccb67e795983ac1dc29cb92bea28
parentf1a2e7443470e9b99147f48acf133f0ad5b84461 (diff)
downloadFMark-77640344e36b5af3d62882dc122217d6a514ae03.tar.gz
FMark-77640344e36b5af3d62882dc122217d6a514ae03.zip
agnostic whitespace and refstyle
-rw-r--r--FMark/src/Common/TOCite/RefParse.fs49
-rw-r--r--FMark/src/Common/TOCite/TOCite.fs2
-rw-r--r--FMark/src/Common/TOCite/TOCiteTest.fs2
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";