nomener 0.1.4 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5762b1f570b9c2f0b389d4e024032626db1df55a
4
- data.tar.gz: 655fa7880f037c3588e839478d0a3f413e273b38
3
+ metadata.gz: 7076e9a42e0c1a93f511e0b562ce72192aa81fe3
4
+ data.tar.gz: a4b8c2b7460a8d247de489dec7f22b24544e01bf
5
5
  SHA512:
6
- metadata.gz: a2f07a6b144c146ae69f9db8099fce9b241510148a7e36d54c576564c37ff608816c1a2cee92f288f3a6881270cbe8835677417ca42e410b327d022ad44e1e8b
7
- data.tar.gz: c8bfc7bc996638f3043029008de2b4bdb7c93114244591eb79d23173f556fed9757f1b1510ee4a51b8d0d20959454d28d8f8661476b10da307bef398fdc0e23a
6
+ metadata.gz: 28ad116288d492b799f187f663e959f34d9913c96e3a963a89bfad0f5917e8636510727b98f389245fa4f31426b29fcc7bf249267b685d46d561ac8579675dea
7
+ data.tar.gz: d8c992eae234c4a95a415465b8017625d7429d8fb0156772f4def5be9e800010e3a6c9abe3132d5f4739d8f20ea86bd89100c78979c0c7ce832125e2490f6486
data/Rakefile CHANGED
@@ -1 +1,30 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ begin
4
+ require 'rspec/core/rake_task'
5
+
6
+ #RSpec::Core::RakeTask.new(:spec)
7
+ #task :default => :spec
8
+
9
+ rescue LoadError
10
+
11
+ end
12
+
13
+ task :default do
14
+ RSpec::Core::RakeTask.new(:spec) do |t|
15
+ t.pattern = 'spec/nomener/*_spec.rb'
16
+ end
17
+ Rake::Task["spec"].execute
18
+ end
19
+
20
+ task :names do
21
+ RSpec::Core::RakeTask.new(:spec) do |t|
22
+ t.pattern = 'spec/nomener/names/*_spec.rb'
23
+ end
24
+ Rake::Task["spec"].execute
25
+ end
26
+
27
+ task :rspec do
28
+ RSpec::Core::RakeTask.new(:spec)
29
+ Rake::Task["spec"].execute
30
+ end
@@ -69,6 +69,6 @@ module Nomener
69
69
  | Zu
70
70
  | (?-i:y)
71
71
  | 't
72
- )\p{Blank}\g<part>*)*!xi
72
+ )\p{Blank}?\g<part>*)*!xi
73
73
  end
74
74
  end
@@ -24,7 +24,8 @@ module Nomener
24
24
  n.tr!("\u0027\u2018\u201A\u2035\u2039\u300C\uFE41\uFF62", left) # replace left single quotes
25
25
  n.tr!("\u0027\u2019\u201B\u2032\u203A\u300D\uFE42\uFF62", right) # replace left single quotes
26
26
 
