philologic-client 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY.rdoc CHANGED
@@ -1,5 +1,10 @@
1
1
  = Philologic::Client History
2
2
 
3
+ == 2011-12-30 v0.0.4
4
+
5
+ * Set +endpoint+ in +Philologic::Client+ initializer
6
+ * Add +search+ to +Philologic::Client+
7
+
3
8
  == 2011-12-29 v0.0.3
4
9
 
5
10
  * Documentation fix
data/README.rdoc CHANGED
@@ -4,8 +4,7 @@
4
4
 
5
5
  require 'philologic-client'
6
6
 
7
- Philologic::Client.new do |client|
8
- client.endpoint = 'http://philologic.example.org'
7
+ Philologic::Client.new(endpoint) do |client|
9
8
 
10
9
  # Get children of root
11
10
  client.children.each do |child|
@@ -17,6 +16,15 @@
17
16
  doc = client.document( first['href'] )
18
17
  txt = doc.text
19
18
 
19
+ # Search (currently only limited support)
20
+ client.search('sartre').each do |result|
21
+ puts [ child['href'], child['author'], child['title'] ].join("\t")
22
+ end
23
+
24
+ # Get/Set endpoint
25
+ endpoint = client.endpoint
26
+ client.endpoint = 'http://philologic.example.org'
27
+
20
28
  end
21
29
 
22
30
  == Author
@@ -34,11 +42,11 @@ https://github.com/blairc/philologic-client/
34
42
 
35
43
  == To Do
36
44
 
37
- * Set +endpoint+ in Philologic::Client initializer
38
- * Add +search+ to Philologic::Client
39
45
  * Add +document+ to Philologic::Link
40
46
  * Add +children+ to Philologic::Document
41
47
  * Add +parent+ to Philologic::Document
42
48
  * Make Nokogiri encoding configurable
49
+ * Expand search support
50
+ * Unifiy Philologic::Link and Philologic::Document
43
51
  * Build +RDoc+
44
52
 
data/Rakefile CHANGED
@@ -1,7 +1,11 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'rake/clean'
2
3
  require 'rake/testtask'
3
4
  require 'rdoc-readme/rake_task'
4
5
 
6
+ %w{ coverage doc out.txt pkg }.each { |p| CLEAN.include(p) }
7
+ %w{ build install test }.each { |t| task t.to_sym => [ 'rdoc:readme' ] }
8
+
5
9
  task :default => :test
6
10
 
7
11
  Rake::TestTask.new do |t|
@@ -10,6 +14,5 @@ Rake::TestTask.new do |t|
10
14
  t.verbose = true
11
15
  end
12
16
 
13
- # Pull in RDoc from source file and print to destination file.
14
17
  RDoc::Readme::RakeTask.new 'lib/philologic-client.rb', 'README.rdoc'
15
18
 
@@ -12,8 +12,7 @@ require 'open-uri'
12
12
  #
13
13
  # require 'philologic-client'
14
14
  #
15
- # Philologic::Client.new do |client|
16
- # client.endpoint = 'http://philologic.example.org'
15
+ # Philologic::Client.new(endpoint) do |client|
17
16
  #
18
17
  # # Get children of root
19
18
  # client.children.each do |child|
@@ -25,6 +24,15 @@ require 'open-uri'
25
24
  # doc = client.document( first['href'] )
26
25
  # txt = doc.text
27
26
  #
27
+ # # Search (currently only limited support)
28
+ # client.search('sartre').each do |result|
29
+ # puts [ child['href'], child['author'], child['title'] ].join("\t")
30
+ # end
31
+ #
32
+ # # Get/Set endpoint
33
+ # endpoint = client.endpoint
34
+ # client.endpoint = 'http://philologic.example.org'
35
+ #
28
36
  # end
29
37
  #
30
38
  # == Author
@@ -42,12 +50,12 @@ require 'open-uri'
42
50
  #
43
51
  # == To Do
44
52
  #
45
- # * Set +endpoint+ in Philologic::Client initializer
46
- # * Add +search+ to Philologic::Client
47
53
  # * Add +document+ to Philologic::Link
48
54
  # * Add +children+ to Philologic::Document
49
55
  # * Add +parent+ to Philologic::Document
50
56
  # * Make Nokogiri encoding configurable
57
+ # * Expand search support
58
+ # * Unifiy Philologic::Link and Philologic::Document
51
59
  # * Build +RDoc+
52
60
  #
53
61
  module Philologic
@@ -66,8 +74,11 @@ module Philologic
66
74
  #
67
75
  # Initialize Philologic::Client
