philologic-client 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY.rdoc CHANGED
@@ -1,5 +1,9 @@
1
1
  = Philologic::Client History
2
2
 
3
+ == 2012-01-10 v0.0.8
4
+
5
+ * Added +Philologic::Client#frequency()+ table searching.
6
+
3
7
  == 2012-01-09 v0.0.7
4
8
 
5
9
  * Fixed bug in URI fetching
data/README.rdoc CHANGED
@@ -26,6 +26,9 @@
26
26
  # Frequency search by arbitrary key-value pairs
27
27
  client.frequency( :query => 'sartre', :foo => 1 ).each { |result| puts result }
28
28
 
29
+ # Links for first result in frequency table search
30
+ client.frequency('sartre').first.links.each { |link| puts link }
31
+
29
32
  # Get/Set encoding
30
33
  encoding = client.encoding
31
34
  client.encoding = 'utf-8' # Default
@@ -51,9 +54,8 @@ https://github.com/blairc/philologic-client/
51
54
 
52
55
  == To Do
53
56
 
54
- * Add frequency table searching
55
57
  * Add collocation table searching
56
58
  * Add +children+ to Philologic::Document
57
59
  * Add +parent+ to Philologic::Document
58
- * Unify Philologic::Link and Philologic::Document
60
+ * Unify (as much as possible) Philologic::Document, Philologic::Key, Philologic::Link
59
61
 
@@ -5,6 +5,6 @@ module Philologic
5
5
  #
6
6
  # Philologic::Client version
7
7
  #
8
- VERSION = '0.0.7'
8
+ VERSION = '0.0.8'
9
9
  end
10
10
  end
@@ -34,6 +34,9 @@ require 'open-uri'
34
34
  # # Frequency search by arbitrary key-value pairs
35
35
  # client.frequency( :query => 'sartre', :foo => 1 ).each { |result| puts result }
36
36
  #
37
+ # # Links for first result in frequency table search
38
+ # client.frequency('sartre').first.links.each { |link| puts link }
39
+ #
37
40
  # # Get/Set encoding
38
41
  # encoding = client.encoding
39
42
  # client.encoding = 'utf-8' # Default
@@ -59,11 +62,10 @@ require 'open-uri'
59
62
  #
60
63
  # == To Do
61
64
  #
62
- # * Add frequency table searching
63
65
  # * Add collocation table searching
64
66
  # * Add +children+ to Philologic::Document
65
67
  # * Add +parent+ to Philologic::Document
66
- # * Unify Philologic::Link and Philologic::Document
68
+ # * Unify (as much as possible) Philologic::Document, Philologic::Key, Philologic::Link
67
69
  #
68
70
  module Philologic # :nodoc:
69
71
 
@@ -190,6 +192,14 @@ module Philologic # :nodoc:
190
192
  return results
191
193
  elsif !doc.css('div.philologic_object').first.nil?
192
194
  return Philologic::Document.new( doc.css('div.philologic_object').first )
195
+ elsif !doc.css('table.philologic_frequency').first.nil?
196
+ results = []
197
+ doc.css('table.philologic_frequency').css('td.philologic_frequency_key').each do |key|
198
+ key.css('a').each do |a|
199
+ results << Philologic::Key.new(self, a) # TODO Why not a select?
200
+ end
201
+ end
202
+ return results
193
203
  # TODO else
194
204
  # warn "WARNING: could not parse document"
195
205
  end
@@ -240,6 +250,56 @@ module Philologic # :nodoc:
240
250
  end # class Philologic::Document
241
251
 
242
252
 
253
+ #
254
+ # Philologic key.
255
+ #
256
+ class Key
257
+
258
+ #
259
+ # Initialize Philologic::Key object.
260
+ #
261
+ # Params:
262
+ # +client+:: Philologic::Client object
263
+ # +document+:: Nokogiri document
264
+ #
265
+ def initialize(client, document)
266
+ @client = client
267
+ @doc = document
268
+ end
269
+
270
+ #
271
+ # Returns value of attribute +key+ or +nil+.
272
+ #
273
+ def [](key)
274
+ @doc.attributes.key?(key) ? @doc.attributes[key].value : nil
275
+ end
276
+
277
+ #
278
+ # Returns Philologic::Link objects referenced by this Philologic::Key object.
279
+ #
280
+ def links
281
+ q = self['href'].sub( %r{^\./\?}, '' ).split('&')
282
+ @client.search( Hash[ *q.collect { |v| v.split('=', 2) }.flatten ] )
283
+ end
284
+
285
+ #
286
+ # Returns key text.
287
+ #
288
+ def text
289
+ @text = @doc.text.lstrip.rstrip if @text.nil?
290
+ @text
291
+ end
292
+
293
+ #
294
+ # Return String representation of object.
295
+ #
296
+ def to_s
297
+ [ self['href'], self.text ].join(' | ')
298
+ end
299
+
300
+ end # class Philologic::Key
301
+
302
+
243
303
  #