27
- n.gsub!(/[^\p{Alpha}\-\.&\/ \,#{leftleft}#{rightright}#{left}#{right}]/, "") # what others may be in a name?
27
+ n.gsub!(/\./, ' ')
28
+ n.gsub!(/[^\p{Alpha}\-&\/ \,\'\"#{leftleft}#{rightright}#{left}#{right}]/, "") # what others may be in a name?
28
29
  n.gsub!(/\p{Blank}+/, " ") # compress whitespace
29
30
  n.strip! # trim space
30
31
 
@@ -21,7 +21,7 @@ module Nomener
21
21
  # :spacelimit - the number of spaces to consider in the first name
22
22
  #
23
23
  # Returns a Nomener::Name object hopefully a parsed name of the string or nil
24
- def self.parse(name, format = {:order => :fl, :spacelimit => 0})
24
+ def self.parse(name, format = {:order => :auto, :spacelimit => 1})
25
25
  begin
26
26
  self.parse!(name, format)
27
27
  rescue
@@ -36,40 +36,83 @@ module Nomener
36
36
  #
37
37
  # Returns a hash of name parts or nil
38
38
  # Raises ArgumentError if 'name' is not a string or is empty
39
- def self.parse!(name, format = {:order => :fl, :spacelimit => 1})
39
+ def self.parse!(name, format = {:order => :auto, :spacelimit => 0})
40
40
  raise ArgumentError, 'Name to parse not provided' unless (name.kind_of?(String) && !name.empty?)
41
41
 
42
42
  name = Nomener::Helper.reformat(name)
43
43
 
44
- title = self.parse_title(name)
45
- suffix = self.parse_suffix(name)
46
- nick = self.parse_nick(name)
47
- last = self.parse_last(name, format[:order])
48
- first, middle = self.parse_first(name, format[:spacelimit])
44
+ # grab any identified nickname before working on the rest
45
+ nick = parse_nick!(name)
46
+ title = parse_title!(name)
47
+
48
+ # grab any suffix' we can find
49
+ suffix = parse_suffix!(name)
50
+ first = last = mittle = ""
51
+
52
+ # if there's a comma, it may be a useful hint
53
+ if !name.index(',').nil? # && (format[:order] == :auto || format[:order] == :lcf)
54
+ clues = name.split(",")
55
+ # convention is last, first
56
+ if clues.length == 2
57
+ last, first = clues
58
+
59
+ # Mies van der Rohe, Ludwig
60
+ # Snepscheut, Jan L. A. van de
61
+ # check the last by comparing a re-ordering of the name
62
+ first_parts = first.split " "
63
+ unless first_parts.length == 1
64
+ check = parse_last!("#{first} #{last}", :fl)
65
+ # let's trust the full name
66
+ if check != last
67
+ first = "#{first} #{last}".sub(check, '').strip
68
+ last = check
69
+ end
70
+ end
71
+ # titles are part of the first name
72
+
73
+ else
74
+ raise ParseError "Could not understand #{rename}"
75
+ end
76
+ elsif !name.index(" ").nil?
77
+ last = parse_last!(name, format[:order])
78
+ first, middle = parse_first!(name, format[:spacelimit])
79
+ elsif name.index(" ").nil?
80
+ first = name[0] # mononym
81
+ else
82
+ raise ParseError "Could not understand #{rename}"
83
+ end
49
84
 
50
85
  {
51
- :title => title,
52
- :suffix => suffix,
53
- :nick => nick,
54
- :first => first,
55
- :last => last,
56
- :middle => middle
86
+ :title => (title || "").strip,
87
+ :suffix => (suffix || "").strip,
88
+ :nick => (nick || "").strip,
89
+ :first => (first || "").strip,
90
+ :last => (last || "").strip,
91
+ :middle => (middle || "").strip
57
92
  }
58
93
  end
59
94
 
95
+ def self.cleanup!(dirty)
96
+ dirty.gsub! /[^,\p{Alpha}]{2,}/, ''
97
+ dirty.squeeze! " "
98
+ # remove any trailing commas or whitespace
99
+ dirty.gsub! /[,|\s]+$/, ''
100
+ dirty.strip!
101
+ end
102
+
60
103
  # Internal: pull off a title if we can
61
104
  #
62
105
  # nm - string of the name to parse
63
106
  #
64
107
  # Returns string of the title found or and empty string
65
- def self.parse_title(nm)
66
- title = ""
67
- if m = TITLES.match(nm)
68
- title = m[1].strip
69
- nm.sub!(title, "").strip!
70
- title.gsub!('.', '')
108
+ def self.parse_title!(nm)
109
+ titles = []
110
+ nm.gsub! TITLES do |title|
111
+ titles << title.strip
112
+ ''
71
113
  end
72
- title
114
+ cleanup!(nm)
115
+ titles.join " "
73
116
  end
74
117
 
75
118
  # Internal: pull off what suffixes we can
@@ -77,13 +120,13 @@ module Nomener
77
120
  # nm - string of the name to parse
78
121
  #
79
122
  # Returns string of the suffixes found or and empty string
80
- def self.parse_suffix(nm)
123
+ def self.parse_suffix!(nm)
81
124
  suffixes = []
82
- suffixes = nm.scan(SUFFIXES).flatten
83
- suffixes.each { |s|
84
- nm.gsub!(/#{s}/, "").strip!
85
- s.strip!
86
- }
125
+ nm.gsub! SUFFIXES do |suffix|
126
+ suffixes << suffix.strip
127
+ ''
128
+ end
129
+ cleanup!(nm)
87
130
  suffixes.join " "
88
131
  end
89
132
 
@@ -92,14 +135,12 @@ module Nomener
92
135
  # nm - string of the name to parse
93
136
  #
94
137
  # Returns string of the nickname found or and empty string
95
- def self.parse_nick(nm)
96
- nicks = []
97
- nicks = nm.scan(/([\(\"][\p{Alpha}\-\ ']+[\)\"])/).flatten
98
- nicks.each { |n|
99
- nm.gsub!(/#{n}/, "").strip!
100
- n.gsub!(/["\(\)]/, ' ')
101
- }
102
- nicks.join(" ").strip
138
+ def self.parse_nick!(nm)
139
+ nm.sub!(/(?<=["'\(])([\p{Alpha}\-\ ']+?)(?=["'\)])/, '')
140
+ nick = $1.strip unless $1.nil?
141
+ nm.sub! /["'\(\)]{2}/, ''
142
+ nm.squeeze! " "
143
+ nick || ""
103
144
  end
104
145
 
105
146
  # Internal: parse last name from string
@@ -108,16 +149,22 @@ module Nomener
108
149
  # format - symbol defaulting to "first last". See parse()
109
150
  #
110
151
  # Returns string of the last name found or an empty string
111
- def self.parse_last(nm, format = :fl)
152
+ def self.parse_last!(nm, format = :fl)
112
153
  last = ''
113
- if format == :fl && n = nm.match(/\p{Blank}(?<fam>#{COMPOUNDS}[\p{L}\-\']+)\z/i)
114
- last = n[:fam]
154
+
155
+ if format == :auto
156
+ format = :fl if nm.index(',').nil?
157
+ # format = :lcf if !nm.index(',').nil?
158
+ end
159
+
160
+ if format == :fl && n = nm.match(/\p{Blank}(?<fam>#{COMPOUNDS}[\p{Alpha}\-\']+)\Z/i)
161
+ last = n[:fam].strip
115
162
  nm.sub!(last, "").strip!
116
- elsif format == :lf && n = nm.match(/\A(?<fam>#{COMPOUNDS}[\p{Alpha}\-\']+)\p{Blank}/i)
117
- last = n[:fam]
163
+ elsif format == :lf && n = nm.match(/\A(?<fam>#{COMPOUNDS}\b[\p{Alpha}\-\']+)\p{Blank}/i)
164
+ last = n[:fam].strip
118
165
  nm.sub!(last, "").strip!
119
- elsif format == :lcf && n = nm.match(/\A(?<fam>#{COMPOUNDS}[\p{Alpha}\-\'\p{Blank}]+),/i)
120
- last = n[:fam]
166
+ elsif format == :lcf && n = nm.match(/\A(?<fam>#{COMPOUNDS}\b[\p{Alpha}\-\'\p{Blank}]+),/i)
167
+ last = n[:fam].strip
121
168
  nm.sub!(last, "").strip!
122
169
  nm.sub!(',', "").strip!
123
170
  end
@@ -130,7 +177,7 @@ module Nomener
130
177
  # namecount - the number of spaces in the first name to consider
131
178
  #
132
179
  # Returns an array containing the first name and middle name if any
133
- def self.parse_first(nm, namecount = 0)
180
+ def self.parse_first!(nm, namecount = 0)
134
181
  nm.tr! '.', ' '
135
182
  first, middle = nm.split ' ', namecount
136
183
 
@@ -1,3 +1,3 @@
1
1
  module Nomener
2
- VERSION = "0.1.4"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,596 @@
1
+ require 'spec_helper'
2
+
3
+ # from http://www.theguardian.com/books/list/authorsaz
4
+ # { from: "Brooke Magnanti (Belle de Jour)", to: { full: "Brooke Magnanti (Belle de Jour)", first: "Brooke Magnanti (Belle de", last: "Jour)" } },
5
+ # { from: "Saki (Hector Hugh Munro)", to: { full: "Saki (Hector Hugh Munro)", first: "Saki (Hector Hugh", last: "Munro)" } },
6
+ # { from: "Steven D Levitt and Stephen J Dubner", to: { full: "Steven D Levitt and Stephen J Dubner", first: "Steven D Levitt and Stephen J", last: "Dubner" } },
7
+
8
+ RSpec.describe "The Guardian author list" do
9
+ context "with the names" do
10
+ [
11
+ { from: "Chinua Achebe", to: { full: "Chinua Achebe", first: "Chinua", last: "Achebe" } },
12
+ { from: "Peter Ackroyd", to: { full: "Peter Ackroyd", first: "Peter", last: "Ackroyd" } },
13
+ { from: "Douglas Adams", to: { full: "Douglas Adams", first: "Douglas", last: "Adams" } },
14
+ { from: "Chimamanda Ngozi Adichie", to: { full: "Chimamanda Ngozi Adichie", first: "Chimamanda Ngozi", last: "Adichie" } },
15
+ { from: "Aaron Akinyemi", to: { full: "Aaron Akinyemi", first: "Aaron", last: "Akinyemi" } },
16
+ { from: "Alexandra Harris", to: { full: "Alexandra Harris", first: "Alexandra", last: "Harris" } },
17
+ { from: "Monica Ali", to: { full: "Monica Ali", first: "Monica", last: "Ali" } },
18
+ { from: "Dante Alighieri", to: { full: "Dante Alighieri", first: "Dante", last: "Alighieri" } },
19
+ { from: "Alistair Cooke", to: { full: "Alistair Cooke", first: "Alistair", last: "Cooke" } },
20
+ { from: "Isabel Allende", to: { full: "Isabel Allende", first: "Isabel", last: "Allende" } },
21
+ { from: "Kingsley Amis", to: { full: "Kingsley Amis", first: "Kingsley", last: "Amis" } },
22
+ { from: "Martin Amis", to: { full: "Martin Amis", first: "Martin", last: "Amis" } },
23
+ { from: "Maya Angelou", to: { full: "Maya Angelou", first: "Maya", last: "Angelou" } },
24
+ { from: "Annie Proulx", to: { full: "Annie Proulx", first: "Annie", last: "Proulx" } },
25
+ { from: "Jeffrey Archer", to: { full: "Jeffrey Archer", first: "Jeffrey", last: "Archer" } },
26
+ { from: "Philip Ardagh", to: { full: "Philip Ardagh", first: "Philip", last: "Ardagh" } },
27
+ { from: "Simon Armitage", to: { full: "Simon Armitage", first: "Simon", last: "Armitage" } },
28
+ { from: "Isaac Asimov", to: { full: "Isaac Asimov", first: "Isaac", last: "Asimov" } },
29
+ { from: "Åsne Seierstad", to: { full: "Åsne Seierstad", first: "Åsne", last: "Seierstad" } },
30
+ { from: "Diana Athill", to: { full: "Diana Athill", first: "Diana", last: "Athill" } },
31
+ { from: "Kate Atkinson", to: { full: "Kate Atkinson", first: "Kate", last: "Atkinson" } },
32
+ { from: "Margaret Atwood", to: { full: "Margaret Atwood", first: "Margaret", last: "Atwood" } },
33
+ { from: "WH Auden", to: { full: "WH Auden", first: "WH", last: "Auden" } },
34
+ { from: "Jane Austen", to: { full: "Jane Austen", first: "Jane", last: "Austen" } },
35
+ { from: "Paul Auster", to: { full: "Paul Auster", first: "Paul", last: "Auster" } },
36
+
37
+ { from: "Julian Baggini", to: { full: "Julian Baggini", first: "Julian", last: "Baggini" } },
38
+ { from: "Paul Bailey", to: { full: "Paul Bailey", first: "Paul", last: "Bailey" } },
39
+ { from: "Beryl Bainbridge", to: { full: "Beryl Bainbridge", first: "Beryl", last: "Bainbridge" } },
40
+ { from: "James Baldwin", to: { full: "James Baldwin", first: "James", last: "Baldwin" } },
41
+ { from: "JG Ballard", to: { full: "JG Ballard", first: "JG", last: "Ballard" } },
42
+ { from: "Iain Banks", to: { full: "Iain Banks", first: "Iain", last: "Banks" } },
43
+ { from: "John Banville", to: { full: "John Banville", first: "John", last: "Banville" } },
44
+ { from: "Clive Barker", to: { full: "Clive Barker", first: "Clive", last: "Barker" } },
45
+ { from: "Pat Barker", to: { full: "Pat Barker", first: "Pat", last: "Barker" } },
46
+ { from: "Nicola Barker", to: { full: "Nicola Barker", first: "Nicola", last: "Barker" } },
47
+ { from: "Julian Barnes", to: { full: "Julian Barnes", first: "Julian", last: "Barnes" } },
48
+ { from: "Sebastian Barry", to: { full: "Sebastian Barry", first: "Sebastian", last: "Barry" } },
49
+ { from: "Donald Barthelme", to: { full: "Donald Barthelme", first: "Donald", last: "Barthelme" } },
50
+ { from: "Belinda Bauer", to: { full: "Belinda Bauer", first: "Belinda", last: "Bauer" } },
51
+ { from: "Nina Bawden", to: { full: "Nina Bawden", first: "Nina", last: "Bawden" } },
52
+ { from: "Mary Beard", to: { full: "Mary Beard", first: "Mary", last: "Beard" } },
53
+ { from: "Simone de Beauvoir", to: { full: "Simone de Beauvoir", first: "Simone", last: "de Beauvoir" } },
54
+ { from: "Samuel Beckett", to: { full: "Samuel Beckett", first: "Samuel", last: "Beckett" } },
55
+ { from: "Antony Beevor", to: { full: "Antony Beevor", first: "Antony", last: "Beevor" } },
56
+ { from: "Saul Bellow", to: { full: "Saul Bellow", first: "Saul", last: "Bellow" } },
57
+ { from: "Benjamin Markovits", to: { full: "Benjamin Markovits", first: "Benjamin", last: "Markovits" } },
58
+ { from: "George Bernard Shaw", to: { full: "George Bernard Shaw", first: "George Bernard", last: "Shaw" } },
59
+ { from: "Louis de Bernières", to: { full: "Louis de Bernières", first: "Louis", last: "de Bernières" } },
60
+ { from: "John Betjeman", to: { full: "John Betjeman", first: "John", last: "Betjeman" } },
61
+ { from: "Maeve Binchy", to: { full: "Maeve Binchy", first: "Maeve", last: "Binchy" } },
62
+ { from: "Carol Birch", to: { full: "Carol Birch", first: "Carol", last: "Birch" } },
63
+ { from: "Quentin Blake", to: { full: "Quentin Blake", first: "Quentin", last: "Blake" } },
64
+ { from: "William Blake", to: { full: "William Blake", first: "William", last: "Blake" } },
65
+ { from: "Enid Blyton", to: { full: "Enid Blyton", first: "Enid", last: "Blyton" } },
66
+ { from: "Roberto Bolaño", to: { full: "Roberto Bolaño", first: "Roberto", last: "Bolaño" } },
67
+ { from: "Katherine Boo", to: { full: "Katherine Boo", first: "Katherine", last: "Boo" } },
68
+ { from: "Jorge Luis Borges", to: { full: "Jorge Luis Borges", first: "Jorge Luis", last: "Borges" } },
69
+ { from: "William Boyd", to: { full: "William Boyd", first: "William", last: "Boyd" } },
70
+ { from: "Ray Bradbury", to: { full: "Ray Bradbury", first: "Ray", last: "Bradbury" } },
71
+ { from: "Barbara Taylor Bradford", to: { full: "Barbara Taylor Bradford", first: "Barbara Taylor", last: "Bradford" } },
72
+ { from: "Stewart Brand", to: { full: "Stewart Brand", first: "Stewart", last: "Brand" } },
73
+ { from: "Raymond Briggs", to: { full: "Raymond Briggs", first: "Raymond", last: "Briggs" } },
74
+ { from: "Constance Briscoe", to: { full: "Constance Briscoe", first: "Constance", last: "Briscoe" } },
75
+ { from: "Anne Brontë", to: { full: "Anne Brontë", first: "Anne", last: "Brontë" } },
76
+ { from: "Charlotte Brontë", to: { full: "Charlotte Brontë", first: "Charlotte", last: "Brontë" } },
77
+ { from: "Emily Brontë", to: { full: "Emily Brontë", first: "Emily", last: "Brontë" } },
78
+ { from: "Anita Brookner", to: { full: "Anita Brookner", first: "Anita", last: "Brookner" } },
79
+ { from: "Dan Brown", to: { full: "Dan Brown", first: "Dan", last: "Brown" } },
80
+ { from: "Jeffrey Brown", to: { full: "Jeffrey Brown", first: "Jeffrey", last: "Brown" } },
81
+ { from: "Anthony Browne", to: { full: "Anthony Browne", first: "Anthony", last: "Browne" } },
82
+ { from: "Bill Bryson", to: { full: "Bill Bryson", first: "Bill", last: "Bryson" } },
83
+ { from: "Mikhail Bulgakov", to: { full: "Mikhail Bulgakov", first: "Mikhail", last: "Bulgakov" } },
84
+ { from: "Anthony Burgess", to: { full: "Anthony Burgess", first: "Anthony", last: "Burgess" } },
85
+ { from: "Melvin Burgess", to: { full: "Melvin Burgess", first: "Melvin", last: "Burgess" } },
86
+ { from: "Gordon Burn", to: { full: "Gordon Burn", first: "Gordon", last: "Burn" } },
87
+ { from: "Robert Burns", to: { full: "Robert Burns", first: "Robert", last: "Burns" } },
88
+ { from: "William Burroughs", to: { full: "William Burroughs", first: "William", last: "Burroughs" } },
89
+ { from: "AS Byatt", to: { full: "AS Byatt", first: "AS", last: "Byatt" } },
90
+ { from: "Lord Byron", to: { full: "Lord Byron", first: "Lord", last: "Byron" } },
91
+
92
+ { from: "Carmen Callil", to: { full: "Carmen Callil", first: "Carmen", last: "Callil" } },
93
+ { from: "Italo Calvino", to: { full: "Italo Calvino", first: "Italo", last: "Calvino" } },
94
+ { from: "Albert Camus", to: { full: "Albert Camus", first: "Albert", last: "Camus" } },
95
+ { from: "Truman Capote", to: { full: "Truman Capote", first: "Truman", last: "Capote" } },
96
+ { from: "Peter Carey", to: { full: "Peter Carey", first: "Peter", last: "Carey" } },
97
+ { from: "Carlos Fuentes", to: { full: "Carlos Fuentes", first: "Carlos", last: "Fuentes" } },
98
+ { from: "Lewis Carroll", to: { full: "Lewis Carroll", first: "Lewis", last: "Carroll" } },
99
+ { from: "Angela Carter", to: { full: "Angela Carter", first: "Angela", last: "Carter" } },
100
+ { from: "Raymond Carver", to: { full: "Raymond Carver", first: "Raymond", last: "Carver" } },
101
+ { from: "Eleanor Catton", to: { full: "Eleanor Catton", first: "Eleanor", last: "Catton" } },
102
+ { from: "Miguel de Cervantes", to: { full: "Miguel de Cervantes", first: "Miguel", last: "de Cervantes" } },
103
+ { from: "Michael Chabon", to: { full: "Michael Chabon", first: "Michael", last: "Chabon" } },
104
+ { from: "Raymond Chandler", to: { full: "Raymond Chandler", first: "Raymond", last: "Chandler" } },
105
+ { from: "Rajiv Chandrasekaran", to: { full: "Rajiv Chandrasekaran", first: "Rajiv", last: "Chandrasekaran" } },
106
+ { from: "Bruce Chatwin", to: { full: "Bruce Chatwin", first: "Bruce", last: "Chatwin" } },
107
+ { from: "Geoffrey Chaucer", to: { full: "Geoffrey Chaucer", first: "Geoffrey", last: "Chaucer" } },
108
+ { from: "Anton Chekhov", to: { full: "Anton Chekhov", first: "Anton", last: "Chekhov" } },
109
+ { from: "GK Chesterton", to: { full: "GK Chesterton", first: "GK", last: "Chesterton" } },
110
+ { from: "Lauren Child", to: { full: "Lauren Child", first: "Lauren", last: "Child" } },
111
+ { from: "Chris Ware", to: { full: "Chris Ware", first: "Chris", last: "Ware" } },
112
+ { from: "Agatha Christie", to: { full: "Agatha Christie", first: "Agatha", last: "Christie" } },
113
+ { from: "Christopher Isherwood", to: { full: "Christopher Isherwood", first: "Christopher", last: "Isherwood" } },
114
+ { from: "CJ Sansom", to: { full: "CJ Sansom", first: "CJ", last: "Sansom" } },
115
+ { from: "Tom Clancy", to: { full: "Tom Clancy", first: "Tom", last: "Clancy" } },
116
+ { from: "John Clare", to: { full: "John Clare", first: "John", last: "Clare" } },
117
+ { from: "Arthur C Clarke", to: { full: "Arthur C Clarke", first: "Arthur C", last: "Clarke" } },
118
+ { from: "John Cooper Clarke", to: { full: "John Cooper Clarke", first: "John Cooper", last: "Clarke" } },
119
+ { from: "Daniel Clowes", to: { full: "Daniel Clowes", first: "Daniel", last: "Clowes" } },
120
+ { from: "Jonathan Coe", to: { full: "Jonathan Coe", first: "Jonathan", last: "Coe" } },
121
+ { from: "Paulo Coelho", to: { full: "Paulo Coelho", first: "Paulo", last: "Coelho" } },
122
+ { from: "JM Coetzee", to: { full: "JM Coetzee", first: "JM", last: "Coetzee" } },
123
+ { from: "Samuel Taylor Coleridge", to: { full: "Samuel Taylor Coleridge", first: "Samuel Taylor", last: "Coleridge" } },
124
+ { from: "Eoin Colfer", to: { full: "Eoin Colfer", first: "Eoin", last: "Colfer" } },
125
+ { from: "Wilkie Collins", to: { full: "Wilkie Collins", first: "Wilkie", last: "Collins" } },
126
+ { from: "Jackie Collins", to: { full: "Jackie Collins", first: "Jackie", last: "Collins" } },
127
+ { from: "Colum McCann", to: { full: "Colum McCann", first: "Colum", last: "McCann" } },
128
+ { from: "Arthur Conan Doyle", to: { full: "Arthur Conan Doyle", first: "Arthur Conan", last: "Doyle" } },
129
+ { from: "Joseph Connolly", to: { full: "Joseph Connolly", first: "Joseph", last: "Connolly" } },
130
+ { from: "Joseph Conrad", to: { full: "Joseph Conrad", first: "Joseph", last: "Conrad" } },
131
+ { from: "Jilly Cooper", to: { full: "Jilly Cooper", first: "Jilly", last: "Cooper" } },
132
+ { from: "Patricia Cornwell", to: { full: "Patricia Cornwell", first: "Patricia", last: "Cornwell" } },
133
+ { from: "Douglas Coupland", to: { full: "Douglas Coupland", first: "Douglas", last: "Coupland" } },
134
+ { from: "Jim Crace", to: { full: "Jim Crace", first: "Jim", last: "Crace" } },
135
+ { from: "Michael Crichton", to: { full: "Michael Crichton", first: "Michael", last: "Crichton" } },
136
+ { from: "Neil Cross", to: { full: "Neil Cross", first: "Neil", last: "Cross" } },
137
+ { from: "Robert Crumb", to: { full: "Robert Crumb", first: "Robert", last: "Crumb" } },
138
+ { from: "Curtis Sittenfeld", to: { full: "Curtis Sittenfeld", first: "Curtis", last: "Sittenfeld" } },
139
+ { from: "Czesław Miłosz", to: { full: "Czesław Miłosz", first: "Czesław", last: "Miłosz" } },
140
+
141
+ { from: "Roald Dahl", to: { full: "Roald Dahl", first: "Roald", last: "Dahl" } },
142
+ { from: "David Sedaris", to: { full: "David Sedaris", first: "David", last: "Sedaris" } },
143
+ { from: "DBC Pierre", to: { full: "DBC Pierre", first: "DBC", last: "Pierre" } },
144
+ { from: "Edmund de Waal", to: { full: "Edmund de Waal", first: "Edmund", last: "de Waal" } },
145
+ { from: "Daniel Defoe", to: { full: "Daniel Defoe", first: "Daniel", last: "Defoe" } },
146
+ { from: "Len Deighton", to: { full: "Len Deighton", first: "Len", last: "Deighton" } },
147
+ { from: "Don DeLillo", to: { full: "Don DeLillo", first: "Don", last: "DeLillo" } },
148
+ { from: "Patrick DeWitt", to: { full: "Patrick DeWitt", first: "Patrick", last: "DeWitt" } },
149
+ { from: "Giuseppe Tomasi di Lampedusa", to: { full: "Giuseppe Tomasi di Lampedusa", first: "Giuseppe Tomasi", last: "di Lampedusa" } },
150
+ { from: "Junot Diaz", to: { full: "Junot Diaz", first: "Junot", last: "Diaz" } },
151
+ { from: "Philip K Dick", to: { full: "Philip K Dick", first: "Philip K", last: "Dick" } },
152
+ { from: "Dick King-Smith", to: { full: "Dick King-Smith", first: "Dick", last: "King-Smith" } },
153
+ { from: "Charles Dickens", to: { full: "Charles Dickens", first: "Charles", last: "Dickens" } },
154
+ { from: "Emily Dickinson", to: { full: "Emily Dickinson", first: "Emily", last: "Dickinson" } },
155
+ { from: "Don Paterson", to: { full: "Don Paterson", first: "Don", last: "Paterson" } },
156
+ { from: "Emma Donoghue", to: { full: "Emma Donoghue", first: "Emma", last: "Donoghue" } },
157
+ { from: "Fyodor Dostoevsky", to: { full: "Fyodor Dostoevsky", first: "Fyodor", last: "Dostoevsky" } },
158
+ { from: "Roddy Doyle", to: { full: "Roddy Doyle", first: "Roddy", last: "Doyle" } },
159
+ { from: "Margaret Drabble", to: { full: "Margaret Drabble", first: "Margaret", last: "Drabble" } },
160
+ { from: "Carol Ann Duffy", to: { full: "Carol Ann Duffy", first: "Carol Ann", last: "Duffy" } },
161
+ { from: "Alexandre Dumas, pere", to: { full: "Alexandre Dumas", first: "Alexandre", last: "Dumas", suffix: "pere" } },
162
+ { from: "Daphne du Maurier", to: { full: "Daphne du Maurier", first: "Daphne", last: "du Maurier" } },
163
+ { from: "Helen Dunmore", to: { full: "Helen Dunmore", first: "Helen", last: "Dunmore" } },
164
+ { from: "Lawrence Durrell", to: { full: "Lawrence Durrell", first: "Lawrence", last: "Durrell" } },
165
+
166
+ { from: "David Eagleman", to: { full: "David Eagleman", first: "David", last: "Eagleman" } },
167
+ { from: "Terry Eagleton", to: { full: "Terry Eagleton", first: "Terry", last: "Eagleton" } },
168
+ { from: "Bret Easton Ellis", to: { full: "Bret Easton Ellis", first: "Bret Easton", last: "Ellis" } },
169
+ { from: "Umberto Eco", to: { full: "Umberto Eco", first: "Umberto", last: "Eco" } },
170
+ { from: "Esi Edugyan", to: { full: "Esi Edugyan", first: "Esi", last: "Edugyan" } },
171
+ { from: "Dave Eggers", to: { full: "Dave Eggers", first: "Dave", last: "Eggers" } },
172
+ { from: "George Eliot", to: { full: "George Eliot", first: "George", last: "Eliot" } },
173
+ { from: "James Ellroy", to: { full: "James Ellroy", first: "James", last: "Ellroy" } },
174
+ { from: "Anne Enright", to: { full: "Anne Enright", first: "Anne", last: "Enright" } },
175
+ { from: "Jeffrey Eugenides", to: { full: "Jeffrey Eugenides", first: "Jeffrey", last: "Eugenides" } },
176
+ { from: "Evie Wyld", to: { full: "Evie Wyld", first: "Evie", last: "Wyld" } },
177
+
178
+ { from: "William Faulkner", to: { full: "William Faulkner", first: "William", last: "Faulkner" } },
179
+ { from: "Sebastian Faulks", to: { full: "Sebastian Faulks", first: "Sebastian", last: "Faulks" } },
180
+ { from: "Niall Ferguson", to: { full: "Niall Ferguson", first: "Niall", last: "Ferguson" } },
181
+ { from: "Helen Fielding", to: { full: "Helen Fielding", first: "Helen", last: "Fielding" } },
182
+ { from: "Henry Fielding", to: { full: "Henry Fielding", first: "Henry", last: "Fielding" } },
183
+ { from: "Orlando Figes", to: { full: "Orlando Figes", first: "Orlando", last: "Figes" } },
184
+ { from: "F Scott Fitzgerald", to: { full: "F Scott Fitzgerald", first: "F Scott", last: "Fitzgerald" } },
185
+ { from: "Gustave Flaubert", to: { full: "Gustave Flaubert", first: "Gustave", last: "Flaubert" } },
186
+ { from: "Ian Fleming", to: { full: "Ian Fleming", first: "Ian", last: "Fleming" } },
187
+ { from: "Gillian Flynn", to: { full: "Gillian Flynn", first: "Gillian", last: "Flynn" } },
188
+ { from: "EM Forster", to: { full: "EM Forster", first: "EM", last: "Forster" } },
189
+ { from: "Adam Foulds", to: { full: "Adam Foulds", first: "Adam", last: "Foulds" } },
190
+ { from: "John Fowles", to: { full: "John Fowles", first: "John", last: "Fowles" } },
191
+ { from: "Dick Francis", to: { full: "Dick Francis", first: "Dick", last: "Francis" } },
192
+ { from: "Thomas Frank", to: { full: "Thomas Frank", first: "Thomas", last: "Frank" } },
193
+ { from: "Jonathan Franzen", to: { full: "Jonathan Franzen", first: "Jonathan", last: "Franzen" } },
194
+ { from: "Nicci French", to: { full: "Nicci French", first: "Nicci", last: "French" } },
195
+ { from: "Tana French", to: { full: "Tana French", first: "Tana", last: "French" } },
196
+ { from: "Sigmund Freud", to: { full: "Sigmund Freud", first: "Sigmund", last: "Freud" } },
197
+ { from: "Nell Freudenberger", to: { full: "Nell Freudenberger", first: "Nell", last: "Freudenberger" } },
198
+ { from: "James Frey", to: { full: "James Frey", first: "James", last: "Frey" } },
199
+ { from: "Francis Fukuyama", to: { full: "Francis Fukuyama", first: "Francis", last: "Fukuyama" } },
200
+
201
+ { from: "G Willow Wilson", to: { full: "G Willow Wilson", first: "G Willow", last: "Wilson" } },
202
+ { from: "Neil Gaiman", to: { full: "Neil Gaiman", first: "Neil", last: "Gaiman" } },
203
+ { from: "Damon Galgut", to: { full: "Damon Galgut", first: "Damon", last: "Galgut" } },
204
+ { from: "Petina Gappah", to: { full: "Petina Gappah", first: "Petina", last: "Gappah" } },
205
+ { from: "Simon Garfield", to: { full: "Simon Garfield", first: "Simon", last: "Garfield" } },
206
+ { from: "Alan Garner", to: { full: "Alan Garner", first: "Alan", last: "Garner" } },
207
+ { from: "William Gibson", to: { full: "William Gibson", first: "William", last: "Gibson" } },
208
+ { from: "Martin Gilbert", to: { full: "Martin Gilbert", first: "Martin", last: "Gilbert" } },
209
+ { from: "Allen Ginsberg", to: { full: "Allen Ginsberg", first: "Allen", last: "Ginsberg" } },
210
+ { from: "Malcolm Gladwell", to: { full: "Malcolm Gladwell", first: "Malcolm", last: "Gladwell" } },
211
+ { from: "Nikolai Gogol", to: { full: "Nikolai Gogol", first: "Nikolai", last: "Gogol" } },
212
+ { from: "Glen David Gold", to: { full: "Glen David Gold", first: "Glen David", last: "Gold" } },
213
+ { from: "William Golding", to: { full: "William Golding", first: "William", last: "Golding" } },
214
+ { from: "Nadine Gordimer", to: { full: "Nadine Gordimer", first: "Nadine", last: "Gordimer" } },
215
+ { from: "Gore Vidal", to: { full: "Gore Vidal", first: "Gore", last: "Vidal" } },
216
+ { from: "Günter Grass", to: { full: "Günter Grass", first: "Günter", last: "Grass" } },
217
+ { from: "Alasdair Gray", to: { full: "Alasdair Gray", first: "Alasdair", last: "Gray" } },
218
+ { from: "Simon Gray", to: { full: "Simon Gray", first: "Simon", last: "Gray" } },
219
+ { from: "John Green", to: { full: "John Green", first: "John", last: "Green" } },
220
+ { from: "Graham Greene", to: { full: "Graham Greene", first: "Graham", last: "Greene" } },
221
+ { from: "Germaine Greer", to: { full: "Germaine Greer", first: "Germaine", last: "Greer" } },
222
+ { from: "Philippa Gregory", to: { full: "Philippa Gregory", first: "Philippa", last: "Gregory" } },
223
+ { from: "John Grisham", to: { full: "John Grisham", first: "John", last: "Grisham" } },
224
+ { from: "David Grossman", to: { full: "David Grossman", first: "David", last: "Grossman" } },
225
+
226
+ { from: "Mark Haddon", to: { full: "Mark Haddon", first: "Mark", last: "Haddon" } },
227
+ { from: "Tessa Hadley", to: { full: "Tessa Hadley", first: "Tessa", last: "Hadley" } },
228
+ { from: "Knut Hamsun", to: { full: "Knut Hamsun", first: "Knut", last: "Hamsun" } },
229
+ { from: "Mohammed Hanif", to: { full: "Mohammed Hanif", first: "Mohammed", last: "Hanif" } },
230
+ { from: "Elizabeth Hardwick", to: { full: "Elizabeth Hardwick", first: "Elizabeth", last: "Hardwick" } },
231
+ { from: "Thomas Hardy", to: { full: "Thomas Hardy", first: "Thomas", last: "Hardy" } },
232
+ { from: "Thomas Harris", to: { full: "Thomas Harris", first: "Thomas", last: "Harris" } },
233
+ { from: "Robert Harris", to: { full: "Robert Harris", first: "Robert", last: "Harris" } },
234
+ { from: "Tony Harrison", to: { full: "Tony Harrison", first: "Tony", last: "Harrison" } },
235
+ { from: "David Harsent", to: { full: "David Harsent", first: "David", last: "Harsent" } },
236
+ { from: "Josephine Hart", to: { full: "Josephine Hart", first: "Josephine", last: "Hart" } },
237
+ { from: "Seamus Heaney", to: { full: "Seamus Heaney", first: "Seamus", last: "Heaney" } },
238
+ { from: "Helen Simpson", to: { full: "Helen Simpson", first: "Helen", last: "Simpson" } },
239
+ { from: "Joseph Heller", to: { full: "Joseph Heller", first: "Joseph", last: "Heller" } },
240
+ { from: "Ernest Hemingway", to: { full: "Ernest Hemingway", first: "Ernest", last: "Hemingway" } },
241
+ { from: "Aleksandar Hemon", to: { full: "Aleksandar Hemon", first: "Aleksandar", last: "Hemon" } },
242
+ { from: "James Herbert", to: { full: "James Herbert", first: "James", last: "Herbert" } },
243
+ { from: "Herta Müller", to: { full: "Herta Müller", first: "Herta", last: "Müller" } },
244
+ { from: "Georgette Heyer", to: { full: "Georgette Heyer", first: "Georgette", last: "Heyer" } },
245
+ { from: "Carl Hiaasen", to: { full: "Carl Hiaasen", first: "Carl", last: "Hiaasen" } },
246
+ { from: "Charlie Higson", to: { full: "Charlie Higson", first: "Charlie", last: "Higson" } },
247
+ { from: "Tobias Hill", to: { full: "Tobias Hill", first: "Tobias", last: "Hill" } },
248
+ { from: "Peter Hitchens", to: { full: "Peter Hitchens", first: "Peter", last: "Hitchens" } },
249
+ { from: "Christopher Hitchens", to: { full: "Christopher Hitchens", first: "Christopher", last: "Hitchens" } },
250
+ { from: "Shere Hite", to: { full: "Shere Hite", first: "Shere", last: "Hite" } },
251
+ { from: "Eric Hobsbawm", to: { full: "Eric Hobsbawm", first: "Eric", last: "Hobsbawm" } },
252
+ { from: "Alan Hollinghurst", to: { full: "Alan Hollinghurst", first: "Alan", last: "Hollinghurst" } },
253
+ { from: "Holly Black", to: { full: "Holly Black", first: "Holly", last: "Black" } },
254
+ { from: "Richard Holmes", to: { full: "Richard Holmes", first: "Richard", last: "Holmes" } },
255
+
256
+ { from: "Chloe Hooper", to: { full: "Chloe Hooper", first: "Chloe", last: "Hooper" } },
257
+ { from: "Nick Hornby", to: { full: "Nick Hornby", first: "Nick", last: "Hornby" } },
258
+ { from: "Anthony Horowitz", to: { full: "Anthony Horowitz", first: "Anthony", last: "Horowitz" } },
259
+ { from: "Michel Houellebecq", to: { full: "Michel Houellebecq", first: "Michel", last: "Houellebecq" } },
260
+ { from: "Elizabeth Jane Howard", to: { full: "Elizabeth Jane Howard", first: "Elizabeth Jane", last: "Howard" } },
261
+ { from: "Ted Hughes", to: { full: "Ted Hughes", first: "Ted", last: "Hughes" } },
262
+ { from: "Shirley Hughes", to: { full: "Shirley Hughes", first: "Shirley", last: "Hughes" } },
263
+ { from: "Siri Hustvedt", to: { full: "Siri Hustvedt", first: "Siri", last: "Hustvedt" } },
264
+ { from: "Aldous Huxley", to: { full: "Aldous Huxley", first: "Aldous", last: "Huxley" } },
265
+
266
+ { from: "Eva Ibbotson", to: { full: "Eva Ibbotson", first: "Eva", last: "Ibbotson" } },
267
+ { from: "Henrik Ibsen", to: { full: "Henrik Ibsen", first: "Henrik", last: "Ibsen" } },
268
+ { from: "Mick Imlah", to: { full: "Mick Imlah", first: "Mick", last: "Imlah" } },
269
+ { from: "John Irving", to: { full: "John Irving", first: "John", last: "Irving" } },
270
+ { from: "Kazuo Ishiguro", to: { full: "Kazuo Ishiguro", first: "Kazuo", last: "Ishiguro" } },
271
+
272
+ { from: "Jackie Morris", to: { full: "Jackie Morris", first: "Jackie", last: "Morris" } },
273
+ { from: "Howard Jacobson", to: { full: "Howard Jacobson", first: "Howard", last: "Jacobson" } },
274
+ { from: "Henry James", to: { full: "Henry James", first: "Henry", last: "James" } },
275
+ { from: "EL James", to: { full: "EL James", first: "EL", last: "James" } },
276
+ { from: "PD James", to: { full: "PD James", first: "PD", last: "James" } },
277
+ { from: "Jay McInerney", to: { full: "Jay McInerney", first: "Jay", last: "McInerney" } },
278
+ { from: "Jo Nesbø", to: { full: "Jo Nesbø", first: "Jo", last: "Nesbø" } },
279
+ { from: "Joanna Kavenna", to: { full: "Joanna Kavenna", first: "Joanna", last: "Kavenna" } },
280
+ { from: "John Cheever", to: { full: "John Cheever", first: "John", last: "Cheever" } },
281
+ { from: "John Gray", to: { full: "John Gray", first: "John", last: "Gray" } },
282
+ { from: "Samuel Johnson", to: { full: "Samuel Johnson", first: "Samuel", last: "Johnson" } },
283
+ { from: "Sadie Jones", to: { full: "Sadie Jones", first: "Sadie", last: "Jones" } },
284
+ { from: "Ben Jonson", to: { full: "Ben Jonson", first: "Ben", last: "Jonson" } },
285
+ { from: "James Joyce", to: { full: "James Joyce", first: "James", last: "Joyce" } },
286
+ { from: "Juan Gabriel Vásquez", to: { full: "Juan Gabriel Vásquez", first: "Juan Gabriel", last: "Vásquez" } },
287
+ { from: "Tony Judt", to: { full: "Tony Judt", first: "Tony", last: "Judt" } },
288
+
289
+ { from: "Ismail Kadare", to: { full: "Ismail Kadare", first: "Ismail", last: "Kadare" } },
290
+ { from: "Franz Kafka", to: { full: "Franz Kafka", first: "Franz", last: "Kafka" } },
291
+ { from: "Ryszard Kapuściński", to: { full: "Ryszard Kapuściński", first: "Ryszard", last: "Kapuściński" } },
292
+ { from: "Kathryn Schulz", to: { full: "Kathryn Schulz", first: "Kathryn", last: "Schulz" } },
293
+ { from: "Jackie Kay", to: { full: "Jackie Kay", first: "Jackie", last: "Kay" } },
294
+ { from: "John Keats", to: { full: "John Keats", first: "John", last: "Keats" } },
295
+ { from: "James Kelman", to: { full: "James Kelman", first: "James", last: "Kelman" } },
296
+ { from: "Stephen Kelman", to: { full: "Stephen Kelman", first: "Stephen", last: "Kelman" } },
297
+ { from: "Ken Follett", to: { full: "Ken Follett", first: "Ken", last: "Follett" } },
298
+ { from: "Thomas Keneally", to: { full: "Thomas Keneally", first: "Thomas", last: "Keneally" } },
299
+ { from: "AL Kennedy", to: { full: "AL Kennedy", first: "AL", last: "Kennedy" } },
300
+ { from: "Frank Kermode", to: { full: "Frank Kermode", first: "Frank", last: "Kermode" } },
301
+ { from: "Jack Kerouac", to: { full: "Jack Kerouac", first: "Jack", last: "Kerouac" } },
302
+ { from: "Marian Keyes", to: { full: "Marian Keyes", first: "Marian", last: "Keyes" } },
303
+ { from: "Stephen King", to: { full: "Stephen King", first: "Stephen", last: "King" } },
304
+ { from: "Barbara Kingsolver", to: { full: "Barbara Kingsolver", first: "Barbara", last: "Kingsolver" } },
305
+ { from: "Jeff Kinney", to: { full: "Jeff Kinney", first: "Jeff", last: "Kinney" } },
306
+ { from: "Rudyard Kipling", to: { full: "Rudyard Kipling", first: "Rudyard", last: "Kipling" } },
307
+ { from: "Kiran Desai", to: { full: "Kiran Desai", first: "Kiran", last: "Desai" } },
308
+ { from: "Arthur Koestler", to: { full: "Arthur Koestler", first: "Arthur", last: "Koestler" } },
309
+ { from: "Milan Kundera", to: { full: "Milan Kundera", first: "Milan", last: "Kundera" } },
310
+ { from: "Hanif Kureishi", to: { full: "Hanif Kureishi", first: "Hanif", last: "Kureishi" } },
311
+ { from: "Mark Kurlansky", to: { full: "Mark Kurlansky", first: "Mark", last: "Kurlansky" } },
312
+ { from: "Tony Kushner", to: { full: "Tony Kushner", first: "Tony", last: "Kushner" } },
313
+
314
+ { from: "Jhumpa Lahiri", to: { full: "Jhumpa Lahiri", first: "Jhumpa", last: "Lahiri" } },
315
+ { from: "RD Laing", to: { full: "RD Laing", first: "RD", last: "Laing" } },
316
+ { from: "Philip Larkin", to: { full: "Philip Larkin", first: "Philip", last: "Larkin" } },
317
+ { from: "Stieg Larsson", to: { full: "Stieg Larsson", first: "Stieg", last: "Larsson" } },
318
+ { from: "DH Lawrence", to: { full: "DH Lawrence", first: "DH", last: "Lawrence" } },
319
+ { from: "John le Carré", to: { full: "John le Carré", first: "John", last: "le Carré" } },
320
+ { from: "Darian Leader", to: { full: "Darian Leader", first: "Darian", last: "Leader" } },
321
+ { from: "Harper Lee", to: { full: "Harper Lee", first: "Harper", last: "Lee" } },
322
+ { from: "Ursula K Le Guin", to: { full: "Ursula K Le Guin", first: "Ursula K", last: "Le Guin" } },
323
+ { from: "Elmore Leonard", to: { full: "Elmore Leonard", first: "Elmore", last: "Leonard" } },
324
+ { from: "Doris Lessing", to: { full: "Doris Lessing", first: "Doris", last: "Lessing" } },
325
+ { from: "Jonathan Lethem", to: { full: "Jonathan Lethem", first: "Jonathan", last: "Lethem" } },
326
+ { from: "Primo Levi", to: { full: "Primo Levi", first: "Primo", last: "Levi" } },
327
+ { from: "Andrea Levy", to: { full: "Andrea Levy", first: "Andrea", last: "Levy" } },
328
+ { from: "Deborah Levy", to: { full: "Deborah Levy", first: "Deborah", last: "Levy" } },
329
+ { from: "CS Lewis", to: { full: "CS Lewis", first: "CS", last: "Lewis" } },
330
+ { from: "Penelope Lively", to: { full: "Penelope Lively", first: "Penelope", last: "Lively" } },
331
+ { from: "Liz Pichon", to: { full: "Liz Pichon", first: "Liz", last: "Pichon" } },
332
+ { from: "Attica Locke", to: { full: "Attica Locke", first: "Attica", last: "Locke" } },
333
+ { from: "John Locke", to: { full: "John Locke", first: "John", last: "Locke" } },
334
+ { from: "David Lodge", to: { full: "David Lodge", first: "David", last: "Lodge" } },
335
+ { from: "Michael Longley", to: { full: "Michael Longley", first: "Michael", last: "Longley" } },
336
+ { from: "Robert Lowell", to: { full: "Robert Lowell", first: "Robert", last: "Lowell" } },
337
+
338
+ { from: "Richard Mabey", to: { full: "Richard Mabey", first: "Richard", last: "Mabey" } },
339
+ { from: "George MacDonald Fraser", to: { full: "George MacDonald Fraser", first: "George MacDonald", last: "Fraser" } },
340
+ { from: "Madeline Miller", to: { full: "Madeline Miller", first: "Madeline", last: "Miller" } },
341
+ { from: "Maggie Gee", to: { full: "Maggie Gee", first: "Maggie", last: "Gee" } },
342
+ { from: "Maile Chapman", to: { full: "Maile Chapman", first: "Maile", last: "Chapman" } },
343
+ { from: "Andrei Makine", to: { full: "Andrei Makine", first: "Andrei", last: "Makine" } },
344
+ { from: "Henning Mankell", to: { full: "Henning Mankell", first: "Henning", last: "Mankell" } },
345
+ { from: "Thomas Mann", to: { full: "Thomas Mann", first: "Thomas", last: "Mann" } },
346
+ { from: "Hilary Mantel", to: { full: "Hilary Mantel", first: "Hilary", last: "Mantel" } },
347
+ { from: "Greil Marcus", to: { full: "Greil Marcus", first: "Greil", last: "Marcus" } },
348
+ { from: "Marcus Sedgwick", to: { full: "Marcus Sedgwick", first: "Marcus", last: "Sedgwick" } },
349
+ { from: "Christopher Marlowe", to: { full: "Christopher Marlowe", first: "Christopher", last: "Marlowe" } },
350
+ { from: "Gabriel García Márquez", to: { full: "Gabriel García Márquez", first: "Gabriel García", last: "Márquez" } },
351
+ { from: "Yann Martel", to: { full: "Yann Martel", first: "Yann", last: "Martel" } },
352
+ { from: "George RR Martin", to: { full: "George RR Martin", first: "George RR", last: "Martin" } },
353
+ { from: "Hisham Matar", to: { full: "Hisham Matar", first: "Hisham", last: "Matar" } },
354
+ { from: "Somerset Maugham", to: { full: "Somerset Maugham", first: "Somerset", last: "Maugham" } },
355
+ { from: "Armistead Maupin", to: { full: "Armistead Maupin", first: "Armistead", last: "Maupin" } },
356
+ { from: "Simon Mawer", to: { full: "Simon Mawer", first: "Simon", last: "Mawer" } },
357
+ { from: "Patrick McCabe", to: { full: "Patrick McCabe", first: "Patrick", last: "McCabe" } },
358
+ { from: "Alexander McCall Smith", to: { full: "Alexander McCall Smith", first: "Alexander McCall", last: "Smith" } },
359
+ { from: "Cormac McCarthy", to: { full: "Cormac McCarthy", first: "Cormac", last: "McCarthy" } },
360
+ { from: "Frank McCourt", to: { full: "Frank McCourt", first: "Frank", last: "McCourt" } },
361
+ { from: "Val McDermid", to: { full: "Val McDermid", first: "Val", last: "McDermid" } },
362
+ { from: "Ian McEwan", to: { full: "Ian McEwan", first: "Ian", last: "McEwan" } },
363
+ { from: "Roger McGough", to: { full: "Roger McGough", first: "Roger", last: "McGough" } },
364
+ { from: "Candia McWilliam", to: { full: "Candia McWilliam", first: "Candia", last: "McWilliam" } },
365
+ { from: "Herman Melville", to: { full: "Herman Melville", first: "Herman", last: "Melville" } },
366
+ { from: "Claire Messud", to: { full: "Claire Messud", first: "Claire", last: "Messud" } },
367
+ { from: "Stephenie Meyer", to: { full: "Stephenie Meyer", first: "Stephenie", last: "Meyer" } },
368
+ { from: "China Miéville", to: { full: "China Miéville", first: "China", last: "Miéville" } },
369
+ { from: "Arthur Miller", to: { full: "Arthur Miller", first: "Arthur", last: "Miller" } },
370
+ { from: "AD Miller", to: { full: "AD Miller", first: "AD", last: "Miller" } },
371
+ { from: "Frank Miller", to: { full: "Frank Miller", first: "Frank", last: "Miller" } },
372
+ { from: "John Milton", to: { full: "John Milton", first: "John", last: "Milton" } },
373
+ { from: "Rohinton Mistry", to: { full: "Rohinton Mistry", first: "Rohinton", last: "Mistry" } },
374
+ { from: "David Mitchell", to: { full: "David Mitchell", first: "David", last: "Mitchell" } },
375
+ { from: "Adrian Mitchell", to: { full: "Adrian Mitchell", first: "Adrian", last: "Mitchell" } },
376
+ { from: "Nancy Mitford", to: { full: "Nancy Mitford", first: "Nancy", last: "Mitford" } },
377
+ { from: "Rutu Modan", to: { full: "Rutu Modan", first: "Rutu", last: "Modan" } },
378
+ { from: "Michel de Montaigne", to: { full: "Michel de Montaigne", first: "Michel", last: "de Montaigne" } },
379
+ { from: "Alan Moore", to: { full: "Alan Moore", first: "Alan", last: "Moore" } },
380
+ { from: "Lisa Moore", to: { full: "Lisa Moore", first: "Lisa", last: "Moore" } },
381
+ { from: "Lorrie Moore", to: { full: "Lorrie Moore", first: "Lorrie", last: "Moore" } },
382
+ { from: "Caitlin Moran", to: { full: "Caitlin Moran", first: "Caitlin", last: "Moran" } },
383
+ { from: "Edwin Morgan", to: { full: "Edwin Morgan", first: "Edwin", last: "Morgan" } },
384
+ { from: "Michael Morpurgo", to: { full: "Michael Morpurgo", first: "Michael", last: "Morpurgo" } },
385
+ { from: "Jan Morris", to: { full: "Jan Morris", first: "Jan", last: "Morris" } },
386
+ { from: "Toni Morrison", to: { full: "Toni Morrison", first: "Toni", last: "Morrison" } },
387
+ { from: "Blake Morrison", to: { full: "Blake Morrison", first: "Blake", last: "Morrison" } },
388
+ { from: "Walter Mosley", to: { full: "Walter Mosley", first: "Walter", last: "Mosley" } },
389
+ { from: "Kate Mosse", to: { full: "Kate Mosse", first: "Kate", last: "Mosse" } },
390
+ { from: "Andrew Motion", to: { full: "Andrew Motion", first: "Andrew", last: "Motion" } },
391
+ { from: "Paul Muldoon", to: { full: "Paul Muldoon", first: "Paul", last: "Muldoon" } },
392
+ { from: "Alice Munro", to: { full: "Alice Munro", first: "Alice", last: "Munro" } },
393
+ { from: "Haruki Murakami", to: { full: "Haruki Murakami", first: "Haruki", last: "Murakami" } },
394
+ { from: "Iris Murdoch", to: { full: "Iris Murdoch", first: "Iris", last: "Murdoch" } },
395
+ { from: "Paul Murray", to: { full: "Paul Murray", first: "Paul", last: "Murray" } },
396
+ { from: "Julie Myerson", to: { full: "Julie Myerson", first: "Julie", last: "Myerson" } },
397
+
398
+ { from: "Vladimir Nabokov", to: { full: "Vladimir Nabokov", first: "Vladimir", last: "Nabokov" } },
399
+ { from: "Nadifa Mohamed", to: { full: "Nadifa Mohamed", first: "Nadifa", last: "Mohamed" } },
400
+ { from: "Daljit Nagra", to: { full: "Daljit Nagra", first: "Daljit", last: "Nagra" } },
401
+ { from: "VS Naipaul", to: { full: "VS Naipaul", first: "VS", last: "Naipaul" } },
402
+ { from: "Naomi Klein", to: { full: "Naomi Klein", first: "Naomi", last: "Klein" } },
403
+ { from: "RK Narayan", to: { full: "RK Narayan", first: "RK", last: "Narayan" } },
404
+ { from: "Ned Beauman", to: { full: "Ned Beauman", first: "Ned", last: "Beauman" } },
405
+ { from: "Patrick Ness", to: { full: "Patrick Ness", first: "Patrick", last: "Ness" } },
406
+ { from: "David Nicholls", to: { full: "David Nicholls", first: "David", last: "Nicholls" } },
407
+ { from: "Nick Tosches", to: { full: "Nick Tosches", first: "Nick", last: "Tosches" } },
408
+ { from: "Audrey Niffenegger", to: { full: "Audrey Niffenegger", first: "Audrey", last: "Niffenegger" } },
409
+
410
+ { from: "Edna O'Brien", to: { full: "Edna O'Brien", first: "Edna", last: "O'Brien" } },
411
+ { from: "Sean O'Brien", to: { full: "Sean O'Brien", first: "Sean", last: "O'Brien" } },
412
+ { from: "Eugene O'Neill", to: { full: "Eugene O'Neill", first: "Eugene", last: "O'Neill" } },
413
+ { from: "Joyce Carol Oates", to: { full: "Joyce Carol Oates", first: "Joyce Carol", last: "Oates" } },
414
+ { from: "Téa Obreht", to: { full: "Téa Obreht", first: "Téa", last: "Obreht" } },
415
+ { from: "Flann O'Brien", to: { full: "Flann O'Brien", first: "Flann", last: "O'Brien" } },
416
+ { from: "Ben Okri", to: { full: "Ben Okri", first: "Ben", last: "Okri" } },
417
+ { from: "Sharon Olds", to: { full: "Sharon Olds", first: "Sharon", last: "Olds" } },
418
+ { from: "Michael Ondaatje", to: { full: "Michael Ondaatje", first: "Michael", last: "Ondaatje" } },
419
+ { from: "George Orwell", to: { full: "George Orwell", first: "George", last: "Orwell" } },
420
+ { from: "Ruth Ozeki", to: { full: "Ruth Ozeki", first: "Ruth", last: "Ozeki" } },
421
+
422
+ { from: "Ruth Padel", to: { full: "Ruth Padel", first: "Ruth", last: "Padel" } },
423
+ { from: "Chuck Palahniuk", to: { full: "Chuck Palahniuk", first: "Chuck", last: "Palahniuk" } },
424
+ { from: "Orhan Pamuk", to: { full: "Orhan Pamuk", first: "Orhan", last: "Pamuk" } },
425
+ { from: "Boris Pasternak", to: { full: "Boris Pasternak", first: "Boris", last: "Pasternak" } },
426
+ { from: "Paul Farley", to: { full: "Paul Farley", first: "Paul", last: "Farley" } },
427
+ { from: "Michelle Paver", to: { full: "Michelle Paver", first: "Michelle", last: "Paver" } },
428
+ { from: "David Peace", to: { full: "David Peace", first: "David", last: "Peace" } },
429
+ { from: "Basharat Peer", to: { full: "Basharat Peer", first: "Basharat", last: "Peer" } },
430
+ { from: "Mal Peet", to: { full: "Mal Peet", first: "Mal", last: "Peet" } },
431
+ { from: "Harvey Pekar", to: { full: "Harvey Pekar", first: "Harvey", last: "Pekar" } },
432
+ { from: "Penelope Fitzgerald", to: { full: "Penelope Fitzgerald", first: "Penelope", last: "Fitzgerald" } },
433
+ { from: "Samuel Pepys", to: { full: "Samuel Pepys", first: "Samuel", last: "Pepys" } },
434
+ { from: "Percy Bysshe Shelley", to: { full: "Percy Bysshe Shelley", first: "Percy Bysshe", last: "Shelley" } },
435
+ { from: "Philip Hensher", to: { full: "Philip Hensher", first: "Philip", last: "Hensher" } },
436
+ { from: "Piers Paul Read", to: { full: "Piers Paul Read", first: "Piers Paul", last: "Read" } },
437
+ { from: "Piers Torday", to: { full: "Piers Torday", first: "Piers", last: "Torday" } },
438
+ { from: "Harold Pinter", to: { full: "Harold Pinter", first: "Harold", last: "Pinter" } },
439
+ { from: "Sylvia Plath", to: { full: "Sylvia Plath", first: "Sylvia", last: "Plath" } },
440
+
441
+ { from: "Edgar Allan Poe", to: { full: "Edgar Allan Poe", first: "Edgar Allan", last: "Poe" } },
442
+ { from: "Peter Porter", to: { full: "Peter Porter", first: "Peter", last: "Porter" } },
443
+ { from: "Terry Pratchett", to: { full: "Terry Pratchett", first: "Terry", last: "Pratchett" } },
444
+ { from: "Marcel Proust", to: { full: "Marcel Proust", first: "Marcel", last: "Proust" } },
445
+ { from: "Philip Pullman", to: { full: "Philip Pullman", first: "Philip", last: "Pullman" } },
446
+ { from: "Thomas Pynchon", to: { full: "Thomas Pynchon", first: "Thomas", last: "Pynchon" } },
447
+
448
+ { from: "Jonathan Raban", to: { full: "Jonathan Raban", first: "Jonathan", last: "Raban" } },
449
+ { from: "Rachel Cusk", to: { full: "Rachel Cusk", first: "Rachel", last: "Cusk" } },
450
+ { from: "Ross Raisin", to: { full: "Ross Raisin", first: "Ross", last: "Raisin" } },
451
+ { from: "Ian Rankin", to: { full: "Ian Rankin", first: "Ian", last: "Rankin" } },
452
+ { from: "Arthur Ransome", to: { full: "Arthur Ransome", first: "Arthur", last: "Ransome" } },
453
+ { from: "Redmond O'Hanlon", to: { full: "Redmond O'Hanlon", first: "Redmond", last: "O'Hanlon" } },
454
+ { from: "David Remnick", to: { full: "David Remnick", first: "David", last: "Remnick" } },
455
+ { from: "Ruth Rendell", to: { full: "Ruth Rendell", first: "Ruth", last: "Rendell" } },
456
+ { from: "Reza Aslan", to: { full: "Reza Aslan", first: "Reza", last: "Aslan" } },
457
+ { from: "Anne Rice", to: { full: "Anne Rice", first: "Anne", last: "Rice" } },
458
+ { from: "Richard Flanagan", to: { full: "Richard Flanagan", first: "Richard", last: "Flanagan" } },
459
+ { from: "Richard Ford", to: { full: "Richard Ford", first: "Richard", last: "Ford" } },
460
+ { from: "Gwendoline Riley", to: { full: "Gwendoline Riley", first: "Gwendoline", last: "Riley" } },
461
+ { from: "Robert Graves", to: { full: "Robert Graves", first: "Robert", last: "Graves" } },
462
+ { from: "Marilynne Robinson", to: { full: "Marilynne Robinson", first: "Marilynne", last: "Robinson" } },
463
+ { from: "Rose Tremain", to: { full: "Rose Tremain", first: "Rose", last: "Tremain" } },
464
+ { from: "Michael Rosen", to: { full: "Michael Rosen", first: "Michael", last: "Rosen" } },
465
+ { from: "Meg Rosoff", to: { full: "Meg Rosoff", first: "Meg", last: "Rosoff" } },
466
+ { from: "Alex Ross", to: { full: "Alex Ross", first: "Alex", last: "Ross" } },
467
+ { from: "Philip Roth", to: { full: "Philip Roth", first: "Philip", last: "Roth" } },
468
+ { from: "JK Rowling", to: { full: "JK Rowling", first: "JK", last: "Rowling" } },
469
+ { from: "Roxane Gay", to: { full: "Roxane Gay", first: "Roxane", last: "Gay" } },
470
+ { from: "Arundhati Roy", to: { full: "Arundhati Roy", first: "Arundhati", last: "Roy" } },
471
+ { from: "Salman Rushdie", to: { full: "Salman Rushdie", first: "Salman", last: "Rushdie" } },
472
+ { from: "Russell Hoban", to: { full: "Russell Hoban", first: "Russell", last: "Hoban" } },
473
+
474
+ { from: "Joe Sacco", to: { full: "Joe Sacco", first: "Joe", last: "Sacco" } },
475
+ { from: "Jonathan Safran Foer", to: { full: "Jonathan Safran Foer", first: "Jonathan Safran", last: "Foer" } },
476
+ { from: "JD Salinger", to: { full: "JD Salinger", first: "JD", last: "Salinger" } },
477
+ { from: "Michael Sandel", to: { full: "Michael Sandel", first: "Michael", last: "Sandel" } },
478
+ { from: "José Saramago", to: { full: "José Saramago", first: "José", last: "Saramago" } },
479
+ { from: "Jean-Paul Sartre", to: { full: "Jean-Paul Sartre", first: "Jean-Paul", last: "Sartre" } },
480
+ { from: "Siegfried Sassoon", to: { full: "Siegfried Sassoon", first: "Siegfried", last: "Sassoon" } },
481
+ { from: "George Saunders", to: { full: "George Saunders", first: "George", last: "Saunders" } },
482
+ { from: "Dorothy L Sayers", to: { full: "Dorothy L Sayers", first: "Dorothy L", last: "Sayers" } },
483
+ { from: "Sir Walter Scott", to: { full: "Sir Walter Scott", title: "Sir", first: "Walter", last: "Scott" } },
484
+ { from: "WG Sebald", to: { full: "WG Sebald", first: "WG", last: "Sebald" } },
485
+ { from: "Will Self", to: { full: "Will Self", first: "Will", last: "Self" } },
486
+ { from: "Maurice Sendak", to: { full: "Maurice Sendak", first: "Maurice", last: "Sendak" } },
487
+ { from: "Dr Seuss", to: { full: "Dr Seuss", title: "Dr", last: "Seuss" } },
488
+ { from: "William Shakespeare", to: { full: "William Shakespeare", first: "William", last: "Shakespeare" } },
489
+ { from: "Shaun Tan", to: { full: "Shaun Tan", first: "Shaun", last: "Tan" } },
490
+ { from: "Mary Shelley", to: { full: "Mary Shelley", first: "Mary", last: "Shelley" } },
491
+ { from: "Carol Shields", to: { full: "Carol Shields", first: "Carol", last: "Shields" } },
492
+ { from: "Lionel Shriver", to: { full: "Lionel Shriver", first: "Lionel", last: "Shriver" } },
493
+ { from: "Alan Sillitoe", to: { full: "Alan Sillitoe", first: "Alan", last: "Sillitoe" } },
494
+ { from: "Georges Simenon", to: { full: "Georges Simenon", first: "Georges", last: "Simenon" } },
495
+ { from: "Posy Simmonds", to: { full: "Posy Simmonds", first: "Posy", last: "Simmonds" } },
496
+ { from: "Francesca Simon", to: { full: "Francesca Simon", first: "Francesca", last: "Simon" } },
497
+ { from: "Iain Sinclair", to: { full: "Iain Sinclair", first: "Iain", last: "Sinclair" } },
498
+ { from: "Lemn Sissay", to: { full: "Lemn Sissay", first: "Lemn", last: "Sissay" } },
499
+ { from: "Edith Sitwell", to: { full: "Edith Sitwell", first: "Edith", last: "Sitwell" } },
500
+ { from: "Robert Skidelsky", to: { full: "Robert Skidelsky", first: "Robert", last: "Skidelsky" } },
501
+ { from: "Jane Smiley", to: { full: "Jane Smiley", first: "Jane", last: "Smiley" } },
502
+ { from: "Ali Smith", to: { full: "Ali Smith", first: "Ali", last: "Smith" } },
503
+ { from: "Tom Rob Smith", to: { full: "Tom Rob Smith", first: "Tom Rob", last: "Smith" } },
504
+ { from: "Wilbur Smith", to: { full: "Wilbur Smith", first: "Wilbur", last: "Smith" } },
505
+ { from: "Zadie Smith", to: { full: "Zadie Smith", first: "Zadie", last: "Smith" } },
506
+ { from: "Andrew Solomon", to: { full: "Andrew Solomon", first: "Andrew", last: "Solomon" } },
507
+ { from: "Aleksandr Solzhenitsyn", to: { full: "Aleksandr Solzhenitsyn", first: "Aleksandr", last: "Solzhenitsyn" } },
508
+ { from: "Wole Soyinka", to: { full: "Wole Soyinka", first: "Wole", last: "Soyinka" } },
509
+ { from: "Muriel Spark", to: { full: "Muriel Spark", first: "Muriel", last: "Spark" } },
510
+ { from: "Art Spiegelman", to: { full: "Art Spiegelman", first: "Art", last: "Spiegelman" } },
511
+ { from: "Edward St Aubyn", to: { full: "Edward St Aubyn", first: "Edward", last: "St Aubyn" } },
512
+ { from: "John Steinbeck", to: { full: "John Steinbeck", first: "John", last: "Steinbeck" } },
513
+ { from: "Gloria Steinem", to: { full: "Gloria Steinem", first: "Gloria", last: "Steinem" } },
514
+ { from: "Laurence Sterne", to: { full: "Laurence Sterne", first: "Laurence", last: "Sterne" } },
515
+ { from: "Robert Louis Stevenson", to: { full: "Robert Louis Stevenson", first: "Robert Louis", last: "Stevenson" } },
516
+ { from: "Kathryn Stockett", to: { full: "Kathryn Stockett", first: "Kathryn", last: "Stockett" } },
517
+ { from: "Sue Townsend", to: { full: "Sue Townsend", first: "Sue", last: "Townsend" } },
518
+ { from: "Graham Swift", to: { full: "Graham Swift", first: "Graham", last: "Swift" } },
519
+ { from: "Jonathan Swift", to: { full: "Jonathan Swift", first: "Jonathan", last: "Swift" } },
520
+
521
+ { from: "Nassim Nicholas Taleb", to: { full: "Nassim Nicholas Taleb", first: "Nassim Nicholas", last: "Taleb" } },
522
+ { from: "Raymond Tallis", to: { full: "Raymond Tallis", first: "Raymond", last: "Tallis" } },
523
+ { from: "Alfred Tennyson", to: { full: "Alfred Tennyson", first: "Alfred", last: "Tennyson" } },
524
+ { from: "Studs Terkel", to: { full: "Studs Terkel", first: "Studs", last: "Terkel" } },
525
+ { from: "Ngugi wa Thiong'o", to: { full: "Ngugi wa Thiong'o", first: "Ngugi", last: "wa Thiong'o" } },
526
+ { from: "Dylan Thomas", to: { full: "Dylan Thomas", first: "Dylan", last: "Thomas" } },
527
+ { from: "Hunter S Thompson", to: { full: "Hunter S Thompson", first: "Hunter S", last: "Thompson" } },
528
+ { from: "Rupert Thomson", to: { full: "Rupert Thomson", first: "Rupert", last: "Thomson" } },
529
+ { from: "Colm Tóibín", to: { full: "Colm Tóibín", first: "Colm", last: "Tóibín" } },
530
+ { from: "JRR Tolkien", to: { full: "JRR Tolkien", first: "JRR", last: "Tolkien" } },
531
+ { from: "Leo Tolstoy", to: { full: "Leo Tolstoy", first: "Leo", last: "Tolstoy" } },
532
+ { from: "Tom McCarthy", to: { full: "Tom McCarthy", first: "Tom", last: "McCarthy" } },
533
+ { from: "Claire Tomalin", to: { full: "Claire Tomalin", first: "Claire", last: "Tomalin" } },
534
+ { from: "Justin Torres", to: { full: "Justin Torres", first: "Justin", last: "Torres" } },
535
+ { from: "William Trevor", to: { full: "William Trevor", first: "William", last: "Trevor" } },
536
+ { from: "Hugh Trevor-Roper", to: { full: "Hugh Trevor-Roper", first: "Hugh", last: "Trevor-Roper" } },
537
+ { from: "Anthony Trollope", to: { full: "Anthony Trollope", first: "Anthony", last: "Trollope" } },
538
+ { from: "TS Eliot", to: { full: "TS Eliot", first: "TS", last: "Eliot" } },
539
+ { from: "Christos Tsiolkas", to: { full: "Christos Tsiolkas", first: "Christos", last: "Tsiolkas" } },
540
+ { from: "Mark Twain", to: { full: "Mark Twain", first: "Mark", last: "Twain" } },
541
+
542
+ { from: "David Uberti", to: { full: "David Uberti", first: "David", last: "Uberti" } },
543
+ { from: "Barry Unsworth", to: { full: "Barry Unsworth", first: "Barry", last: "Unsworth" } },
544
+ { from: "John Updike", to: { full: "John Updike", first: "John", last: "Updike" } },
545
+
546
+ { from: "Mario Vargas Llosa", to: { full: "Mario Vargas Llosa", first: "Mario Vargas", last: "Llosa" } },
547
+ { from: "Francois Marie Arouet de Voltaire", to: { full: "Francois Marie Arouet de Voltaire", first: "Francois Marie Arouet", last: "de Voltaire" } },
548
+ { from: "Kurt Vonnegut", to: { full: "Kurt Vonnegut", first: "Kurt", last: "Vonnegut" } },
549
+
550
+ { from: "Derek Walcott", to: { full: "Derek Walcott", first: "Derek", last: "Walcott" } },
551
+ { from: "Alice Walker", to: { full: "Alice Walker", first: "Alice", last: "Walker" } },
552
+ { from: "David Foster Wallace", to: { full: "David Foster Wallace", first: "David Foster", last: "Wallace" } },
553
+ { from: "Natasha Walter", to: { full: "Natasha Walter", first: "Natasha", last: "Walter" } },
554
+ { from: "Joseph Wambaugh", to: { full: "Joseph Wambaugh", first: "Joseph", last: "Wambaugh" } },
555
+ { from: "Jesmyn Ward", to: { full: "Jesmyn Ward", first: "Jesmyn", last: "Ward" } },
556
+ { from: "Alan Warner", to: { full: "Alan Warner", first: "Alan", last: "Warner" } },
557
+ { from: "Sarah Waters", to: { full: "Sarah Waters", first: "Sarah", last: "Waters" } },
558
+ { from: "Evelyn Waugh", to: { full: "Evelyn Waugh", first: "Evelyn", last: "Waugh" } },
559
+ { from: "Fay Weldon", to: { full: "Fay Weldon", first: "Fay", last: "Weldon" } },
560
+ { from: "HG Wells", to: { full: "HG Wells", first: "HG", last: "Wells" } },
561
+ { from: "Irvine Welsh", to: { full: "Irvine Welsh", first: "Irvine", last: "Welsh" } },
562
+ { from: "Edith Wharton", to: { full: "Edith Wharton", first: "Edith", last: "Wharton" } },
563
+ { from: "Edmund White", to: { full: "Edmund White", first: "Edmund", last: "White" } },
564
+ { from: "Oscar Wilde", to: { full: "Oscar Wilde", first: "Oscar", last: "Wilde" } },
565
+ { from: "Hugo Williams", to: { full: "Hugo Williams", first: "Hugo", last: "Williams" } },
566
+ { from: "Tennessee Williams", to: { full: "Tennessee Williams", first: "Tennessee", last: "Williams" } },
567
+ { from: "Jacqueline Wilson", to: { full: "Jacqueline Wilson", first: "Jacqueline", last: "Wilson" } },
568
+ { from: "Jeanette Winterson", to: { full: "Jeanette Winterson", first: "Jeanette", last: "Winterson" } },
569
+ { from: "PG Wodehouse", to: { full: "PG Wodehouse", first: "PG", last: "Wodehouse" } },
570
+ { from: "Naomi Wolf", to: { full: "Naomi Wolf", first: "Naomi", last: "Wolf" } },
571
+ { from: "Tom Wolfe", to: { full: "Tom Wolfe", first: "Tom", last: "Wolfe" } },
572
+ { from: "Mary Wollstonecraft", to: { full: "Mary Wollstonecraft", first: "Mary", last: "Wollstonecraft" } },
573
+ { from: "Virginia Woolf", to: { full: "Virginia Woolf", first: "Virginia", last: "Woolf" } },
574
+ { from: "William Wordsworth", to: { full: "William Wordsworth", first: "William", last: "Wordsworth" } },
575
+ { from: "John Wyndham", to: { full: "John Wyndham", first: "John", last: "Wyndham" } },
576
+ { from: "Diana Wynne Jones", to: { full: "Diana Wynne Jones", first: "Diana Wynne", last: "Jones" } },
577
+
578
+ { from: "WB Yeats", to: { full: "WB Yeats", first: "WB", last: "Yeats" } },
579
+
580
+ { from: "Slavoj Zizek", to: { full: "Slavoj Zizek", first: "Slavoj", last: "Zizek" } },
581
+ { from: "Emile Zola", to: { full: "Emile Zola", first: "Emile", last: "Zola" } }
582
+ ].each do |name|
583
+ it "parses #{name[:from]}" do
584
+ skip if name[:skip]
585
+ parsed = Nomener.parse(name[:from])
586
+ parse_hash = parsed.to_h
587
+ parse_hash.each_pair do |k,v|
588
+ unless (v.nil? || v.empty?)
589
+ expect(v).to eq(name[:to][k]), "got from #{k} - #{v} not #{name[:to][k]}"
590
+ end
591
+ end
592
+ end
593
+ end
594
+
595
+ end
596
+ end