68
76
  #
69
- def initialize
70
- @endpoint = nil
77
+ # Params:
78
+ # +endpoint+:: Philologic endpoint (defaults to +nil+)
79
+ #
80
+ def initialize( endpoint = nil )
81
+ @endpoint = endpoint
71
82
  yield self if block_given?
72
83
  self
73
84
  end
@@ -94,6 +105,27 @@ module Philologic
94
105
  return doc.kind_of?(::Philologic::Document) ? doc : nil
95
106
  end
96
107
 
108
+ #
109
+ # Return +Array+ of Philologic::Link objects.
110
+ #
111
+ # *NOTE:* Currently only returns the first page of results.
112
+ #
113
+ # Params:
114
+ # +query+:: Search for this query string.
115
+ #
116
+ def search(query)
117
+ raise('no query specified') if query.nil?
118
+ doc = _query(query)
119
+ return doc.kind_of?(Array) ? doc : nil
120
+ end
121
+
122
+ private
123
+
124
+ def _build_query(query)
125
+ raise('no query specified') if query.nil?
126
+ "?query=#{query}"
127
+ end
128
+
97
129
  def _get(path)
98
130
  raise('no endpoint specified') if @endpoint.nil?
99
131
  uri = "#{ @endpoint }#{ @endpoint =~ /\/$/ || '/' }#{ path }"
@@ -107,12 +139,22 @@ module Philologic
107
139
  children << Philologic::Link.new(cite) # TODO Why not a select?
108
140
  end
109
141
  return children
142
+ elsif !doc.css('div.philologic_concordance').first.nil?
143
+ results = []
144
+ doc.css('div.philologic_concordance').css('a.philologic_cite').each do |cite|
145
+ results << Philologic::Link.new(cite) # TODO Why not a select?
146
+ end
147
+ return results
110
148
  elsif !doc.css('div.philologic_object').first.nil?
111
149
  return Philologic::Document.new( doc.css('div.philologic_object').first )
112
150
  end
113
151
  nil
114
152
  end
115
153
 
154
+ def _query(query)
155
+ return _get( _build_query(query) )
156
+ end
157
+
116
158
  end # class Philologic::Client
117
159
 
118
160
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Philologic
4
4
  class Client
5
- VERSION = '0.0.3'
5
+ VERSION = '0.0.4'
6
6
  end
7
7
  end