244
304
  # Philologic link.
245
305
  #
@@ -285,5 +345,4 @@ module Philologic # :nodoc:
285
345
 
286
346
  end # class Philologic::Link
287
347
 
288
-
289
348
  end # module Philologic
@@ -0,0 +1,145 @@
1
+ <html><head><title>TLFsorted: search for sartre</title></head><body><div class='philologic_concordance'><p class='description'>running query for sartre @ TLFsorted with arg 0. displaying 1 - 48 of 48 hits.</p><ol start='1'><li class='philologic_occurence'>
2
+ <a class='philologic_cite' href='./1839/3/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
3
+ ... qui se destinait à la psychiatrie. À la surprise générale, Jean-Paul <span class="hilite">Sartre</span> avait échoué à l'écrit. Le concours me parut difficile, mais je ne perdis pas co...</li>
4
+ <li class='philologic_occurence'>
5
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
6
+ ...ades. Je les connaissais presque tous. Seul me demeurait hermétique le clan formé par <span class="hilite">Sartre</span>, Nizan et Herbaud; ils ne frayaient avec personne; ils n'assistaient q...</li>
7
+ <li class='philologic_occurence'>
8
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
9
+ ...lf et derrière ses grosses lunettes d'écaille je lui trouvais un regard très intimidant. <span class="hilite">Sartre</span> n'avait pas une mauvaise tête, mais on disait qu'il était le plus terrible des trois e...</li>
10
+ <li class='philologic_occurence'>
11
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
12
+ ...me paraissait accessible: Herbaud. Il était marié lui aussi. En compagnie de <span class="hilite">Sartre</span> et de Nizan, il m'ignorait. Quand je le rencontrais seul, nous échangions ...</li>
13
+ <li class='philologic_occurence'>
14
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
15
+ ...existerais jamais. Un après-midi, je l'avais aperçu rue Soufflot, accompagné de <span class="hilite">Sartre</span> et de Nizan, et donnant le bras à une femme en gris: je m'étais sentie exclue...</li>
16
+ <li class='philologic_occurence'>
17
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
18
+ ...t il était monté à Paris pour préparer normale. Il avait connu en hypo-khâgne <span class="hilite">Sartre</span> et Nizan et il me parla beaucoup d'eux; il admirait Nizan, pour sa dis...</li>
19
+ <li class='philologic_occurence'>
20
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
21
+ ...; il admirait Nizan, pour sa distinction désinvolte, mais il était surtout lié avec <span class="hilite">Sartre</span> qu'il disait prodigieusement intéressant. Nos autres condisciples, il les méprisai...</li>
22
+ <li class='philologic_occurence'>
23
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
24
+ ...ditais ainsi sur mon destin, j'aperçus Herbaud qui longeait le bassin en compagnie de <span class="hilite">Sartre</span>: il me vit, et il m'ignora. Mystère et mensonge des journaux intimes: je ne mention...</li>
25
+ <li class='philologic_occurence'>
26
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
27
+ ... la Sorbonne. Vêtu d'un costume d'été beige clair, il était assis à côté de <span class="hilite">Sartre</span> sur le rebord d'une fenêtre. Il me tendit la main, dans un long geste affectueux, e...</li>
28
+ <li class='philologic_occurence'>
29
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
30
+ ...r en faisant allusion à notre rencontre, au Luxembourg; il aurait aimé me présenter <span class="hilite">Sartre</span>, "mais si je ne respecte pas les ruminations de Clairaut, dit-il, je ne me perm...</li>
31
+ <li class='philologic_occurence'>
32
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
33
+ ... Il me remit, de la part de <span class="hilite">Sartre</span>, un dessin que celui-ci m'avait dédié et qui représentait: Leibniz au bai...</li>
34
+ <li class='philologic_occurence'>
35
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
36
+ ...cosmologie eugénique", inventée à partir du potomak, et à laquelle il avait rallié <span class="hilite">Sartre</span> et Nizan; tous trois appartenaient à la plus haute caste, celle des eugènes, ...</li>
37
+ <li class='philologic_occurence'>
38
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
39
+ ...le est très bien d'ailleurs votre voix, mais elle est rauque. Elle nous divertit beaucoup, <span class="hilite">Sartre</span> et moi." Je découvris que j'avais une démarche, une voix: c'était nouveau. J...</li>
40
+ <li class='philologic_occurence'>
41
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
42
+ ...reuves; puis il comptait quitter Paris, et à son retour il préparerait son oral avec <span class="hilite">Sartre</span> et Nizan. Finies, nos rencontres à la nationale: comme j'allais les regret...</li>
43
+ <li class='philologic_occurence'>
44
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
45
+ ...Orne; à son retour, dans une dizaine de jours, il préparerait l'oral du concours avec <span class="hilite">Sartre</span> et Nizan qui m'invitaient cordialement à me joindre à eux. D'ici là, ...</li>
46
+ <li class='philologic_occurence'>
47
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
48
+ ...artre et Nizan qui m'invitaient cordialement à me joindre à eux. D'ici là, <span class="hilite">Sartre</span> voulait faire ma connaissance: il me proposait un rendez-vous pour un soir prochain. ...</li>
49
+ <li class='philologic_occurence'>
50
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
51
+ ... Mais Herbaud me demanda de ne pas y aller: <span class="hilite">Sartre</span> profiterait de son absence pour m'accaparer." Je ne veux pas qu'on touche à mes pl...</li>
52
+ <li class='philologic_occurence'>
53
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
54
+ ...nts " me dit Herbaud d'un ton complice. Nous décidâmes que ma soeur retrouverait <span class="hilite">Sartre</span> à l'heure et à l'endroit prévus; elle lui dirait que j'étais partie brusquement pour...</li>
55
+ <li class='philologic_occurence'>
56
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
57
+ ... je flânai, je me donnai du bon temps. Pendant la soirée que Poupette passa avec <span class="hilite">Sartre</span>, je récapitulai joyeusement l'année qui venait de s'écouler, et toute ma jeunesse; je...</li>
58
+ <li class='philologic_occurence'>
59
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
60
+ ...ent en ce monde. Quand ma soeur rentra, elle me félicita d'être restée à la maison. <span class="hilite">Sartre</span> avait courtoisement encaissé notre mensonge; il l'avait emmenée au cinéma et s'était...</li>
61
+ <li class='philologic_occurence'>
62
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
63
+ ...tait montré très aimable; mais la conversation avait chômé." Tout ce qu'il raconte de <span class="hilite">Sartre</span>, Herbaud l'invente lui-même " me dit ma soeur qui connaissait un peu Herba...</li>
64
+ <li class='philologic_occurence'>
65
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
66
+ ...travailler Leibniz. J'étais un peu effarouchée quand j'entrai dans la chambre de <span class="hilite">Sartre</span>; il y avait un grand désordre de livres et de papiers, des mégots dans tous les coins,...</li>
67
+ <li class='philologic_occurence'>
68
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
69
+ ...and désordre de livres et de papiers, des mégots dans tous les coins, une énorme fumée. <span class="hilite">Sartre</span> m'accueillit mondainement; il fumait la pipe. Silencieux, une cigarette collée au c...</li>
70
+ <li class='philologic_occurence'>
71
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
72
+ ...elai. Leibniz nous ennuyait et il fut décidé que nous le connaissions assez. <span class="hilite">Sartre</span> se chargea de nous expliquer le contrat social, sur lequel il avait des lumière...</li>
73
+ <li class='philologic_occurence'>
74
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
75
+ ...ement Herbaud tandis que Nizan contemplait ses ongles d'un air absorbé; mais <span class="hilite">Sartre</span> avait toujours le dessus. Impossible de lui en vouloir: il se mettait en quatre pour...</li>
76
+ <li class='philologic_occurence'>
77
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
78
+ ... turnes de l'école normale, je grimpai rituellement sur les toits. Pendant ces promenades, <span class="hilite">Sartre</span> et Herbaud chantaient à pleine ...</li>
79
+ <li class='philologic_occurence'>
80
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
81
+ ... titre d'un chapitre de Descartes: "de Dieu. Derechef qu'il existe." <span class="hilite">Sartre</span> avait une belle voix et un vaste répertoire: old man river et tous les airs de ...</li>
82
+ <li class='philologic_occurence'>
83
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
84
+ ... De Beauvoir." "Bien, bien", fit Nizan d'un ton sardonique, et <span class="hilite">Sartre</span> dit: "soit " avec bonhomie. Herbaud était morose, ce jour-là, parce qu'il...</li>
85
+ <li class='philologic_occurence'>
86
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
87
+ ...de Michel-Ange. Puis il me parla des différences qui le distinguaient de <span class="hilite">Sartre</span> et de Nizan. Il se donnait sans arrière-pensée aux joies de ce monde: les...</li>
88
+ <li class='philologic_occurence'>
89
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
90
+ ...nature, les voyages, les intrigues et les plaisirs." Eux, ils veulent toujours comprendre; <span class="hilite">Sartre</span> surtout " me dit-il. Il ajouta sur un ton de frayeur admirative: "Sartre, s...</li>
91
+ <li class='philologic_occurence'>
92
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
93
+ ...mprendre; Sartre surtout " me dit-il. Il ajouta sur un ton de frayeur admirative: "<span class="hilite">Sartre</span>, sauf peut-être quand il dort, il pense tout le temps! " Il accepta que Sartre...</li>
94
+ <li class='philologic_occurence'>
95
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
96
+ ...: "Sartre, sauf peut-être quand il dort, il pense tout le temps! " Il accepta que <span class="hilite">Sartre</span> passât avec nous la soirée du 14 juillet. Après un dîner dans un restaurant alsa...</li>
97
+ <li class='philologic_occurence'>
98
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
99
+ ...urant alsacien, nous regardâmes le feu d'artifice, assis sur une pelouse de la cité. Puis <span class="hilite">Sartre</span>, dont la munificence était légendaire, nous embarqua dans un taxi, et, au falstaff, ru...</li>
100
+ <li class='philologic_occurence'>
101
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
102
+ ...ontaient un tas d'histoires. J'étais aux anges. Ma soeur s'était trompée: je trouvai <span class="hilite">Sartre</span> encore plus amusant qu'Herbaud; néanmoins, nous convînmes tous trois que celu...</li>
103
+ <li class='philologic_occurence'>
104
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
105
+ ...Je vous aime vraiment beaucoup, Castor " me disait-il. Comme je devais dîner avec <span class="hilite">Sartre</span> chez les Nizan, et qu'il n'était pas libre, il me demanda avec une tendre auto...</li>
106
+ <li class='philologic_occurence'>
107
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
108
+ ...endemain, je me dirigeai vers la Sorbonne le coeur battant; à la porte, je rencontrai <span class="hilite">Sartre</span>: j'étais admissible ainsi que Nizan et lui. Herbaud avait échou..</li>
109
+ <li class='philologic_occurence'>
110
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
111
+ ...e l'aie revu: "tu diras au Castor tout le bonheur que je lui souhaite " écrivit-il à <span class="hilite">Sartre</span> dans un pneu où il l'avisait de son départ. Il réapparut une semaine plus tard, e...</li>
112
+ <li class='philologic_occurence'>
113
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
114
+ ...ions tous deux que j'avais menti. "À partir de maintenant, je vous prends en main " me dit <span class="hilite">Sartre</span> quand il m'eut annoncé mon admissibilité. Il avait le goût des amitiés féminine...</li>
115
+ <li class='philologic_occurence'>
116
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
117
+ ... plus souvent nous nous promenions tous les deux seuls. Sur les quais de la Seine, <span class="hilite">Sartre</span> m'achetait des pardaillan et des fantomas qu'il préférait de loin à l...</li>
118
+ <li class='philologic_occurence'>
119
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
120
+ ...nd ils prétendaient m'expliquer, les autres gens m'annexaient à leur monde, ils m'irritaient; <span class="hilite">Sartre</span> au contraire essayait de me situer dans mon propre système, il me comprenait à la lumi...</li>
121
+ <li class='philologic_occurence'>
122
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
123
+ ...ments, les vies dangereuses, les hommes perdus, les excès d'alcool, de drogue, de passion. <span class="hilite">Sartre</span> soutenait que, quand on a quelque chose à dire, tout gaspillage est criminel. L'oeu...</li>
124
+ <li class='philologic_occurence'>
125
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
126
+ ... par les nouvelles littéraires. " Nous avons reçu de J-P <span class="hilite">Sartre</span> des pages remarquables", écrivit Roland Alix en présentant sa répon...</li>
127
+ <li class='philologic_occurence'>
128
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
129
+ ...ent qui se supposerait libre." Comparant sa génération à celle qui l'avait précédée, <span class="hilite">Sartre</span> concluait: "nous sommes plus malheureux, mais plus sympathiques." Cette dernière p...</li>
130
+ <li class='philologic_occurence'>
131
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
132
+ ...x, mais plus sympathiques." Cette dernière phrase m'avait fait rire; mais en causant avec <span class="hilite">Sartre</span> j'entrevis la richesse de ce qu'il appelait sa " théorie de la contingence", où se tro...</li>
133
+ <li class='philologic_occurence'>
134
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
135
+ ...e très insolite; impossible de s'inspirer d'aucune mode, d'aucun modèle: autant la pensée de <span class="hilite">Sartre</span> m'avait frappée par sa maturité, autant je fus déconcertée par la gaucherie des essa...</li>
136
+ <li class='philologic_occurence'>
137
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
138
+ ...Nodier m'en avaient imposé: mais de loin, vaguement, sans que je me confronte à eux. <span class="hilite">Sartre</span>, tous les jours, toute la journée je me mesurais à lui et dans nos discussions, je ne ...</li>
139
+ <li class='philologic_occurence'>
140
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
141
+ ... la première: une parmi d'autres, et soudain incertaine de ses véritables capacités. Car <span class="hilite">Sartre</span> n'était pas le seul qui m'obligeât à la modestie: Nizan, Aron, ...</li>
142
+ <li class='philologic_occurence'>
143
+ <a class='philologic_cite' href='./1839/4/0/0'><span class='philologic_property' title='author'>Beauvoir S. de</span>, <span class='philologic_property' title='title'>Memoires Jeune Fille Rangee</span> <span class='philologic_property' title='date'>(1958)</span></a>
144
+ ...marqués par une sorte de grâce funeste; impossible de communiquer avec eux sans réserve. <span class="hilite">Sartre</span> répondait exactement au voeu de mes quinze ans: il était le double en qui je retrouvai...</li>
145
+ </ol><div class='more'><a href='./?query=sartre&title=&author=Beauvoir+S.+de&q_start=1&q_end=48'>1-48</a> </div></div></body></html>
@@ -10,22 +10,25 @@ require 'mocha'
10
10
  class TestPhilologicClient < Test::Unit::TestCase
