lita-answers 0.0.2 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4a22ca9edfca01b8a6e308e45d82f90a0cb19800
4
- data.tar.gz: 29a4d8ef2bd301b7e4417ec28673dfc82387cd07
3
+ metadata.gz: d01e59cbede30610d45fd3d2ac3903e9ee5e489e
4
+ data.tar.gz: 8cd8dc7969fe17ac7b2e7a8a24614a12874a1f7d
5
5
  SHA512:
6
- metadata.gz: 1a2d478cfc9403f8ba41598015909e8ab380f5c3d983947335bf8c1b7724f67951e63282ab48b57e8d710adba325d07dddd49feac0b0bb811e364679671ef0b4
7
- data.tar.gz: a1e6b0a78062ebf9ae2bf2e4124ce3b1b0e4cc5165ceecb820f7519319fec89601f4b1f97a1ab8898809efb7a532dbb716215ec4d0b792e4fbd3a6a8c5847b11
6
+ metadata.gz: 5286be556438f66025da6441786f1ca011e72b6dce1e32606f9d8977a4a6ed29a3713826fcff1143defc4557d0432ded3fa3ed188006f1f69115c8ca29afeaac
7
+ data.tar.gz: 18ffa7ffaf210acd35d2669736952402547f8d321d9b38eab1ef4c9ff2bee356053bd049f2e205d7a0f95380c55c3e0c68cb9e8b592f49e8666cca9a51aa4ff0
@@ -1,3 +1,4 @@
1
1
  require 'lita/handlers/answers'
2
2
  require 'knowledgebase'
3
3
  require 'nlp'
4
+ require 'ruby_docs/documentation'
@@ -7,6 +7,17 @@ module Lita
7
7
  QUESTION = /(?:'|")(#{TEXT.source}\?)(?:'|")/
8
8
  ANSWER = /(?:'|")(#{TEXT.source}\.?)(?:'|")/
9
9
 
10
+
11
+ route(/^(\w+)([\.#]|::)?(\w+)?$/, :documentation, command: true, help: {
12
+ "Array#map" => "# Array#map\n\n(from ruby core)\n---\n ary.collect { |item| block } -> new_ary\n..."
13
+ # Array
14
+ # map
15
+ # Array.map
16
+ # Array#map
17
+ # Array::map
18
+ # Array map – not
19
+ })
20
+
10
21
  route(/^all\squestions$/i, :index, command: true, help: {
11
22
  "all questions" => "You could ask me the following questions: 1) ... 2) ..."
12
23
  })
@@ -27,6 +38,12 @@ module Lita
27
38
  "forget 'question?'" => "Forgot 'question?'"
28
39
  })
29
40
 
41
+ def documentation(response)
42
+ question = response.matches.join
43
+ reply = RubyDocs::Documentation.search(question)
44
+ response.reply(reply)
45
+ end
46
+
30
47
  def index(response)
31
48
  questions = Knowledgebase.all
32
49
  if questions.any?
@@ -0,0 +1,25 @@
1
+ require 'json'
2
+ require 'net/http'
3
+ require 'uri'
4
+
5
+ # TODO: test
6
+ module RubyDocs
7
+ class Documentation
8
+ API_URL = "http://api.rubydocs.com/search"
9
+
10
+ class << self
11
+ def search(question, project = nil, version = nil)
12
+ response = Net::HTTP.get_response api_uri(question, project, version)
13
+ response_hash = JSON.parse(response.body)
14
+ response_hash['content']
15
+ end
16
+
17
+ def api_uri(question, project, version)
18
+ api_url = "#{API_URL}?q=#{question}"
19
+ api_url << "&project=#{project}" unless project.nil? || project.empty?
20
+ api_url << "&version=#{version}" unless version.nil? || version.empty?
21
+ URI.parse api_url
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "lita-answers"
3
- spec.version = "0.0.2"
3
+ spec.version = "0.0.3"
4
4
  spec.authors = ["Sergey Alekseev"]
5
5
  spec.email = ["sergey.alekseev.minsk@gmail.com"]
6
6
  spec.description = "A Lita handler for a question answering (QA) system. Allows you to use CRUD operations and simple NLP. " \
@@ -15,9 +15,9 @@ Gem::Specification.new do |spec|
15
15
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
16
16
  spec.require_paths = ["lib"]
17
17
 
18
- spec.add_runtime_dependency "lita", "~> 2.7"
18
+ spec.add_runtime_dependency "lita", ">= 2.7"
19
19
 
20
- spec.add_development_dependency "bundler", "~> 1.3"
20
+ spec.add_development_dependency "bundler", ">= 1.3"
21
21
  spec.add_development_dependency "rake"
22
22
  spec.add_development_dependency "rspec", ">= 2.14"
23
23
  spec.add_development_dependency "simplecov"
@@ -9,6 +9,16 @@ describe Lita::Handlers::Answers, lita_handler: true do
9
9
  it { routes_command("answer 'question?'").to :show }
10
10
  it { routes_command("forget 'question?'").to :destroy }
11
11
  it { routes_command("all questions").to :index }
12
+ it { routes_command("Array#map").to :documentation }
13
+ end
14
+
15
+ describe '#documentation' do
16
+ it 'displays documentation from RubyDocs.org' do
17
+ documentation_content = "# Array#map\n\n(from ruby core)\n---\n ary.collect { |item| block } -> new_ary\n..."
18
+ Net::HTTP.stub(:get_response).and_return double(body: { 'content' => documentation_content }.to_json)
19
+ send_command 'Array#map'
20
+ expect(replies.last).to eq(documentation_content)
21
+ end
12
22
  end
13
23
 
14
24
  describe 'commands' do
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-answers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Alekseev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-26 00:00:00.000000000 Z
11
+ date: 2014-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lita
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.7'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.3'
41
41
  - !ruby/object:Gem::Dependency
@@ -125,6 +125,7 @@ files:
125
125
  - lib/lita-answers.rb
126
126
  - lib/lita/handlers/answers.rb
127
127
  - lib/nlp.rb
128
+ - lib/ruby_docs/documentation.rb
128
129
  - lita-answers.gemspec
129
130
  - spec/knowledgebase_spec.rb
130
131
  - spec/lita/handlers/answers_spec.rb