@@ -0,0 +1,151 @@
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 - 50 of 151 hits.</p><ol start='1'><li class='philologic_occurence'>
2
+ <a class='philologic_cite' href='./54/1/0/0'><span class='philologic_property' title='author'>Peiresc N. de</span>, <span class='philologic_property' title='title'>Lettres T. 6 1602-1637</span> <span class='philologic_property' title='date'>(1625)</span></a>
3
+ ...re pas l'adresse directement à nous ny à voz lettres ny au pacquet, mais à Monsieur <span class="hilite">Sartre</span> respondent de Monsr Segnier qui nous les rendra gentilment. Car je...</li>
4
+ <li class='philologic_occurence'>
5
+ <a class='philologic_cite' href='./54/1/0/0'><span class='philologic_property' title='author'>Peiresc N. de</span>, <span class='philologic_property' title='title'>Lettres T. 6 1602-1637</span> <span class='philologic_property' title='date'>(1625)</span></a>
6
+ ...l vous plairra m'escrire en ceste ville seront avec une couverture par dessus à Monsr <span class="hilite">Sartre</span> pres la loge. Je ne vous escris plus de l'heureux succez de nostre voyaige, car par ...</li>
7
+ <li class='philologic_occurence'>
8
+ <a class='philologic_cite' href='./54/1/0/0'><span class='philologic_property' title='author'>Peiresc N. de</span>, <span class='philologic_property' title='title'>Lettres T. 6 1602-1637</span> <span class='philologic_property' title='date'>(1625)</span></a>
9
+ ...croistre les pencions d'un escu le moys pour chascun. J'attends le retour de Monsr <span class="hilite">Sartre</span> parce que s'il a payé * 27 (...) écus à Lyon pour Monsr Pacius...</li>
10
+ <li class='philologic_occurence'>
11
+ <a class='philologic_cite' href='./54/1/0/0'><span class='philologic_property' title='author'>Peiresc N. de</span>, <span class='philologic_property' title='title'>Lettres T. 6 1602-1637</span> <span class='philologic_property' title='date'>(1625)</span></a>
12
+ ...squ'il vous plaist nous permettre de continuer nostre lecture textuelle, je prierai Mr <span class="hilite">Sartre</span> de nous fournir nostre pencion pour tout le quartier qu'avons à demeurer en ceste ville...</li>
13
+ <li class='philologic_occurence'>
14
+ <a class='philologic_cite' href='./1685/1/0/0'><span class='philologic_property' title='author'>Nizan P.</span>, <span class='philologic_property' title='title'>La Conspiration</span> <span class='philologic_property' title='date'>(1938)</span></a>
15
+ ...Il n'y avait aucune chance de voir arriver l'adjudant Giudici ou le chef de bataillon <span class="hilite">Sartre</span>. L'armoire était à demi pleine de dossiers dont la chemise portait, écrit en...</li>
16
+ <li class='philologic_occurence'>
17
+ <a class='philologic_cite' href='./1685/1/0/0'><span class='philologic_property' title='author'>Nizan P.</span>, <span class='philologic_property' title='title'>La Conspiration</span> <span class='philologic_property' title='date'>(1938)</span></a>
18
+ ...ui avait oublié de s'enfermer repoussa sa chaise et se mit au garde à vous. Le commandant <span class="hilite">Sartre</span> qui avait oublié ses gants au bureau le matin venait d'entrer. Simon avait...</li>
19
+ <li class='philologic_occurence'>
20
+ <a class='philologic_cite' href='./1685/1/0/0'><span class='philologic_property' title='author'>Nizan P.</span>, <span class='philologic_property' title='title'>La Conspiration</span> <span class='philologic_property' title='date'>(1938)</span></a>
21
+ ...toutes les hypothèses! Simon qui venait de surprendre le regard que le commandant <span class="hilite">Sartre</span> avait échangé avec le colonel, se dit que c'était gagné. Cette explication qui e...</li>
22
+ <li class='philologic_occurence'>
23
+ <a class='philologic_cite' href='./1688/0/0/0/0/0/0/3/168'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>La Nausee</span> <span class='philologic_property' title='date'>(1938)</span></a>
24
+ ... La Nausee <span class="hilite">Sartre</span> J.-P. ARTFL Project, University of Chicago...</li>
25
+ <li class='philologic_occurence'>
26
+ <a class='philologic_cite' href='./1688/0/0/0/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>La Nausee</span> <span class='philologic_property' title='date'>(1938)</span></a>
27
+ ...usee La nausée: roman <span class="hilite">Sartre</span> J.-P. Sartre, Jean Paul, 1905-1980. ...</li>
28
+ <li class='philologic_occurence'>
29
+ <a class='philologic_cite' href='./1688/0/0/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>La Nausee</span> <span class='philologic_property' title='date'>(1938)</span></a>
30
+ ...} Sartre, Jean Paul, $d 1905- {245} La nausée $h [computer file] : $b roman / $c Jean-Paul <span class="hilite">Sartre</span>. {534} $p Electronic text of: $a Sartre, Jean Paul, 1905- $t La nausée. $c Paris : G...</li>
31
+ <li class='philologic_occurence'>
32
+ <a class='philologic_cite' href='./1736/0/0/0/0/0/0/3/170'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>Les Mouches</span> <span class='philologic_property' title='date'>(1943)</span></a>
33
+ ... Les Mouches <span class="hilite">Sartre</span> J.-P. ARTFL Project, University of Chicago...</li>
34
+ <li class='philologic_occurence'>
35
+ <a class='philologic_cite' href='./1736/0/0/0/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>Les Mouches</span> <span class='philologic_property' title='date'>(1943)</span></a>
36
+ ...es Mouches Les mouches <span class="hilite">Sartre</span> J.-P. Sartre, Jean Paul, 1905-1980. ...</li>
37
+ <li class='philologic_occurence'>
38
+ <a class='philologic_cite' href='./1736/0/0/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>Les Mouches</span> <span class='philologic_property' title='date'>(1943)</span></a>
39
+ ... {100} Sartre, Jean Paul, $d 1905- {245} Les mouches $h [computer file] / $c J.-P. <span class="hilite">Sartre</span>. {534} $p Electronic text of: $a Sartre, Jean Paul, 1905- $t Les mouches. $n In: Thé...</li>
40
+ <li class='philologic_occurence'>
41
+ <a class='philologic_cite' href='./1748/0/0/0/0/0/0/2/168'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>Huis-Clos</span> <span class='philologic_property' title='date'>(1944)</span></a>
42
+ ... Huis-Clos <span class="hilite">Sartre</span> J.-P. ARTFL Project, University of Chicago...</li>
43
+ <li class='philologic_occurence'>
44
+ <a class='philologic_cite' href='./1748/0/0/0/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>Huis-Clos</span> <span class='philologic_property' title='date'>(1944)</span></a>
45
+ ...Huis-Clos Huis-clos <span class="hilite">Sartre</span> J.-P. Sartre, Jean Paul, 1905-1980. ...</li>
46
+ <li class='philologic_occurence'>
47
+ <a class='philologic_cite' href='./1748/0/0/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>Huis-Clos</span> <span class='philologic_property' title='date'>(1944)</span></a>
48
+ ...81 {100} Sartre, Jean Paul, $d 1905- {245} Huis-clos $h [computer file] / $c J.-P. <span class="hilite">Sartre</span>. {534} $p Electronic text of: $a Sartre, Jean Paul, 1905- $t Huis-clos. $n In: Théâ...</li>
49
+ <li class='philologic_occurence'>
50
+ <a class='philologic_cite' href='./1750/1/0/0'><span class='philologic_property' title='author'>Benda J.</span>, <span class='philologic_property' title='title'>La France Byzantine</span> <span class='philologic_property' title='date'>(1945)</span></a>
51
+ ...e de maints littérateurs modernes est celle d'un philosophe (J. - P. <span class="hilite">Sartre</span>, l'imaginaire ), selon qui le propre de l'image, singulièrement en art, est de s...</li>
52
+ <li class='philologic_occurence'>
53
+ <a class='philologic_cite' href='./1750/1/0/0'><span class='philologic_property' title='author'>Benda J.</span>, <span class='philologic_property' title='title'>La France Byzantine</span> <span class='philologic_property' title='date'>(1945)</span></a>
54
+ .... Valéry, J. Paulhan, J. - P. <span class="hilite">Sartre</span>; longues pages de Proust sur l'emploi de l'imparfait, du verbe avoir, d...</li>
55
+ <li class='philologic_occurence'>
56
+ <a class='philologic_cite' href='./1756/46/0/0'><span class='philologic_property' title='author'>Mauriac F.</span>, <span class='philologic_property' title='title'>Le Baillon Denoue</span> <span class='philologic_property' title='date'>(1945)</span></a>
57
+ ...attaient pas au grand jour, comme des soldats, écrit admirablement Jean-Paul <span class="hilite">Sartre</span>. En toute circonstance ils étaient seuls, ils étaient traqués dans la solitude, a...</li>
58
+ <li class='philologic_occurence'>
59
+ <a class='philologic_cite' href='./1758/4/0/0'><span class='philologic_property' title='author'>Merleau-Ponty M.</span>, <span class='philologic_property' title='title'>Phenomenologie Perception</span> <span class='philologic_property' title='date'>(1945)</span></a>
60
+ ...nsforma et, une seconde, je perçus une ampoule de caoutchouc... etc. J P <span class="hilite">Sartre</span>. Plus tard, se fit un autre changement... tout me parut pâteux et écaillé à la f...</li>
61
+ <li class='philologic_occurence'>
62
+ <a class='philologic_cite' href='./1758/5/0/0'><span class='philologic_property' title='author'>Merleau-Ponty M.</span>, <span class='philologic_property' title='title'>Phenomenologie Perception</span> <span class='philologic_property' title='date'>(1945)</span></a>
63
+ ...és ou des réalités qui tendent à persévérer dans l'être. Comme J-P <span class="hilite">Sartre</span> le fait observer lui-même, le rêve exclut la liberté parce que, dans l'imaginaire, à...</li>
64
+ <li class='philologic_occurence'>
65
+ <a class='philologic_cite' href='./1768/4/0/0'><span class='philologic_property' title='author'>Mounier E.</span>, <span class='philologic_property' title='title'>Traite du Caractere</span> <span class='philologic_property' title='date'>(1946)</span></a>
66
+ ...e Lautréamont à Éluard, et tels personnages de Jean-Paul <span class="hilite">Sartre</span>. L'opposition haut-bas exprime le mouvement ascendant et la chute de l'...</li>
67
+ <li class='philologic_occurence'>
68
+ <a class='philologic_cite' href='./1768/5/0/0'><span class='philologic_property' title='author'>Mounier E.</span>, <span class='philologic_property' title='title'>Traite du Caractere</span> <span class='philologic_property' title='date'>(1946)</span></a>
69
+ ...parmi les choses, homme parmi les hommes." Ces lignes de J. - P. <span class="hilite">Sartre</span> sont de 1939. Quelle distance parcourue depuis le lyrisme de la sincérité avec soi...</li>
70
+ <li class='philologic_occurence'>
71
+ <a class='philologic_cite' href='./1768/5/0/0'><span class='philologic_property' title='author'>Mounier E.</span>, <span class='philologic_property' title='title'>Traite du Caractere</span> <span class='philologic_property' title='date'>(1946)</span></a>
72
+ ...au plus des "apparitions latérales irréelles, corrélatives d'une conscience impersonnelle " (<span class="hilite">Sartre</span>). Le sommeil se défait au moment même où, par l'évocation d'une perception réel...</li>
73
+ <li class='philologic_occurence'>
74
+ <a class='philologic_cite' href='./1770/0/0/0/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
75
+ ... L'Existent. Est Un Humanisme <span class="hilite">Sartre</span> J.-P. ARTFL Project, University of Chicago...</li>
76
+ <li class='philologic_occurence'>
77
+ <a class='philologic_cite' href='./1770/0/0/0/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
78
+ ... L'existentialisme est un humanisme <span class="hilite">Sartre</span> J.-P. Sartre, Jean Paul, 1905-1980. ...</li>
79
+ <li class='philologic_occurence'>
80
+ <a class='philologic_cite' href='./1770/0/0/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
81
+ ... Paul, $d 1905- {245} L'éxistentialisme est un humanisme $h [computer file] / $c Jean-Paul <span class="hilite">Sartre</span>. {534} $p Electronic text of: $a Sartre, Jean Paul, 1905- $t L'éxistentialisme est u...</li>
82
+ <li class='philologic_occurence'>
83
+ <a class='philologic_cite' href='./1770/1/1/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
84
+ ... l'angoisse et le désespoir ne se produisent pas couramment. M. <span class="hilite">Sartre</span>: je ne veux évidemment pas dire que, quand je choisis entre un millefeuille et un écla...</li>
85
+ <li class='philologic_occurence'>
86
+ <a class='philologic_cite' href='./1770/1/1/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
87
+ ... et il me semble que votre point de vue s'y était un peu affaibli. M. <span class="hilite">Sartre</span>: en toute sincérité, il est possible que dans action mes thèses aient été u...</li>
88
+ <li class='philologic_occurence'>
89
+ <a class='philologic_cite' href='./1770/1/1/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
90
+ ...rendront pas. M. <span class="hilite">Sartre</span>: vous semblez concevoir le rôle de la philosophie dans la cité d'une manière qui se t...</li>
91
+ <li class='philologic_occurence'>
92
+ <a class='philologic_cite' href='./1770/1/1/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
93
+ ...choix original de Marx est d'abord un choix révolutionnaire. M. <span class="hilite">Sartre</span>: bien malin celui qui pourra dire s'il s'est choisi d'abord révolutionnaire et ensuite ...</li>
94
+ <li class='philologic_occurence'>
95
+ <a class='philologic_cite' href='./1770/1/1/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
96
+ ... de Marx. M. <span class="hilite">Sartre</span>: il s'agit d'une morale de la liberté. S'il n'y a pas de contradiction entre cette ...</li>
97
+ <li class='philologic_occurence'>
98
+ <a class='philologic_cite' href='./1770/1/1/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
99
+ ...Au nom de la liberté? Mais, si c'est une philosophie orientée dans la sens indiqué par <span class="hilite">Sartre</span>, elle doit donner des directives, elle doit, en 1945, dire s'il faut adhérer à l'u. ...</li>
100
+ <li class='philologic_occurence'>
101
+ <a class='philologic_cite' href='./1770/1/1/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
102
+ ...le doit dire s'il est pour le parti ouvrier ou le parti du petit bourgeois. M. <span class="hilite">Sartre</span>: il est assez difficile de vous répondre complètement, parce que vous avez dit beaucou...</li>
103
+ <li class='philologic_occurence'>
104
+ <a class='philologic_cite' href='./1770/1/1/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
105
+ ...ferait-on pour analyser rétrospectivement? On n'y arriverait pas. M. <span class="hilite">Sartre</span>: jamais nous n'avons pensé qu'il n'y avait pas à analyser des conditions humaines ni d...</li>
106
+ <li class='philologic_occurence'>
107
+ <a class='philologic_cite' href='./1770/1/1/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
108
+ ...ations de type causal, y compris la causalité des types statistiques. M. <span class="hilite">Sartre</span>: vous me parlez de causalité d'ordre statistique. Cela ne veut rien dire. Voule...</li>
109
+ <li class='philologic_occurence'>
110
+ <a class='philologic_cite' href='./1770/1/1/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
111
+ ...pendant, vous admettrez que ces sciences utilisent la notion de causalité? M. <span class="hilite">Sartre</span>: absolument pas. Les sciences ...</li>
112
+ <li class='philologic_occurence'>
113
+ <a class='philologic_cite' href='./1770/1/1/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
114
+ ...onguement développé, celui du jeune homme qui est venu vous trouver. M. <span class="hilite">Sartre</span>: n'était-il pas sur le plan de la liberté? M. Naville: ...</li>
115
+ <li class='philologic_occurence'>
116
+ <a class='philologic_cite' href='./1770/1/1/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>L'Existent. Est Un Humanisme</span> <span class='philologic_property' title='date'>(1946)</span></a>
117
+ ..., mais très certainement, je l'aurais engagé à faire quelque chose. M. <span class="hilite">Sartre</span>: s'il vient vous demander conseil, c'est qu'il a déjà choisi la réponse. Pratique...</li>
118
+ <li class='philologic_occurence'>
119
+ <a class='philologic_cite' href='./1786/0/0/0/0/0/0/4/174'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>Les Mains Sales</span> <span class='philologic_property' title='date'>(1948)</span></a>
120
+ ... Les Mains Sales <span class="hilite">Sartre</span> J.-P. ARTFL Project, University of Chicago...</li>
121
+ <li class='philologic_occurence'>
122
+ <a class='philologic_cite' href='./1786/0/0/0/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>Les Mains Sales</span> <span class='philologic_property' title='date'>(1948)</span></a>
123
+ ...Les mains sales: pièce en sept tableaux <span class="hilite">Sartre</span> J.-P. Sartre, Jean Paul, 1905-1980. ...</li>
124
+ <li class='philologic_occurence'>
125
+ <a class='philologic_cite' href='./1786/0/0/0'><span class='philologic_property' title='author'>Sartre J.-P.</span>, <span class='philologic_property' title='title'>Les Mains Sales</span> <span class='philologic_property' title='date'>(1948)</span></a>
126
+ ... 1905- {245} Les mains sales $h [computer file] : $b pièce en sept tableaux / $c Jean-Paul <span class="hilite">Sartre</span>. {534} $p Electronic text of: $a Sartre, Jean Paul, 1905- $t Les mains sales. $c Pari...</li>
127
+ <li class='philologic_occurence'>
128
+ <a class='philologic_cite' href='./1792/4/0/0'><span class='philologic_property' title='author'>Gide A.</span>, <span class='philologic_property' title='title'>Journal 1939-1949</span> <span class='philologic_property' title='date'>(1949)</span></a>
129
+ ...ssitôt me mettre au travail. J'apprends avec un vif plaisir qu'il est intimement lié avec <span class="hilite">Sartre</span>. Près d'eux, par sympathie violente, je sens rajeunir mes espoirs. ...</li>
130
+ <li class='philologic_occurence'>
131
+ <a class='philologic_cite' href='./1792/6/0/0'><span class='philologic_property' title='author'>Gide A.</span>, <span class='philologic_property' title='title'>Journal 1939-1949</span> <span class='philologic_property' title='date'>(1949)</span></a>
132
+ ...de bello gallico de César. Après le remarquable mur de <span class="hilite">Sartre</span> (dont, du reste, je me souvenais fort bien et que l'on ne saurait oublier), je relis ...</li>
133
+ <li class='philologic_occurence'>
134
+ <a class='philologic_cite' href='./1792/8/0/0'><span class='philologic_property' title='author'>Gide A.</span>, <span class='philologic_property' title='title'>Journal 1939-1949</span> <span class='philologic_property' title='date'>(1949)</span></a>
135
+ ... de moi, qui passa d'abord inaperçue, et que, devant le raffut que l'on fait aujourd'hui (dont <span class="hilite">Sartre</span> n'est pas uniquement responsable) à propos de certaines déclarations et manifestations...</li>
136
+ <li class='philologic_occurence'>
137
+ <a class='philologic_cite' href='./1792/8/0/0'><span class='philologic_property' title='author'>Gide A.</span>, <span class='philologic_property' title='title'>Journal 1939-1949</span> <span class='philologic_property' title='date'>(1949)</span></a>
138
+ ...n'ai point trouvé de nouveaux maîtres, et je reste pantelant. L'effrayante absurdité des <span class="hilite">Sartre</span> et des Camus n'a rien résolu et n'ouvre que des horizons de suicide. ...</li>
139
+ <li class='philologic_occurence'>
140
+ <a class='philologic_cite' href='./1792/9/0/0'><span class='philologic_property' title='author'>Gide A.</span>, <span class='philologic_property' title='title'>Journal 1939-1949</span> <span class='philologic_property' title='date'>(1949)</span></a>
141
+ ... Passeur. Trop tôt pour en parler... je tiens la putain respectueuse de <span class="hilite">Sartre</span> pour une manière de chef-d'oeuvre. Je n'aimais pas du tout ses deux derniers longs ...</li>
142
+ <li class='philologic_occurence'>
143
+ <a class='philologic_cite' href='./1792/9/0/0'><span class='philologic_property' title='author'>Gide A.</span>, <span class='philologic_property' title='title'>Journal 1939-1949</span> <span class='philologic_property' title='date'>(1949)</span></a>
144
+ ...Je ne reconnais aucun des propos qu'il me prête, sur ce dernier, sur les existentialistes et <span class="hilite">Sartre</span>." FEUILLETS D'AUTOMNE Neuch..</li>
145
+ <li class='philologic_occurence'>
146
+ <a class='philologic_cite' href='./1792/11/0/0'><span class='philologic_property' title='author'>Gide A.</span>, <span class='philologic_property' title='title'>Journal 1939-1949</span> <span class='philologic_property' title='date'>(1949)</span></a>
147
+ ...viens d'en relire six d'affilée. Et les réflexions sur la question juive, de <span class="hilite">Sartre</span>. Somme toute un peu déçu, après le (peut-être trop) grand bien que m'en avait di...</li>
148
+ <li class='philologic_occurence'>
149
+ <a class='philologic_cite' href='./1792/11/0/0'><span class='philologic_property' title='author'>Gide A.</span>, <span class='philologic_property' title='title'>Journal 1939-1949</span> <span class='philologic_property' title='date'>(1949)</span></a>
150
+ ...er les nationalistes) et pour le plus grand honneur de notre pays. J'en reviens au livre de <span class="hilite">Sartre</span>. Si justes que me paraissent certaines de ses plus importantes assertions (par exemp...</li>
151
+ </ol><div class='more'><a href='./?query=sartre&q_start=1&q_end=50'>1-50</a> <a href='./?query=sartre&q_start=51&q_end=100'>51-100</a> <a href='./?query=sartre&q_start=101&q_end=150'>101-150</a> <a href='./?query=sartre&q_start=151&q_end=151'>151-151</a> </div></div></body></html>
@@ -18,6 +18,8 @@ class TestPhilologicClient < Test::Unit::TestCase
18
18
  @endpoint = @data_dir