11
11
 
12
12
  def setup
13
- @test_dir = File.expand_path( File.dirname(__FILE__) )
14
- @data_dir = File.expand_path( File.join( @test_dir, 'data' ) )
13
+ @test_dir = File.expand_path( File.dirname(__FILE__) )
14
+ @data_dir = File.expand_path( File.join( @test_dir, 'data' ) )
15
15
 
16
- @doc_path = 'doc_file.html'
17
- @doc_file = File.join( @data_dir, @doc_path )
16
+ @doc_path = 'doc_file.html'
17
+ @doc_file = File.join( @data_dir, @doc_path )
18
18
 
19
- @endpoint = @data_dir
19
+ @endpoint = @data_dir
20
20
 
21
- @freq_path = 'frequency_sartre.html'
22
- @freq_file = File.join( @data_dir, @freq_path )
21
+ @freq_path = 'frequency_sartre.html'
22
+ @freq_file = File.join( @data_dir, @freq_path )
23
23
 
24
- @root_path = 'root_file.html'
25
- @root_file = File.join( @data_dir, @root_path )
24
+ @freq_links_path = 'frequency_links.html'
25
+ @freq_links_file = File.join( @data_dir, @freq_links_path )
26
26
 
27
- @query_path = 'query_sartre.html'
28
- @query_file = File.join( @data_dir, @query_path )
27
+ @root_path = 'root_file.html'
28
+ @root_file = File.join( @data_dir, @root_path )
29
+
30
+ @query_path = 'query_sartre.html'
31
+ @query_file = File.join( @data_dir, @query_path )
29
32
  end
