Skip to content
This repository has been archived by the owner on Apr 30, 2021. It is now read-only.

Commit

Permalink
Disregard ayn and hamza in sorting Arabic names.
Browse files Browse the repository at this point in the history
Closes #320 again.
  • Loading branch information
jgm committed Feb 16, 2018
1 parent d28ccb4 commit 2b82e4b
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/Text/CSL/Style.hs
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,10 @@ compare' x y
where
normalize = map (\c -> if c == ',' || c == '.' then ' ' else c) .
filter (\c -> c == ',' ||
not (isPunctuation c || Char.isSpace c))
not (isPunctuation c || Char.isSpace c
-- ayn/hamza in transliterated arabic:
|| c == 'ʾ' || c == 'ʿ'
))
#ifdef UNICODE_COLLATION
comp a b = T.collate (T.collator T.Current) (T.pack a) (T.pack b)
#else
Expand Down
19 changes: 19 additions & 0 deletions tests/issue320a.expected.native
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Pandoc (Meta {unMeta = fromList [("references",MetaList [MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "\702Udhr\299"]),("given",MetaInlines [Str "Jam\299l"]),("non-dropping-particle",MetaInlines [Str "al-"]),("note",MetaInlines [Str "ayn"])])]),("id",MetaInlines [Str "item1"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "\703Udhr\299"]),("given",MetaInlines [Str "Jam\299l"]),("non-dropping-particle",MetaInlines [Str "al-"]),("note",MetaInlines [Str "hamza"])])]),("id",MetaInlines [Str "item2"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "'Udhr\299"]),("given",MetaInlines [Str "Jam\299l"]),("non-dropping-particle",MetaInlines [Str "al-"]),("note",MetaInlines [Str "straight",Space,Str "apostrophe"])])]),("id",MetaInlines [Str "item3"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "\8216Udhr\299"]),("given",MetaInlines [Str "Jam\299l"]),("non-dropping-particle",MetaInlines [Str "al-"]),("note",MetaInlines [Str "inverted",Space,Str "apostrophe",Space,Str "=",Space,Str "opening",Space,Str "single",Space,Str "curly",Space,Str "quote",Space,Str "(for",Space,Str "ayn)"])])]),("id",MetaInlines [Str "item4"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "\8217Udhr\299"]),("given",MetaInlines [Str "Jam\299l"]),("non-dropping-particle",MetaInlines [Str "al-"]),("note",MetaInlines [Str "apostrophe",Space,Str "=",Space,Str "closing",Space,Str "single",Space,Str "curly",Space,Str "quote",Space,Str "(for",Space,Str "hamza)"])])]),("id",MetaInlines [Str "item5"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Uch"]),("given",MetaInlines [Str "Ann"])])]),("id",MetaInlines [Str "item6"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Uebel"]),("given",MetaInlines [Str "Joe"])])]),("id",MetaInlines [Str "item7"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Zzz"]),("given",MetaInlines [Str "Zoe"])])]),("id",MetaInlines [Str "item8"])])])]})
[Para [Str "Foo",Space,Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1},Citation {citationId = "item2", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 2},Citation {citationId = "item3", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 3},Citation {citationId = "item4", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 4},Citation {citationId = "item5", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 5},Citation {citationId = "item6", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 6},Citation {citationId = "item7", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 7},Citation {citationId = "item8", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 8}] [Str "(al-\702Udhr\299,",Space,Str "n.d.;",Space,Str "al-\703Udhr\299,",Space,Str "n.d.;",Space,Str "al-'Udhr\299,",Space,Str "n.d.;",Space,Str "al-\8216Udhr\299,",Space,Str "n.d.;",Space,Str "al-\8217Udhr\299,",Space,Str "n.d.;",Space,Str "Uch,",Space,Str "n.d.;",Space,Str "Uebel,",Space,Str "n.d.;",Space,Str "Zzz,",Space,Str "n.d.)"],Str "."]
,Div ("refs",["references"],[])
[Div ("ref-item6",[],[])
[Para [Str "Uch,",Space,Str "Ann.",Space,Str "n.d."]]
,Div ("ref-item1",[],[])
[Para [Str "\702Udhr\299,",Space,Str "Jam\299l",Space,Str "al-.",Space,Str "n.d."]]
,Div ("ref-item2",[],[])
[Para [Str "\703Udhr\299,",Space,Str "Jam\299l",Space,Str "al-.",Space,Str "n.d."]]
,Div ("ref-item3",[],[])
[Para [Str "'Udhr\299,",Space,Str "Jam\299l",Space,Str "al-.",Space,Str "n.d."]]
,Div ("ref-item4",[],[])
[Para [Str "\8216Udhr\299,",Space,Str "Jam\299l",Space,Str "al-.",Space,Str "n.d."]]
,Div ("ref-item5",[],[])
[Para [Str "\8217Udhr\299,",Space,Str "Jam\299l",Space,Str "al-.",Space,Str "n.d."]]
,Div ("ref-item7",[],[])
[Para [Str "Uebel,",Space,Str "Joe.",Space,Str "n.d."]]
,Div ("ref-item8",[],[])
[Para [Str "Zzz,",Space,Str "Zoe.",Space,Str "n.d."]]]]
2 changes: 2 additions & 0 deletions tests/issue320a.in.native
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Pandoc (Meta {unMeta = fromList [("references",MetaList [MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "\702Udhr\299"]),("given",MetaInlines [Str "Jam\299l"]),("non-dropping-particle",MetaInlines [Str "al-"]),("note",MetaInlines [Str "ayn"])])]),("id",MetaInlines [Str "item1"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "\703Udhr\299"]),("given",MetaInlines [Str "Jam\299l"]),("non-dropping-particle",MetaInlines [Str "al-"]),("note",MetaInlines [Str "hamza"])])]),("id",MetaInlines [Str "item2"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "'Udhr\299"]),("given",MetaInlines [Str "Jam\299l"]),("non-dropping-particle",MetaInlines [Str "al-"]),("note",MetaInlines [Str "straight",Space,Str "apostrophe"])])]),("id",MetaInlines [Str "item3"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "\8216Udhr\299"]),("given",MetaInlines [Str "Jam\299l"]),("non-dropping-particle",MetaInlines [Str "al-"]),("note",MetaInlines [Str "inverted",Space,Str "apostrophe",Space,Str "=",Space,Str "opening",Space,Str "single",Space,Str "curly",Space,Str "quote",Space,Str "(for",Space,Str "ayn)"])])]),("id",MetaInlines [Str "item4"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "\8217Udhr\299"]),("given",MetaInlines [Str "Jam\299l"]),("non-dropping-particle",MetaInlines [Str "al-"]),("note",MetaInlines [Str "apostrophe",Space,Str "=",Space,Str "closing",Space,Str "single",Space,Str "curly",Space,Str "quote",Space,Str "(for",Space,Str "hamza)"])])]),("id",MetaInlines [Str "item5"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Uch"]),("given",MetaInlines [Str "Ann"])])]),("id",MetaInlines [Str "item6"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Uebel"]),("given",MetaInlines [Str "Joe"])])]),("id",MetaInlines [Str "item7"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Zzz"]),("given",MetaInlines [Str "Zoe"])])]),("id",MetaInlines [Str "item8"])])])]})
[Para [Str "Foo",Space,Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0},Citation {citationId = "item2", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0},Citation {citationId = "item3", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0},Citation {citationId = "item4", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0},Citation {citationId = "item5", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0},Citation {citationId = "item6", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0},Citation {citationId = "item7", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0},Citation {citationId = "item8", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "[@item1;",Space,Str "@item2;",Space,Str "@item3;",Space,Str "@item4;",Space,Str "@item5;",Space,Str "@item6;",Space,Str "@item7;",Space,Str "@item8]"],Str "."]]

0 comments on commit 2b82e4b

Please # to comment.