19
19
  @root_path = 'root_file.html'
20
20
  @root_file = File.join( @data_dir, @root_path )
21
+ @query_path = 'query_sartre.html'
22
+ @query_file = File.join( @data_dir, @query_path )
21
23
  end
22
24
 
23
25
 
@@ -33,6 +35,21 @@ class TestPhilologicClient < Test::Unit::TestCase
33
35
  assert_kind_of Philologic::Client, Philologic::Client.new
34
36
  end
35
37
 
38
+ def test_initialization_with_endpoint
39
+ blockable = false
40
+ client = Philologic::Client.new(@endpoint) do |client|
41
+ assert_kind_of Philologic::Client, client
42
+ blockable = true
43
+ assert_not_nil client.endpoint
44
+ assert_equal @endpoint, client.endpoint
45
+ end
46
+ assert blockable, 'works as block'
47
+ assert_kind_of Philologic::Client, client
48
+ assert_kind_of Philologic::Client, Philologic::Client.new
49
+ assert_not_nil client.endpoint
50
+ assert_equal @endpoint, client.endpoint
51
+ end
52
+
36
53
  def test_endpoint_accessor
37
54
  Philologic::Client.new do |client|
38
55
  assert_nil client.endpoint, 'defaults to nil'
@@ -128,5 +145,72 @@ class TestPhilologicClient < Test::Unit::TestCase
128
145
  end