30
33
 
31
34
 
@@ -298,34 +301,101 @@ class TestPhilologicClient < Test::Unit::TestCase
298
301
 
299
302
  results = client.frequency('sartre')
300
303
 
301
- assert_nil results
302
- # assert_not_nil results
303
- # assert_kind_of Array, results
304
- # assert_equal 50, results.size
305
- # results.each do |result|
306
- # assert_kind_of Philologic::Link, result
307
- # assert_equal 'philologic_cite', result['class']
308
- # assert_not_nil result['href']
309
- # assert_nil result['some random attribute']
310
- # assert_not_nil result['author']
311
- # assert_nil result['filename']
312
- # assert_not_nil result['title']
313
- # assert_raise(NoMethodError) { result.text }
314
- # end
315
-
316
- # assert_equal './54/1/0/0', results.first['href']
317
- # assert_equal 'Peiresc N. de', results.first['author']
318
- # assert_equal 'Lettres T. 6 1602-1637', results.first['title']
319
- # assert_nil results.first['filename']
320
- # assert_raise(NoMethodError) { results.first.text }
321
- # assert_equal './54/1/0/0 | Lettres T. 6 1602-1637 | Peiresc N. de', results.first.to_s
322
-
323
- # assert_equal './1792/11/0/0', results.last['href']
324
- # assert_equal 'Gide A.', results.last['author']
325
- # assert_equal 'Journal 1939-1949', results.last['title']
326
- # assert_nil results.last['filename']
327
- # assert_raise(NoMethodError) { results.last.text }
328
- # assert_equal './1792/11/0/0 | Journal 1939-1949 | Gide A.', results.last.to_s
304
+ assert_not_nil results
305
+ assert_kind_of Array, results
306
+ assert_equal 15, results.size
307
+ results.each do |result|
308
+ assert_kind_of Philologic::Key, result
309
+ assert_nil result['class']
310
+ assert_not_nil result['href']
311
+ assert_nil result['some random attribute']
312
+ assert_nil result['author']
313
+ assert_nil result['filename']
314
+ assert_nil result['title']
315
+ assert_not_nil result.text
316
+ end
317
+
318
+ assert_equal './?query=sartre&author=Beauvoir+S.+de&title=', results.first['href']
319
+ assert_equal 'Beauvoir S. de', results.first.text
320
+ assert_equal './?query=sartre&author=Beauvoir+S.+de&title= | Beauvoir S. de', results.first.to_s
321
+
322
+ assert_equal './?query=sartre&author=Schaeffer+P.&title=', results.last['href']
323
+ assert_equal 'Schaeffer P.', results.last.text
324
+ assert_equal './?query=sartre&author=Schaeffer+P.&title= | Schaeffer P.', results.last.to_s
325
+ end
326
+ end
327
+
328
+ def test_frequency_search_with_key_value_pairs
329
+ Philologic::Client.new(@endpoint) do |client|
330
+ doc = client.send( :_parse, Nokogiri::HTML( open(@freq_file) ) )
331
+ client.stubs(:_get).with('?query=sartre&report=frequency').returns(doc)
332
+
333
+ results = client.frequency( :query => 'sartre' )
334
+
335
+ assert_not_nil results
336
+ assert_kind_of Array, results
337
+ assert_equal 15, results.size
338
+ results.each do |result|
339
+ assert_kind_of Philologic::Key, result
340
+ assert_nil result['class']
341
+ assert_not_nil result['href']
342
+ assert_nil result['some random attribute']
343
+ assert_nil result['author']
344
+ assert_nil result['filename']
345
+ assert_nil result['title']
346
+ assert_not_nil result.text
347
+ end
348
+
349
+ assert_equal './?query=sartre&author=Beauvoir+S.+de&title=', results.first['href']
350
+ assert_equal 'Beauvoir S. de', results.first.text
351
+ assert_equal './?query=sartre&author=Beauvoir+S.+de&title= | Beauvoir S. de', results.first.to_s
352
+
353
+ assert_equal './?query=sartre&author=Schaeffer+P.&title=', results.last['href']
354
+ assert_equal 'Schaeffer P.', results.last.text
355
+ assert_equal './?query=sartre&author=Schaeffer+P.&title= | Schaeffer P.', results.last.to_s
356
+ end
357
+ end
358
+
359
+ def test_philologic_key_links
360
+ Philologic::Client.new(@endpoint) do |client|
361
+ freq_doc = client.send( :_parse, Nokogiri::HTML( open(@freq_file) ) )
362
+ freq_links_doc = client.send( :_parse, Nokogiri::HTML( open(@freq_links_file) ) )
363
+ client.stubs(:_get).with('?query=sartre&report=frequency').returns(freq_doc)
364
+ client.stubs(:_get).with('?author=Beauvoir+S.+de&query=sartre&title=').returns(freq_links_doc)
365
+
366
+ results = client.frequency( :query => 'sartre' )
367
+ assert_not_nil results
368
+
369
+ links = results.first.links
370
+
371
+ assert_not_nil links
372
+ assert_kind_of Array, links
373
+ assert_equal 48, links.size
374
+
375
+ links.each do |link|
376
+ assert_kind_of Philologic::Link, link
377
+ assert_equal 'philologic_cite', link['class']
378
+ assert_not_nil link['href']
379
+ assert_nil link['some random attribute']
380
+ assert_not_nil link['author']
381
+ assert_nil link['filename']
382
+ assert_not_nil link['title']
383
+ assert_raise(NoMethodError) { link.text }
384
+ end
385
+
386
+ assert_equal './1839/3/0/0', links.first['href']
387
+ assert_equal 'Beauvoir S. de', links.first['author']
388
+ assert_equal 'Memoires Jeune Fille Rangee', links.first['title']
389
+ assert_nil links.first['filename']
390
+ assert_raise(NoMethodError) { links.first.text }
391
+ assert_equal './1839/3/0/0 | Memoires Jeune Fille Rangee | Beauvoir S. de', links.first.to_s
392
+
393
+ assert_equal './1839/4/0/0', links.last['href']
394
+ assert_equal 'Beauvoir S. de', links.last['author']
395
+ assert_equal 'Memoires Jeune Fille Rangee', links.last['title']
396
+ assert_nil links.last['filename']
397
+ assert_raise(NoMethodError) { links.last.text }
398
+ assert_equal './1839/4/0/0 | Memoires Jeune Fille Rangee | Beauvoir S. de', links.last.to_s
329
399
 
