zeiger 0.0.3 → 0.0.4
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 +4 -4
- data/bin/zeiger +1 -0
- data/lib/zeiger/index.rb +21 -4
- data/lib/zeiger/server.rb +1 -1
- data/lib/zeiger/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 442832a4d75e16a51b1e2027039324b7376468b3
|
4
|
+
data.tar.gz: 2604766d571fd65babebd7a45d3c036e80f3c05b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e53fac91ddc9b472842068ab533271d9ec89cfa66a32dd358f8b39185d4e79e001a63f7c089815bd5ec52d4c99187fec99e5d8a696a0c983b5d9474ccc84844b
|
7
|
+
data.tar.gz: e7574635be1aa14bb86a7a2a5b346fccca3599905eb39b61a8b2691127df67a78f1ef418217ed441f97ceac3af996e857b555e3ffd202cf4c2bdf56b38178c98
|
data/bin/zeiger
CHANGED
@@ -12,6 +12,7 @@ when "server" ; Zeiger::Server.new.run *$*
|
|
12
12
|
when "search" ; Zeiger::Client.new.send({ command: :search, pwd: pwd, search: query })
|
13
13
|
when "files" ; Zeiger::Client.new.send({ command: :files , pwd: pwd, files: query })
|
14
14
|
when "stats" ; Zeiger::Client.new.send({ command: :stats , pwd: pwd })
|
15
|
+
else puts "Zeiger version #{Zeiger::VERSION}, usage `zeiger server|search|files|stats`"
|
15
16
|
end
|
16
17
|
|
17
18
|
# define file groups
|
data/lib/zeiger/index.rb
CHANGED
@@ -2,7 +2,18 @@ module Zeiger
|
|
2
2
|
INDICES = { }
|
3
3
|
|
4
4
|
class Index
|
5
|
-
|
5
|
+
ROOT_GLOBS = [%w{ *.gemspec }]
|
6
|
+
ROOT_GROUPS = [%w{ .zeiger.yml },
|
7
|
+
%w{ .git },
|
8
|
+
%w{ .hg },
|
9
|
+
%w{ Makefile },
|
10
|
+
%w{ Rakefile },
|
11
|
+
%w{ Gemfile },
|
12
|
+
%w{ build.xml },
|
13
|
+
%w{ lib LICENSE },
|
14
|
+
%w{ lib spec },
|
15
|
+
%w{ lib MIT-LICENSE },
|
16
|
+
]
|
6
17
|
NGRAM_SIZE = 3
|
7
18
|
|
8
19
|
attr_accessor :index, :dir, :name, :includes, :ignore, :files, :config, :monitor, :stats
|
@@ -33,7 +44,8 @@ module Zeiger
|
|
33
44
|
raise "no path! #{path.inspect}" if path == nil || path.strip == ''
|
34
45
|
return INDICES[path] if INDICES[path]
|
35
46
|
return nil if path == '/'
|
36
|
-
return (INDICES[path] = new(path)) if
|
47
|
+
return (INDICES[path] = new(path)) if ROOT_GROUPS.any? { |rg| rg.all? { |f| File.exist?(File.join path, f) } }
|
48
|
+
return (INDICES[path] = new(path)) if ROOT_GLOBS.any? { |rg| rg.all? { |f| Dir.glob(File.join path, f).size > 0 } }
|
37
49
|
return from_path(File.dirname path)
|
38
50
|
end
|
39
51
|
|
@@ -62,13 +74,18 @@ module Zeiger
|
|
62
74
|
|
63
75
|
def glob pattern ; Dir.glob(File.join(dir, pattern)) ; end
|
64
76
|
def rescan ; monitor.build_index ; end
|
65
|
-
def get_ngram_lines ngrams ; ngrams.map { |ngram|
|
77
|
+
def get_ngram_lines ngrams ; ngrams.map { |ngram| index[ngram] || [] }.reduce(&:&) ; end
|
66
78
|
def exec_query regex, ngrams ; get_ngram_lines(ngrams).select { |line| line.matches? regex } ; end
|
67
79
|
def sort_by_filename lines ; lines.sort_by { |line| [line.file.local_filename, line.line_number] } ; end
|
80
|
+
def all_matching q ; index.keys.select { |k| k.match q }.map { |k| index[k] }.reduce(&:|) ; end
|
68
81
|
|
69
82
|
def query txt
|
70
83
|
puts "got query #{txt.inspect}"
|
71
|
-
sort_by_filename
|
84
|
+
sort_by_filename(if txt.length <= NGRAM_SIZE
|
85
|
+
all_matching Regexp.compile(Regexp.escape txt)
|
86
|
+
else
|
87
|
+
exec_query Regexp.compile(Regexp.escape txt), txt.ngrams(NGRAM_SIZE)
|
88
|
+
end)
|
72
89
|
end
|
73
90
|
|
74
91
|
def file_list name
|
data/lib/zeiger/server.rb
CHANGED
data/lib/zeiger/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zeiger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- conanite
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|