minidusen 0.11.1 → 1.0.0
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/.github/workflows/test.yml +55 -48
- data/.ruby-version +1 -1
- data/CHANGELOG.md +6 -0
- data/Gemfile.6.1.mysql2.lock +2 -2
- data/Gemfile.6.1.pg.lock +2 -2
- data/Gemfile.7.0.mysql2.lock +2 -2
- data/Gemfile.7.0.pg.lock +2 -2
- data/{Gemfile.6.0.mysql2 → Gemfile.7.1.mysql2} +2 -2
- data/Gemfile.7.1.mysql2.lock +81 -0
- data/{Gemfile.6.0.pg → Gemfile.7.1.pg} +2 -2
- data/Gemfile.7.1.pg.lock +81 -0
- data/{Gemfile.4.2.mysql2 → Gemfile.7.2.mysql2} +4 -4
- data/Gemfile.7.2.mysql2.lock +83 -0
- data/{Gemfile.4.2.pg → Gemfile.7.2.pg} +3 -3
- data/Gemfile.7.2.pg.lock +83 -0
- data/Gemfile.8.0.mysql2 +15 -0
- data/Gemfile.8.0.mysql2.lock +87 -0
- data/Gemfile.8.0.pg +15 -0
- data/Gemfile.8.0.pg.lock +87 -0
- data/README.md +21 -6
- data/lib/minidusen/parser.rb +4 -2
- data/lib/minidusen/syntax.rb +14 -3
- data/lib/minidusen/token.rb +5 -0
- data/lib/minidusen/util.rb +2 -2
- data/lib/minidusen/version.rb +1 -1
- data/media/logo.dark.shapes.svg +137 -0
- data/media/logo.dark.text.svg +107 -0
- data/media/logo.light.shapes.svg +136 -0
- data/media/logo.light.text.svg +106 -0
- data/media/makandra-with-bottom-margin.dark.svg +180 -0
- data/media/makandra-with-bottom-margin.light.svg +180 -0
- data/spec/minidusen/filter_spec.rb +8 -0
- data/spec/minidusen/parser_spec.rb +8 -0
- data/spec/support/database.github.yml +2 -2
- metadata +21 -15
- data/Gemfile.4.2.mysql2.lock +0 -69
- data/Gemfile.4.2.pg.lock +0 -69
- data/Gemfile.5.2.mysql2 +0 -16
- data/Gemfile.5.2.mysql2.lock +0 -68
- data/Gemfile.5.2.pg +0 -16
- data/Gemfile.5.2.pg.lock +0 -68
- data/Gemfile.6.0.mysql2.lock +0 -67
- data/Gemfile.6.0.pg.lock +0 -67
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
minidusen (0.11.2)
|
|
5
|
+
activerecord (>= 3.2)
|
|
6
|
+
activesupport (>= 3.2)
|
|
7
|
+
edge_rider (>= 0.2.5)
|
|
8
|
+
|
|
9
|
+
GEM
|
|
10
|
+
remote: https://rubygems.org/
|
|
11
|
+
specs:
|
|
12
|
+
activemodel (8.0.1)
|
|
13
|
+
activesupport (= 8.0.1)
|
|
14
|
+
activerecord (8.0.1)
|
|
15
|
+
activemodel (= 8.0.1)
|
|
16
|
+
activesupport (= 8.0.1)
|
|
17
|
+
timeout (>= 0.4.0)
|
|
18
|
+
activesupport (8.0.1)
|
|
19
|
+
base64
|
|
20
|
+
benchmark (>= 0.3)
|
|
21
|
+
bigdecimal
|
|
22
|
+
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
23
|
+
connection_pool (>= 2.2.5)
|
|
24
|
+
drb
|
|
25
|
+
i18n (>= 1.6, < 2)
|
|
26
|
+
logger (>= 1.4.2)
|
|
27
|
+
minitest (>= 5.1)
|
|
28
|
+
securerandom (>= 0.3)
|
|
29
|
+
tzinfo (~> 2.0, >= 2.0.5)
|
|
30
|
+
uri (>= 0.13.1)
|
|
31
|
+
base64 (0.2.0)
|
|
32
|
+
benchmark (0.4.0)
|
|
33
|
+
bigdecimal (3.1.8)
|
|
34
|
+
byebug (11.1.3)
|
|
35
|
+
concurrent-ruby (1.3.4)
|
|
36
|
+
connection_pool (2.4.1)
|
|
37
|
+
database_cleaner (2.0.2)
|
|
38
|
+
database_cleaner-active_record (>= 2, < 3)
|
|
39
|
+
database_cleaner-active_record (2.2.0)
|
|
40
|
+
activerecord (>= 5.a)
|
|
41
|
+
database_cleaner-core (~> 2.0.0)
|
|
42
|
+
database_cleaner-core (2.0.1)
|
|
43
|
+
diff-lcs (1.5.1)
|
|
44
|
+
drb (2.2.1)
|
|
45
|
+
edge_rider (2.3.0)
|
|
46
|
+
activerecord (>= 3.2)
|
|
47
|
+
gemika (0.8.3)
|
|
48
|
+
i18n (1.14.5)
|
|
49
|
+
concurrent-ruby (~> 1.0)
|
|
50
|
+
logger (1.6.1)
|
|
51
|
+
minitest (5.25.1)
|
|
52
|
+
mysql2 (0.5.6)
|
|
53
|
+
rake (13.2.1)
|
|
54
|
+
rspec (3.13.0)
|
|
55
|
+
rspec-core (~> 3.13.0)
|
|
56
|
+
rspec-expectations (~> 3.13.0)
|
|
57
|
+
rspec-mocks (~> 3.13.0)
|
|
58
|
+
rspec-core (3.13.1)
|
|
59
|
+
rspec-support (~> 3.13.0)
|
|
60
|
+
rspec-expectations (3.13.2)
|
|
61
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
62
|
+
rspec-support (~> 3.13.0)
|
|
63
|
+
rspec-mocks (3.13.1)
|
|
64
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
65
|
+
rspec-support (~> 3.13.0)
|
|
66
|
+
rspec-support (3.13.1)
|
|
67
|
+
securerandom (0.3.1)
|
|
68
|
+
timeout (0.4.3)
|
|
69
|
+
tzinfo (2.0.6)
|
|
70
|
+
concurrent-ruby (~> 1.0)
|
|
71
|
+
uri (1.0.2)
|
|
72
|
+
|
|
73
|
+
PLATFORMS
|
|
74
|
+
x86_64-linux
|
|
75
|
+
|
|
76
|
+
DEPENDENCIES
|
|
77
|
+
activerecord (~> 8.0.1)
|
|
78
|
+
byebug
|
|
79
|
+
database_cleaner
|
|
80
|
+
gemika
|
|
81
|
+
minidusen!
|
|
82
|
+
mysql2 (~> 0.5)
|
|
83
|
+
rake
|
|
84
|
+
rspec (~> 3.5)
|
|
85
|
+
|
|
86
|
+
BUNDLED WITH
|
|
87
|
+
2.5.6
|
data/Gemfile.8.0.pg
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
# Runtime dependencies
|
|
4
|
+
gem 'activerecord', '~>8.0.1'
|
|
5
|
+
gem 'pg', '~> 1.4.0'
|
|
6
|
+
|
|
7
|
+
# Development dependencies
|
|
8
|
+
gem 'rake'
|
|
9
|
+
gem 'database_cleaner'
|
|
10
|
+
gem 'rspec', '~>3.5'
|
|
11
|
+
gem 'byebug'
|
|
12
|
+
gem 'gemika'
|
|
13
|
+
|
|
14
|
+
# Gem under test
|
|
15
|
+
gem 'minidusen', :path => '.'
|
data/Gemfile.8.0.pg.lock
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
minidusen (0.11.2)
|
|
5
|
+
activerecord (>= 3.2)
|
|
6
|
+
activesupport (>= 3.2)
|
|
7
|
+
edge_rider (>= 0.2.5)
|
|
8
|
+
|
|
9
|
+
GEM
|
|
10
|
+
remote: https://rubygems.org/
|
|
11
|
+
specs:
|
|
12
|
+
activemodel (8.0.1)
|
|
13
|
+
activesupport (= 8.0.1)
|
|
14
|
+
activerecord (8.0.1)
|
|
15
|
+
activemodel (= 8.0.1)
|
|
16
|
+
activesupport (= 8.0.1)
|
|
17
|
+
timeout (>= 0.4.0)
|
|
18
|
+
activesupport (8.0.1)
|
|
19
|
+
base64
|
|
20
|
+
benchmark (>= 0.3)
|
|
21
|
+
bigdecimal
|
|
22
|
+
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
23
|
+
connection_pool (>= 2.2.5)
|
|
24
|
+
drb
|
|
25
|
+
i18n (>= 1.6, < 2)
|
|
26
|
+
logger (>= 1.4.2)
|
|
27
|
+
minitest (>= 5.1)
|
|
28
|
+
securerandom (>= 0.3)
|
|
29
|
+
tzinfo (~> 2.0, >= 2.0.5)
|
|
30
|
+
uri (>= 0.13.1)
|
|
31
|
+
base64 (0.2.0)
|
|
32
|
+
benchmark (0.4.0)
|
|
33
|
+
bigdecimal (3.1.8)
|
|
34
|
+
byebug (11.1.3)
|
|
35
|
+
concurrent-ruby (1.3.4)
|
|
36
|
+
connection_pool (2.4.1)
|
|
37
|
+
database_cleaner (2.0.2)
|
|
38
|
+
database_cleaner-active_record (>= 2, < 3)
|
|
39
|
+
database_cleaner-active_record (2.2.0)
|
|
40
|
+
activerecord (>= 5.a)
|
|
41
|
+
database_cleaner-core (~> 2.0.0)
|
|
42
|
+
database_cleaner-core (2.0.1)
|
|
43
|
+
diff-lcs (1.5.1)
|
|
44
|
+
drb (2.2.1)
|
|
45
|
+
edge_rider (2.3.0)
|
|
46
|
+
activerecord (>= 3.2)
|
|
47
|
+
gemika (0.8.3)
|
|
48
|
+
i18n (1.14.5)
|
|
49
|
+
concurrent-ruby (~> 1.0)
|
|
50
|
+
logger (1.6.1)
|
|
51
|
+
minitest (5.25.1)
|
|
52
|
+
pg (1.4.6)
|
|
53
|
+
rake (13.2.1)
|
|
54
|
+
rspec (3.13.0)
|
|
55
|
+
rspec-core (~> 3.13.0)
|
|
56
|
+
rspec-expectations (~> 3.13.0)
|
|
57
|
+
rspec-mocks (~> 3.13.0)
|
|
58
|
+
rspec-core (3.13.1)
|
|
59
|
+
rspec-support (~> 3.13.0)
|
|
60
|
+
rspec-expectations (3.13.2)
|
|
61
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
62
|
+
rspec-support (~> 3.13.0)
|
|
63
|
+
rspec-mocks (3.13.1)
|
|
64
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
65
|
+
rspec-support (~> 3.13.0)
|
|
66
|
+
rspec-support (3.13.1)
|
|
67
|
+
securerandom (0.3.1)
|
|
68
|
+
timeout (0.4.3)
|
|
69
|
+
tzinfo (2.0.6)
|
|
70
|
+
concurrent-ruby (~> 1.0)
|
|
71
|
+
uri (1.0.2)
|
|
72
|
+
|
|
73
|
+
PLATFORMS
|
|
74
|
+
ruby
|
|
75
|
+
|
|
76
|
+
DEPENDENCIES
|
|
77
|
+
activerecord (~> 8.0.1)
|
|
78
|
+
byebug
|
|
79
|
+
database_cleaner
|
|
80
|
+
gemika
|
|
81
|
+
minidusen!
|
|
82
|
+
pg (~> 1.4.0)
|
|
83
|
+
rake
|
|
84
|
+
rspec (~> 3.5)
|
|
85
|
+
|
|
86
|
+
BUNDLED WITH
|
|
87
|
+
2.5.6
|
data/README.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
<p>
|
|
2
|
+
<a href="https://makandra.de/">
|
|
3
|
+
<picture>
|
|
4
|
+
<source media="(prefers-color-scheme: light)" srcset="media/makandra-with-bottom-margin.light.svg">
|
|
5
|
+
<source media="(prefers-color-scheme: dark)" srcset="media/makandra-with-bottom-margin.dark.svg">
|
|
6
|
+
<img align="right" width="25%" alt="makandra" src="media/makandra-with-bottom-margin.light.svg">
|
|
7
|
+
</picture>
|
|
8
|
+
</a>
|
|
9
|
+
|
|
10
|
+
<picture>
|
|
11
|
+
<source media="(prefers-color-scheme: light)" srcset="media/logo.light.shapes.svg">
|
|
12
|
+
<source media="(prefers-color-scheme: dark)" srcset="media/logo.dark.shapes.svg">
|
|
13
|
+
<img width="210" alt="Minidusen" role="heading" aria-level="1" src="media/logo.light.shapes.svg">
|
|
14
|
+
</picture>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
[](https://github.com/makandra/minidusen/actions)
|
|
3
18
|
|
|
4
19
|
Low-tech search solution for ActiveRecord with MySQL or PostgreSQL
|
|
5
20
|
------------------------------------------------------------------
|
|
@@ -9,7 +24,7 @@ It works with your existing MySQL or PostgreSQL schema by mostly relying on simp
|
|
|
9
24
|
|
|
10
25
|
This makes Minidusen a quick way to implement find-as-you-type filters for index views:
|
|
11
26
|
|
|
12
|
-

|
|
13
28
|
|
|
14
29
|
|
|
15
30
|
### Supported queries
|
|
@@ -219,10 +234,10 @@ Supported Rails versions
|
|
|
219
234
|
|
|
220
235
|
Minidusen is tested on:
|
|
221
236
|
|
|
222
|
-
- Rails 4.2
|
|
223
|
-
- Rails 5.2
|
|
224
|
-
- Rails 6.0
|
|
225
237
|
- Rails 6.1
|
|
238
|
+
- Rails 7.0
|
|
239
|
+
- Rails 7.1
|
|
240
|
+
- Rails 7.2
|
|
226
241
|
- MySQL 5.6
|
|
227
242
|
- PostgreSQL
|
|
228
243
|
|
data/lib/minidusen/parser.rb
CHANGED
|
@@ -42,9 +42,10 @@ module Minidusen
|
|
|
42
42
|
|
|
43
43
|
def extract_text_query_tokens(query_string, query)
|
|
44
44
|
while query_string.sub!(TEXT_QUERY, '')
|
|
45
|
+
phrase = !$2.nil?
|
|
45
46
|
value = "#{$2}#{$4}"
|
|
46
47
|
exclude = "#{$1}#{$3}" == "-"
|
|
47
|
-
options = { :field => 'text', :value => value, :exclude => exclude }
|
|
48
|
+
options = { :field => 'text', :value => value, :exclude => exclude, :phrase => phrase }
|
|
48
49
|
query << Token.new(options)
|
|
49
50
|
end
|
|
50
51
|
end
|
|
@@ -52,9 +53,10 @@ module Minidusen
|
|
|
52
53
|
def extract_field_query_tokens(query_string, query)
|
|
53
54
|
while query_string.sub!(FIELD_QUERY, '')
|
|
54
55
|
field = $2
|
|
56
|
+
phrase = !$4.nil?
|
|
55
57
|
value = "#{$4}#{$6}"
|
|
56
58
|
exclude = "#{$1}" == "-"
|
|
57
|
-
options = { :field => field, :value => value, :exclude => exclude }
|
|
59
|
+
options = { :field => field, :value => value, :exclude => exclude, :phrase => phrase }
|
|
58
60
|
query << Token.new(options)
|
|
59
61
|
end
|
|
60
62
|
end
|
data/lib/minidusen/syntax.rb
CHANGED
|
@@ -3,6 +3,7 @@ module Minidusen
|
|
|
3
3
|
|
|
4
4
|
def initialize
|
|
5
5
|
@scopers = {}
|
|
6
|
+
@alias_count = 0
|
|
6
7
|
end
|
|
7
8
|
|
|
8
9
|
def learn_field(field, &scoper)
|
|
@@ -45,9 +46,19 @@ module Minidusen
|
|
|
45
46
|
|
|
46
47
|
def append_excludes(instance, matches, exclude_query)
|
|
47
48
|
excluded_records = apply_query(instance, matches.origin_class, exclude_query)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
primary_key = excluded_records.primary_key
|
|
50
|
+
join_alias = "exclude_#{@alias_count += 1}"
|
|
51
|
+
# due to performance reasons on big tables this needs to be implemented as an anti-join
|
|
52
|
+
# will generate SQL like
|
|
53
|
+
# LEFT JOIN (SELECT "users"."id" FROM "users" WHERE $condition) excluded
|
|
54
|
+
# ON "users"."id" = "excluded"."id"
|
|
55
|
+
# WHERE "excluded"."id" IS NULL
|
|
56
|
+
matches
|
|
57
|
+
.joins(<<~SQL)
|
|
58
|
+
LEFT JOIN (#{excluded_records.select(primary_key).to_sql}) #{join_alias}
|
|
59
|
+
ON #{Util.qualify_column_name(excluded_records, primary_key)} = #{Util.qualify_column_name(excluded_records, primary_key, table_name: join_alias)}
|
|
60
|
+
SQL
|
|
61
|
+
.where(join_alias => { primary_key => nil })
|
|
51
62
|
end
|
|
52
63
|
|
|
53
64
|
end
|
data/lib/minidusen/token.rb
CHANGED
|
@@ -7,6 +7,7 @@ module Minidusen
|
|
|
7
7
|
@value = options.fetch(:value)
|
|
8
8
|
@exclude = options.fetch(:exclude, false)
|
|
9
9
|
@field = options.fetch(:field).to_s
|
|
10
|
+
@phrase = options.fetch(:phrase, false)
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
def to_s
|
|
@@ -21,5 +22,9 @@ module Minidusen
|
|
|
21
22
|
exclude
|
|
22
23
|
end
|
|
23
24
|
|
|
25
|
+
def phrase?
|
|
26
|
+
@phrase
|
|
27
|
+
end
|
|
28
|
+
|
|
24
29
|
end
|
|
25
30
|
end
|
data/lib/minidusen/util.rb
CHANGED
|
@@ -41,10 +41,10 @@ module Minidusen
|
|
|
41
41
|
escape_with_backslash(phrase, ['%', '_'])
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
def qualify_column_name(model, column_name)
|
|
44
|
+
def qualify_column_name(model, column_name, table_name: model.table_name)
|
|
45
45
|
column_name = column_name.to_s
|
|
46
46
|
unless column_name.include?('.')
|
|
47
|
-
quoted_table_name = model.connection.quote_table_name(
|
|
47
|
+
quoted_table_name = model.connection.quote_table_name(table_name)
|
|
48
48
|
quoted_column_name = model.connection.quote_column_name(column_name)
|
|
49
49
|
column_name = "#{quoted_table_name}.#{quoted_column_name}"
|
|
50
50
|
end
|
data/lib/minidusen/version.rb
CHANGED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
3
|
+
|
|
4
|
+
<svg
|
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
10
|
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
11
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
12
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
13
|
+
width="53.366352mm"
|
|
14
|
+
height="14.056225mm"
|
|
15
|
+
viewBox="0 0 53.366351 14.056225"
|
|
16
|
+
version="1.1"
|
|
17
|
+
id="svg838"
|
|
18
|
+
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
|
19
|
+
sodipodi:docname="logo.dark.shapes.svg"
|
|
20
|
+
inkscape:export-filename="/home/henning/Projects/capybara-lockstep/media/capybara-lockstep.dark.png"
|
|
21
|
+
inkscape:export-xdpi="196"
|
|
22
|
+
inkscape:export-ydpi="196">
|
|
23
|
+
<defs
|
|
24
|
+
id="defs832">
|
|
25
|
+
<linearGradient
|
|
26
|
+
inkscape:collect="always"
|
|
27
|
+
id="linearGradient1406">
|
|
28
|
+
<stop
|
|
29
|
+
style="stop-color:#ff0844;stop-opacity:1"
|
|
30
|
+
offset="0"
|
|
31
|
+
id="stop1402" />
|
|
32
|
+
<stop
|
|
33
|
+
style="stop-color:#ffb199;stop-opacity:1"
|
|
34
|
+
offset="1"
|
|
35
|
+
id="stop1404" />
|
|
36
|
+
</linearGradient>
|
|
37
|
+
<linearGradient
|
|
38
|
+
inkscape:collect="always"
|
|
39
|
+
xlink:href="#linearGradient1406"
|
|
40
|
+
id="linearGradient1408"
|
|
41
|
+
x1="22.054907"
|
|
42
|
+
y1="91.071762"
|
|
43
|
+
x2="88.956696"
|
|
44
|
+
y2="91.071762"
|
|
45
|
+
gradientUnits="userSpaceOnUse"
|
|
46
|
+
gradientTransform="matrix(0.79761275,0,0,0.08820435,-17.591275,57.908781)" />
|
|
47
|
+
</defs>
|
|
48
|
+
<sodipodi:namedview
|
|
49
|
+
id="base"
|
|
50
|
+
pagecolor="#ffffff"
|
|
51
|
+
bordercolor="#666666"
|
|
52
|
+
borderopacity="1.0"
|
|
53
|
+
inkscape:pageopacity="0.0"
|
|
54
|
+
inkscape:pageshadow="2"
|
|
55
|
+
inkscape:zoom="11.2"
|
|
56
|
+
inkscape:cx="234.58341"
|
|
57
|
+
inkscape:cy="-11.16366"
|
|
58
|
+
inkscape:document-units="mm"
|
|
59
|
+
inkscape:current-layer="layer1"
|
|
60
|
+
showgrid="false"
|
|
61
|
+
fit-margin-top="0"
|
|
62
|
+
fit-margin-left="0"
|
|
63
|
+
fit-margin-right="0"
|
|
64
|
+
fit-margin-bottom="0"
|
|
65
|
+
inkscape:window-width="2560"
|
|
66
|
+
inkscape:window-height="1391"
|
|
67
|
+
inkscape:window-x="1920"
|
|
68
|
+
inkscape:window-y="0"
|
|
69
|
+
inkscape:window-maximized="1"
|
|
70
|
+
inkscape:pagecheckerboard="true" />
|
|
71
|
+
<metadata
|
|
72
|
+
id="metadata835">
|
|
73
|
+
<rdf:RDF>
|
|
74
|
+
<cc:Work
|
|
75
|
+
rdf:about="">
|
|
76
|
+
<dc:format>image/svg+xml</dc:format>
|
|
77
|
+
<dc:type
|
|
78
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
79
|
+
<dc:title></dc:title>
|
|
80
|
+
</cc:Work>
|
|
81
|
+
</rdf:RDF>
|
|
82
|
+
</metadata>
|
|
83
|
+
<g
|
|
84
|
+
inkscape:label="Layer 1"
|
|
85
|
+
inkscape:groupmode="layer"
|
|
86
|
+
id="layer1"
|
|
87
|
+
transform="translate(0,-52.518951)">
|
|
88
|
+
<g
|
|
89
|
+
aria-label="MINIDUSEN"
|
|
90
|
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
|
91
|
+
id="text1385">
|
|
92
|
+
<path
|
|
93
|
+
d="m 7.6041248,52.645951 v 6.985 H 6.0272082 v -4.111625 l 0.068792,-1.169458 -0.269875,1.338791 -1.1747499,3.381375 H 3.1009166 l -1.1694583,-3.381375 -0.2645834,-1.338791 0.068792,1.169458 v 4.111625 H 0.15345833 v -6.985 H 2.3759583 l 1.4075833,4.661958 0.09525,0.555625 0.09525,-0.555625 1.4075833,-4.661958 z"
|
|
94
|
+
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
|
|
95
|
+
id="path822" />
|
|
96
|
+
<path
|
|
97
|
+
d="m 8.9217348,52.645951 h 1.5822082 v 6.985 H 8.9217348 Z"
|
|
98
|
+
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
|
|
99
|
+
id="path824" />
|
|
100
|
+
<path
|
|
101
|
+
d="m 13.192091,54.095868 0.116417,0.02117 v 5.513917 h -1.582209 v -6.985 h 2.159 l 2.831042,5.503333 -0.116417,0.02117 v -5.5245 h 1.582209 v 6.985 h -2.169584 z"
|
|
102
|
+
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
|
|
103
|
+
id="path826" />
|
|
104
|
+
<path
|
|
105
|
+
d="m 19.436255,52.645951 h 1.582208 v 6.985 h -1.582208 z"
|
|
106
|
+
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
|
|
107
|
+
id="path828" />
|
|
108
|
+
<path
|
|
109
|
+
d="m 22.256693,52.645951 h 2.100792 q 1.116541,0 1.846791,0.449792 0.735542,0.4445 1.100667,1.232958 0.365125,0.788458 0.365125,1.804458 0,1.021292 -0.365125,1.80975 -0.365125,0.788459 -1.100667,1.23825 -0.73025,0.449792 -1.846791,0.449792 h -2.100792 z m 1.576917,1.402292 v 4.180416 h 0.381 q 0.597958,0 0.989541,-0.269875 0.391584,-0.275166 0.587375,-0.746125 0.201084,-0.47625 0.201084,-1.068916 0,-0.597959 -0.195792,-1.068917 -0.1905,-0.47625 -0.587375,-0.751417 -0.396875,-0.275166 -0.994833,-0.275166 z"
|
|
110
|
+
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
|
|
111
|
+
id="path830" />
|
|
112
|
+
<path
|
|
113
|
+
d="m 32.633632,52.645951 h 1.582208 v 4.291542 q 0,0.862541 -0.338666,1.497541 -0.338667,0.629709 -0.968375,0.978959 -0.629709,0.343958 -1.502834,0.343958 -0.878416,0 -1.513416,-0.343958 -0.635,-0.34925 -0.973667,-0.978959 -0.333375,-0.635 -0.333375,-1.497541 v -4.291542 h 1.576917 v 4.206875 q 0,0.47625 0.148166,0.804333 0.153459,0.328084 0.433917,0.497417 0.280458,0.164042 0.661458,0.164042 0.375709,0 0.650875,-0.164042 0.275167,-0.169333 0.423334,-0.497417 0.153458,-0.328083 0.153458,-0.804333 z"
|
|
114
|
+
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
|
|
115
|
+
id="path832" />
|
|
116
|
+
<path
|
|
117
|
+
d="m 37.877668,52.518951 q 0.650875,0 1.137709,0.142875 0.486833,0.142875 0.783166,0.301625 0.296333,0.15875 0.359833,0.211667 l -0.762,1.275291 q -0.08467,-0.0635 -0.291041,-0.185208 -0.201083,-0.121708 -0.481542,-0.216958 -0.275166,-0.09525 -0.576791,-0.09525 -0.407459,0 -0.661459,0.148166 -0.248708,0.142875 -0.248708,0.428625 0,0.195792 0.132292,0.354542 0.137583,0.153458 0.41275,0.296333 0.280458,0.137584 0.709083,0.301625 0.391583,0.142875 0.735542,0.338667 0.343958,0.195792 0.603249,0.465667 0.264584,0.264583 0.418042,0.613833 0.153458,0.34925 0.153458,0.79375 0,0.529167 -0.216958,0.92075 -0.216958,0.386292 -0.592667,0.640292 -0.370416,0.254 -0.846666,0.375708 -0.470958,0.127 -0.978958,0.127 -0.719667,0 -1.291167,-0.164042 -0.566208,-0.164041 -0.915458,-0.354541 -0.34925,-0.1905 -0.418042,-0.254 l 0.788458,-1.328209 q 0.0635,0.04762 0.243417,0.153459 0.185208,0.105833 0.449792,0.22225 0.264583,0.111125 0.560916,0.1905 0.301625,0.07937 0.592667,0.07937 0.486833,0 0.73025,-0.185209 0.243417,-0.1905 0.243417,-0.497416 0,-0.227542 -0.153459,-0.407459 -0.153458,-0.179916 -0.460375,-0.338666 -0.306916,-0.164042 -0.767291,-0.343959 -0.460375,-0.185208 -0.862542,-0.449791 -0.396875,-0.264584 -0.645583,-0.661459 -0.248709,-0.396875 -0.248709,-0.98425 0,-0.587375 0.328084,-1.016 0.333375,-0.433916 0.873125,-0.66675 0.545041,-0.232833 1.164166,-0.232833 z"
|
|
118
|
+
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
|
|
119
|
+
id="path834" />
|
|
120
|
+
<path
|
|
121
|
+
d="m 41.253748,52.645951 h 4.460875 v 1.386417 h -2.883958 v 1.423458 h 2.8575 v 1.344083 h -2.8575 v 1.444625 h 2.883958 v 1.386417 h -4.460875 z"
|
|
122
|
+
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
|
|
123
|
+
id="path836" />
|
|
124
|
+
<path
|
|
125
|
+
d="m 48.376312,54.095868 0.116417,0.02117 v 5.513917 h -1.582208 v -6.985 h 2.159 l 2.831041,5.503333 -0.116416,0.02117 v -5.5245 h 1.582208 v 6.985 h -2.169583 z"
|
|
126
|
+
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
|
|
127
|
+
id="path838" />
|
|
128
|
+
</g>
|
|
129
|
+
<rect
|
|
130
|
+
style="fill:url(#linearGradient1408);fill-opacity:1;stroke:none;stroke-width:0.02652412;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
|
131
|
+
id="rect1387"
|
|
132
|
+
width="53.36171"
|
|
133
|
+
height="1.2668874"
|
|
134
|
+
x="-3.5527137e-15"
|
|
135
|
+
y="65.308289" />
|
|
136
|
+
</g>
|
|
137
|
+
</svg>
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
3
|
+
|
|
4
|
+
<svg
|
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
10
|
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
11
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
12
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
13
|
+
width="53.366352mm"
|
|
14
|
+
height="14.056225mm"
|
|
15
|
+
viewBox="0 0 53.366351 14.056225"
|
|
16
|
+
version="1.1"
|
|
17
|
+
id="svg838"
|
|
18
|
+
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
|
19
|
+
sodipodi:docname="logo.dark.text.svg"
|
|
20
|
+
inkscape:export-filename="/home/henning/Projects/capybara-lockstep/media/capybara-lockstep.dark.png"
|
|
21
|
+
inkscape:export-xdpi="196"
|
|
22
|
+
inkscape:export-ydpi="196">
|
|
23
|
+
<defs
|
|
24
|
+
id="defs832">
|
|
25
|
+
<linearGradient
|
|
26
|
+
inkscape:collect="always"
|
|
27
|
+
id="linearGradient1406">
|
|
28
|
+
<stop
|
|
29
|
+
style="stop-color:#ff0844;stop-opacity:1"
|
|
30
|
+
offset="0"
|
|
31
|
+
id="stop1402" />
|
|
32
|
+
<stop
|
|
33
|
+
style="stop-color:#ffb199;stop-opacity:1"
|
|
34
|
+
offset="1"
|
|
35
|
+
id="stop1404" />
|
|
36
|
+
</linearGradient>
|
|
37
|
+
<linearGradient
|
|
38
|
+
inkscape:collect="always"
|
|
39
|
+
xlink:href="#linearGradient1406"
|
|
40
|
+
id="linearGradient1408"
|
|
41
|
+
x1="22.054907"
|
|
42
|
+
y1="91.071762"
|
|
43
|
+
x2="88.956696"
|
|
44
|
+
y2="91.071762"
|
|
45
|
+
gradientUnits="userSpaceOnUse"
|
|
46
|
+
gradientTransform="matrix(0.79761275,0,0,0.08820435,-17.591275,57.908781)" />
|
|
47
|
+
</defs>
|
|
48
|
+
<sodipodi:namedview
|
|
49
|
+
id="base"
|
|
50
|
+
pagecolor="#ffffff"
|
|
51
|
+
bordercolor="#666666"
|
|
52
|
+
borderopacity="1.0"
|
|
53
|
+
inkscape:pageopacity="0.0"
|
|
54
|
+
inkscape:pageshadow="2"
|
|
55
|
+
inkscape:zoom="89.6"
|
|
56
|
+
inkscape:cx="202.55488"
|
|
57
|
+
inkscape:cy="0.72003331"
|
|
58
|
+
inkscape:document-units="mm"
|
|
59
|
+
inkscape:current-layer="layer1"
|
|
60
|
+
showgrid="false"
|
|
61
|
+
fit-margin-top="0"
|
|
62
|
+
fit-margin-left="0"
|
|
63
|
+
fit-margin-right="0"
|
|
64
|
+
fit-margin-bottom="0"
|
|
65
|
+
inkscape:window-width="2560"
|
|
66
|
+
inkscape:window-height="1391"
|
|
67
|
+
inkscape:window-x="1920"
|
|
68
|
+
inkscape:window-y="0"
|
|
69
|
+
inkscape:window-maximized="1"
|
|
70
|
+
inkscape:pagecheckerboard="true" />
|
|
71
|
+
<metadata
|
|
72
|
+
id="metadata835">
|
|
73
|
+
<rdf:RDF>
|
|
74
|
+
<cc:Work
|
|
75
|
+
rdf:about="">
|
|
76
|
+
<dc:format>image/svg+xml</dc:format>
|
|
77
|
+
<dc:type
|
|
78
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
79
|
+
<dc:title></dc:title>
|
|
80
|
+
</cc:Work>
|
|
81
|
+
</rdf:RDF>
|
|
82
|
+
</metadata>
|
|
83
|
+
<g
|
|
84
|
+
inkscape:label="Layer 1"
|
|
85
|
+
inkscape:groupmode="layer"
|
|
86
|
+
id="layer1"
|
|
87
|
+
transform="translate(0,-52.518951)">
|
|
88
|
+
<text
|
|
89
|
+
xml:space="preserve"
|
|
90
|
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
|
91
|
+
x="-0.27516666"
|
|
92
|
+
y="59.630951"
|
|
93
|
+
id="text1385"><tspan
|
|
94
|
+
sodipodi:role="line"
|
|
95
|
+
id="tspan1383"
|
|
96
|
+
x="-0.27516666"
|
|
97
|
+
y="59.630951"
|
|
98
|
+
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332">MINIDUSEN</tspan></text>
|
|
99
|
+
<rect
|
|
100
|
+
style="fill:url(#linearGradient1408);fill-opacity:1;stroke:none;stroke-width:0.02652412;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
|
101
|
+
id="rect1387"
|
|
102
|
+
width="53.36171"
|
|
103
|
+
height="1.2668874"
|
|
104
|
+
x="-3.5527137e-15"
|
|
105
|
+
y="65.308289" />
|
|
106
|
+
</g>
|
|
107
|
+
</svg>
|