330
400
  end
331
401
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: philologic-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-09 00:00:00.000000000Z
12
+ date: 2012-01-10 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70176773639140 !ruby/object:Gem::Requirement
16
+ requirement: &70366750022700 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70176773639140
24
+ version_requirements: *70366750022700
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rdoc
27
- requirement: &70176773638700 !ruby/object:Gem::Requirement
27
+ requirement: &70366750022260 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70176773638700
35
+ version_requirements: *70366750022260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mocha
38
- requirement: &70176773638280 !ruby/object:Gem::Requirement
38
+ requirement: &70366750021840 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70176773638280
46
+ version_requirements: *70366750021840
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rdoc-readme
49
- requirement: &70176773637780 !ruby/object:Gem::Requirement
49
+ requirement: &70366750021340 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.1.2
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70176773637780
57
+ version_requirements: *70366750021340
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: simplecov
60
- requirement: &70176773637360 !ruby/object:Gem::Requirement
60
+ requirement: &70366750020920 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70176773637360
68
+ version_requirements: *70366750020920
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: nokogiri
71
- requirement: &70176773636900 !ruby/object:Gem::Requirement
71
+ requirement: &70366750020460 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70176773636900
79
+ version_requirements: *70366750020460
80
80
  description: Ruby client for interacting with the Philologic API.
