leander 0.2 → 0.3

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.
@@ -4,8 +4,9 @@ require 'optparse'
4
4
  require 'optparse/time'
5
5
  require 'ostruct'
6
6
 
7
- require 'webpage.rb'
8
- require 'index.rb'
7
+ require 'leander/webpage.rb'
8
+ require 'leander/index.rb'
9
+
9
10
 
10
11
  class Bookmarker
11
12
  attr_accessor :index, :options
@@ -15,11 +16,15 @@ class Bookmarker
15
16
  @options = options
16
17
  end
17
18
 
18
- def operate(query)
19
+ def operate query
19
20
  if @options.delete
20
- @index.leander_remove(query)
21
+ @index.leander_remove query
21
22
  else
22
- @index.search(query, @options.show_html, @options.hide_url)
23
+ results = @index.search query
24
+ results.each do |r|
25
+ puts "#{r[:url].chomp} \t: #{r[:title]}" unless @options.hide_url
26
+ puts "#{r[:doc]}" if @options.show_html
27
+ end
23
28
  end
24
29
  end
25
30
 
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/ruby
2
+ require 'leander/leander-server.rb'
3
+
4
+
5
+ LeanderServer.run!
@@ -1,7 +1,7 @@
1
1
  require 'ferret'
2
2
  require 'highline/import'
3
3
 
4
- require 'webpage.rb'
4
+ require 'leander/webpage.rb'
5
5
 
6
6
  include Ferret
7
7
 
@@ -26,12 +26,17 @@ class BmIndex
26
26
  end
27
27
  end
28
28
 
29
- def search(query, show_html = false, hide_url = false)
29
+ def search(query)
30
+ output = []
30
31
  @index.search_each(query) do |id, score|
31
- doc = Nokogiri::HTML.parse(@index[id][:doc])
32
- puts @index[id][:url] + "\t" + doc.css('title').inner_text.strip unless hide_url
33
-
34
- if show_html then puts @index[id][:doc] end
32
+ doc = Nokogiri::HTML.parse(@index[id][:doc])
33
+ tmp = {}
34
+ tmp[:url] = index[id][:url]
35
+ tmp[:title] = doc.css('title').inner_text.strip
36
+ tmp[:doc] = doc
37
+ output << tmp
35
38
  end
39
+
40
+ return output
36
41
  end
37
42
  end
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'sinatra/base'
4
+ require 'haml'
5
+ require 'json'
6
+
7
+ require 'leander/index.rb'
8
+ require 'leander/webpage.rb'
9
+
10
+ class LeanderServer < Sinatra::Base
11
+
12
+ set :root, File.dirname(__FILE__)
13
+
14
+ helpers do
15
+ def niceify(url, title)
16
+ " <p>#{title}</p><a href=\"#{url}\">#{url}</a>"
17
+ end
18
+ end
19
+
20
+ get '/write/*' do
21
+ index = BmIndex.new
22
+ index.store_webpage Webpage.new params[:splat][0]
23
+ end
24
+
25
+
26
+ get '/search/:query' do
27
+ index = BmIndex.new
28
+ @search_results = index.search params[:query]
29
+ haml :search, :locals => {:result => @search_results }
30
+ end
31
+
32
+ get '/api/search/:query' do
33
+ content_type :json
34
+ index = BmIndex.new
35
+ @search_results = index.search params[:query].first
36
+ @search_results.map! { |r| {:url => r[:url], :title => r[:title]} }.flatten
37
+
38
+ output = {}
39
+ @search_results.each_with_index do |r, n|
40
+ output[n] = {:result => r}
41
+ end
42
+ output.to_json
43
+ end
44
+
45
+
46
+ get '/' do
47
+ haml '%div.title Hello world'
48
+ BmIndex.new
49
+ end
50
+
51
+ end
@@ -0,0 +1 @@
1
+ %p.results= result.map { |r| niceify(r[:url], r[:title]) }.join " "
@@ -1,3 +1,4 @@
1
+ require 'rubygems'
1
2
  require 'open-uri'
2
3
  require 'nokogiri'
3
4
 
@@ -9,9 +10,6 @@ class Webpage
9
10
  end
10
11
 
11
12
  def get_title
12
- puts @doc.class
13
- exit
14
13
  return @doc.css('title').content
15
14
  end
16
-
17
15
  end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leander
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.2"
4
+ hash: 13
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 3
9
+ version: "0.3"
5
10
  platform: ruby
6
11
  authors:
7
12
  - Sean Sorrell
@@ -9,51 +14,110 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-12-28 00:00:00 -05:00
17
+ date: 2010-05-30 00:00:00 -04:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: ferret
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
20
25
  requirements:
21
26
  - - ">="
22
27
  - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
23
31
  version: "0"
24
- version:
32
+ type: :runtime
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
35
  name: nokogiri
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
30
39
  requirements:
31
40
  - - ">="
32
41
  - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
33
45
  version: "0"
34
- version:
46
+ type: :runtime
47
+ version_requirements: *id002
35
48
  - !ruby/object:Gem::Dependency
36
49
  name: highline
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ type: :runtime
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: sinatra
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
73
+ version: "0"
37
74
  type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: json
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ none: false
40
81
  requirements:
41
82
  - - ">="
42
83
  - !ruby/object:Gem::Version
84
+ hash: 3
85
+ segments:
86
+ - 0
43
87
  version: "0"
44
- version:
88
+ type: :runtime
89
+ version_requirements: *id005
90
+ - !ruby/object:Gem::Dependency
91
+ name: haml
92
+ prerelease: false
93
+ requirement: &id006 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ hash: 3
99
+ segments:
100
+ - 0
101
+ version: "0"
102
+ type: :runtime
103
+ version_requirements: *id006
45
104
  description: leander is a command-line webpage clipper
46
105
  email: seansorrell@gmail.com
47
106
  executables:
48
107
  - leander
108
+ - leander-server
49
109
  extensions: []
50
110
 
51
111
  extra_rdoc_files: []
52
112
 
53
113
  files:
54
114
  - README.md
55
- - lib/index.rb
56
- - lib/webpage.rb
115
+ - lib/leander/index.rb
116
+ - lib/leander/webpage.rb
117
+ - lib/leander/leander-server.rb
118
+ - bin/leander
119
+ - bin/leander-server
120
+ - lib/leander/views/search.haml
57
121
  has_rdoc: true
58
122
  homepage: http://github.com/rudle/leander
59
123
  licenses: []
@@ -64,21 +128,27 @@ rdoc_options: []
64
128
  require_paths:
65
129
  - lib
66
130
  required_ruby_version: !ruby/object:Gem::Requirement
131
+ none: false
67
132
  requirements:
68
133
  - - ">="
69
134
  - !ruby/object:Gem::Version
135
+ hash: 3
136
+ segments:
137
+ - 0
70
138
  version: "0"
71
- version:
72
139
  required_rubygems_version: !ruby/object:Gem::Requirement
140
+ none: false
73
141
  requirements:
74
142
  - - ">="
75
143
  - !ruby/object:Gem::Version
144
+ hash: 3
145
+ segments:
146
+ - 0
76
147
  version: "0"
77
- version:
78
148
  requirements: []
79
149
 
80
150
  rubyforge_project:
81
- rubygems_version: 1.3.5
151
+ rubygems_version: 1.3.7
82
152
  signing_key:
83
153
  specification_version: 3
84
154
  summary: leander is a command-line webpage clipper