129
146
  end
130
147
 
148
+ def test_nil_search
149
+ Philologic::Client.new(@endpoint) do |client|
150
+ assert_raise(RuntimeError, 'no query specified') { client.search(nil) }
151
+ end
152
+ end
153
+
154
+ def test_underscore_query
155
+ Philologic::Client.new(@endpoint) do |client|
156
+ doc = client.send( :_parse, Nokogiri::HTML( open(@query_file) ) )
157
+ q = 'sartre'
158
+ qs = "?query=#{q}"
159
+ client.stubs(:_get).with(qs).returns(doc)
160
+ assert_equal doc, client.send(:_query, q)
161
+ end
162
+ end
163
+
164
+ def test_underscore_build_query_with_nil_query
165
+ Philologic::Client.new(@endpoint) do |client|
166
+ assert_raise(RuntimeError, 'no query specified') { client.send(:_build_query, nil) }
167
+ end
168
+ end
169
+
170
+ def test_underscore_build_query
171
+ Philologic::Client.new(@endpoint) do |client|
172
+ q = 'sartre'
173
+ qs = "?query=#{q}"
174
+ assert_equal qs, client.send(:_build_query, q)
175
+ end
176
+ end
177
+
178
+ def test_search
179
+ Philologic::Client.new(@endpoint) do |client|
180
+ doc = client.send( :_parse, Nokogiri::HTML( open(@query_file) ) )
181
+ q = 'sartre'
182
+ qs = "?query=#{q}"
183
+ client.stubs(:_get).with(qs).returns(doc)
184
+
185
+ results = client.search(q)
186
+
187
+ assert_not_nil results
188
+ assert_kind_of Array, results
189
+ assert_equal 50, results.size
190
+ results.each do |result|
191
+ assert_kind_of Philologic::Link, result
192
+ assert_equal 'philologic_cite', result['class']
193
+ assert_not_nil result['href']
194
+ assert_nil result['some random attribute']
195
+ assert_not_nil result['author']
196
+ assert_nil result['filename']
197
+ assert_not_nil result['title']
198
+ assert_raise(NoMethodError) { result.text }
199
+ end
200
+
201
+ assert_equal './54/1/0/0', results.first['href']
202
+ assert_equal 'Peiresc N. de', results.first['author']
203
+ assert_equal 'Lettres T. 6 1602-1637', results.first['title']
204
+ assert_nil results.first['filename']
205
+ assert_raise(NoMethodError) { results.first.text }
206
+
207
+ assert_equal './1792/11/0/0', results.last['href']
208
+ assert_equal 'Gide A.', results.last['author']
209
+ assert_equal 'Journal 1939-1949', results.last['title']
210
+ assert_nil results.last['filename']
211
+ assert_raise(NoMethodError) { results.last.text }
212
+
213
+ end
214
+ end
131
215
  end