81
81
  email:
82
82
  - blair.christensen@gmail.com
@@ -94,6 +94,7 @@ files:
94
94
  - lib/philologic-client/version.rb
95
95
  - philologic-client.gemspec
96
96
  - test/data/doc_file.html
97
+ - test/data/frequency_links.html
97
98
  - test/data/frequency_sartre.html
98
99
  - test/data/query_sartre.html
99
100
  - test/data/root_file.html
@@ -112,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
113
  version: '0'
113
114
  segments:
114
115
  - 0
115
- hash: -2183879243771319628
116
+ hash: -832477634477053375
116
117
  required_rubygems_version: !ruby/object:Gem::Requirement
117
118
  none: false
118
119
  requirements:
@@ -121,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
122
  version: '0'
122
123
  segments:
123
124
  - 0
124
- hash: -2183879243771319628
125
+ hash: -832477634477053375
125
126
  requirements: []
126
127
  rubyforge_project: philologic-client
127
128
  rubygems_version: 1.8.7
@@ -130,6 +131,7 @@ specification_version: 3
130
131
  summary: Ruby client for interacting with the Philologic API.
131
132
  test_files:
132
133
  - test/data/doc_file.html
134
+ - test/data/frequency_links.html
133
135
  - test/data/frequency_sartre.html
134
136
  - test/data/query_sartre.html
135
137
  - test/data/root_file.html