132
216
 
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.3
4
+ version: 0.0.4
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: 2011-12-29 00:00:00.000000000Z
12
+ date: 2011-12-30 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70261266335820 !ruby/object:Gem::Requirement
16
+ requirement: &70149535209220 !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: *70261266335820
24
+ version_requirements: *70149535209220
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mocha
27
- requirement: &70261266335380 !ruby/object:Gem::Requirement
27
+ requirement: &70149535208780 !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: *70261266335380
35
+ version_requirements: *70149535208780
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rdoc-readme
38
- requirement: &70261266334960 !ruby/object:Gem::Requirement
38
+ requirement: &70149535208360 !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: *70261266334960
46
+ version_requirements: *70149535208360
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: simplecov
49
- requirement: &70261266334540 !ruby/object:Gem::Requirement
49
+ requirement: &70149535207940 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70261266334540
57
+ version_requirements: *70149535207940
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: nokogiri
60
- requirement: &70261266334120 !ruby/object:Gem::Requirement
60
+ requirement: &70149535207520 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70261266334120
68
+ version_requirements: *70149535207520
69
69
  description: Ruby client for interacting with the Philologic API.
70
70
  email:
71
71
  - blair.christensen@gmail.com
@@ -82,6 +82,7 @@ files:
82
82
  - lib/philologic-client/version.rb
83
83
  - philologic-client.gemspec
84
84
  - test/data/doc_file.html
85
+ - test/data/query_sartre.html
85
86
  - test/data/root_file.html
86
87
  - test/test_philologic_client.rb
87
88
  homepage: https://github.com/blairc/philologic-client/
@@ -98,7 +99,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
99
  version: '0'
99
100
  segments:
100
101
  - 0
101
- hash: -1767685141629153618
102
+ hash: -2190975545106679734
102
103
  required_rubygems_version: !ruby/object:Gem::Requirement
103
104
  none: false
104
105
  requirements:
@@ -107,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
108
  version: '0'
108
109
  segments:
109
110
  - 0
110
- hash: -1767685141629153618
111
+ hash: -2190975545106679734
111
112
  requirements: []
112
113
  rubyforge_project: philologic-client
113
114
  rubygems_version: 1.8.7
@@ -116,5 +117,6 @@ specification_version: 3
116
117
  summary: Ruby client for interacting with the Philologic API.
117
118
  test_files:
118
119
  - test/data/doc_file.html
120
+ - test/data/query_sartre.html
119
121
  - test/data/root_file.html
120
122
  - test/test_philologic_client.rb